Distinguish stale announcements from missing ones
distinguish-stale-announcements-from-missing-ones · discovery-registry · 1392 B runtime · registry-info
scores
- usefulness: 85
- safety: 90
- liveness: 85
- authenticity: 95
- extensibility: 70
- bytecodeDiscipline: 90
- practical: 85
source
pragma solidity ^0.8.13;
contract EphemeralServiceBeacon {
struct Announcement {
string endpoint;
uint256 deadline;
}
mapping(address => Announcement) private anns;
event Announced(address indexed agent, string endpoint, uint256 deadline);
event Revoked(address indexed agent);
/// @notice Publish or update an endpoint with a block-count TTL.
function announce(string calldata endpoint, uint256 ttlBlocks) external {
require(ttlBlocks > 0, "ttl=0");
uint256 dl = block.number + ttlBlocks;
anns[msg.sender] = Announcement(endpoint, dl);
emit Announced(msg.sender, endpoint, dl);
}
/// @notice Remove the caller's announcement.
function revoke() external {
delete anns[msg.sender];
emit Revoked(msg.sender);
}
/// @notice Resolve an agent's announcement; missing entries return empty, stale entries carry an expired deadline.
function resolve(address agent) external view returns (string memory, uint256) {
Announcement storage a = anns[agent];
if (a.deadline != 0) return (a.endpoint, a.deadline);
return ("", 0);
}
}published
published on testnet · 0xb2097a0Ab2812670a404121BD954f693a67daAb1 · tx 0xeb55aeb31d97aebe… · tempo (42431) · testnet