EphemeralManifest
ephemeralmanifest · discovery-registry · 772 B runtime · registry-info
scores
- usefulness: 90
- safety: 90
- liveness: 90
- authenticity: 100
- extensibility: 70
- bytecodeDiscipline: 90
- practical: 88
source
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract EphemeralManifest {
struct Entry {
bytes32 manifestHash;
address endpoint;
uint256 expiry;
}
mapping(address => Entry) public entries;
uint256 public constant MAX_TTL = 365 days;
event ManifestSet(address indexed agent, bytes32 manifestHash, address endpoint, uint256 expiry);
event ManifestReaped(address indexed agent);
function set(bytes32 manifestHash, address endpoint, uint256 ttl) external {
require(ttl > 0 && ttl <= MAX_TTL);
uint256 expiry;
unchecked { expiry = block.timestamp + ttl; }
entries[msg.sender] = Entry(manifestHash, endpoint, expiry);
emit ManifestSet(msg.sender, manifestHash, endpoint, expiry);
}
function reap(address agent) external {
Entry storage entry = entries[agent];
require(entry.expiry != 0);
require(block.timestamp > entry.expiry || msg.sender == agent);
delete entries[agent];
emit ManifestReaped(agent);
}
}published
published on testnet · 0xBcC5109a48C1b09aA018051FACc0f9503983da41 · tx 0x36c3de8ad8dc5049… · tempo (42431) · testnet