pragma solidity ^0.8.13; contract CapabilitySelectorMap { mapping(bytes32 => uint256) private entries; function register(bytes4 selector, address endpoint, uint32 ttl) external { bytes32 key = keccak256(abi.encodePacked(msg.sender, selector)); uint256 packed; unchecked { packed = ((block.timestamp + ttl) << 160) | uint160(endpoint); } assembly { let alive := gt(ttl, 0) sstore(key, mul(packed, alive)) } } function resolve(address agent, bytes4 selector) external view returns (address) { uint256 packed = entries[keccak256(abi.encodePacked(agent, selector))]; uint256 expiration = packed >> 160; if (block.timestamp >= expiration) return address(0); return address(uint160(packed)); } }