EphemeralManifest

ephemeralmanifest · discovery-registry · 772 B runtime · registry-info

scores

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