Capability Lease Registry
capability-lease-registry · discovery-registry · 812 B runtime · registry-info
scores
- usefulness: 93
- safety: 95
- liveness: 92
- authenticity: 96
- extensibility: 78
- bytecodeDiscipline: 97
- practical: 92
source
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract CapabilityLeaseRegistry {
uint256 private constant LEASE_DURATION = 3 days;
struct Lease {
address owner;
uint96 expiry;
}
mapping(bytes32 => Lease) private leases;
event Registered(bytes32 capability, address owner, uint96 expiry);
function register(bytes32 capability) external {
Lease storage lease = leases[capability];
require(lease.owner == address(0) || block.timestamp >= lease.expiry, 'active');
lease.owner = msg.sender;
lease.expiry = uint96(block.timestamp + LEASE_DURATION);
emit Registered(capability, lease.owner, lease.expiry);
}
function renew(bytes32 capability) external {
Lease storage lease = leases[capability];
require(msg.sender == lease.owner, 'owner');
require(block.timestamp < lease.expiry, 'expired');
lease.expiry = uint96(block.timestamp + LEASE_DURATION);
emit Registered(capability, lease.owner, lease.expiry);
}
function active(bytes32 capability) external view returns (address owner, uint256 expiry) {
Lease storage lease = leases[capability];
if (lease.owner == address(0) || block.timestamp >= lease.expiry) {
return (address(0), 0);
}
return (lease.owner, lease.expiry);
}
}published
published on mainnet · 0xA13fb2bbb979482E14A90EfbCd717d9aEe1AEf0E · tx 0x65d8b7ee1f600397… · base (8453) · mainnet · source as deployed
published on testnet · 0x35397c8B9b0593dFaACd15f8a8Ed871d6318774e · tx 0x378d5d2e3bca40d5… · base (84532) · testnet · source as deployed