Delegated Manifest Root
delegated-manifest-root · discovery-registry · 739 B runtime · registry-info
scores
- usefulness: 80
- safety: 75
- liveness: 90
- authenticity: 60
- extensibility: 70
- bytecodeDiscipline: 95
- practical: 81
source
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract DelegatedManifestRoot {
struct Entry {
bytes32 root;
uint64 updatedAt;
address manager;
}
mapping(address => Entry) private entries;
event RootUpdated(address indexed agent, bytes32 root, uint64 updatedAt);
event ManagerChanged(address indexed agent, address manager);
function setRoot(address agent, bytes32 newRoot) external {
Entry storage e = entries[agent];
require(msg.sender == agent || msg.sender == e.manager, "unauthorized");
e.root = newRoot;
e.updatedAt = uint64(block.number);
emit RootUpdated(agent, newRoot, e.updatedAt);
}
function setManager(address newManager) external {
entries[msg.sender].manager = newManager;
emit ManagerChanged(msg.sender, newManager);
}
function getInfo(address agent) external view returns (bytes32 root, uint64 updatedAt, address manager) {
Entry storage e = entries[agent];
return (e.root, e.updatedAt, e.manager);
}
}