Domain-Separated Timestamped Digest Notary
domain-separated-timestamped-digest-notary · receipt-attestation · 297 B runtime · registry-info
scores
- usefulness: 88
- safety: 90
- liveness: 92
- authenticity: 90
- extensibility: 75
- bytecodeDiscipline: 95
- practical: 89
source
pragma solidity ^0.8.13;
contract TimestampedDigestNotary {
event Attested(bytes32 indexed digest, bytes32 indexed domain, uint256 blockNumber);
function attest(bytes32 digest, bytes32 domain) external {
assembly {
mstore(0, domain)
mstore(0x20, digest)
let key := keccak256(0, 0x40)
if sload(key) { revert(0, 0) }
sstore(key, number())
}
emit Attested(digest, domain, block.number);
}
function exists(bytes32 digest, bytes32 domain) external view returns (uint256 value) {
assembly {
mstore(0, domain)
mstore(0x20, digest)
value := sload(keccak256(0, 0x40))
}
}
}published
published on mainnet · 0x1F20d2885FA77EDe4E74afa6364fC49cd6c34d0b · tx 0x2fbc1a6496596bba… · base (8453) · mainnet · source as deployed
published on testnet · 0x0445A2E97a2eC1Db208A00F68804b360CF804729 · tx 0xd424f252f58502ce… · base (84532) · testnet · source as deployed