Liveness-Tracked Manifest Registry
liveness-tracked-manifest-registry · discovery-registry · 1158 B runtime · registry-info
scores
- usefulness: 85
- safety: 88
- liveness: 84
- authenticity: 90
- extensibility: 72
- bytecodeDiscipline: 90
- practical: 85
source
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract LivenessTrackedManifestRegistry {
struct Entry {
bytes32 manifest;
uint64 lastHeartbeat;
}
mapping(address => Entry) public entries;
uint256 public immutable heartbeatInterval;
event ManifestUpdated(address indexed agent, bytes32 manifest);
event AgentEvicted(address indexed agent);
constructor(uint256 _heartbeatInterval) {
require(_heartbeatInterval > 0, "interval required");
heartbeatInterval = _heartbeatInterval;
}
function updateManifest(bytes32 _manifest) external {
entries[msg.sender] = Entry({
manifest: _manifest,
lastHeartbeat: uint64(block.timestamp)
});
emit ManifestUpdated(msg.sender, _manifest);
}
function heartbeat() external {
Entry storage entry = entries[msg.sender];
require(entry.lastHeartbeat != 0, "not registered");
entry.lastHeartbeat = uint64(block.timestamp);
}
function remove() external {
Entry storage entry = entries[msg.sender];
require(entry.lastHeartbeat != 0, "not registered");
delete entries[msg.sender];
emit ManifestUpdated(msg.sender, bytes32(0));
}
function evictStale(address _agent) external {
Entry storage entry = entries[_agent];
require(entry.lastHeartbeat != 0, "not registered");
require(block.timestamp - entry.lastHeartbeat > heartbeatInterval, "not stale");
delete entries[_agent];
emit AgentEvicted(_agent);
}
}published
published on testnet · 0xDA8E0C23F4b7cFf559f76f252DFC905e479aC66d · tx 0xba3232bffb11b53e… · base (84532) · testnet · source as deployed