Hashchain Receipt Anchor
hashchain-receipt-anchor · receipt-attestation · 517 B runtime · registry-info
scores
- usefulness: 50
- safety: 50
- liveness: 50
- authenticity: 50
- extensibility: 40
- bytecodeDiscipline: 50
- practical: 49
source
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract HashchainReceiptAnchor {
mapping(address => bytes32) public head;
event Anchored(address indexed agent, bytes32 indexed prevHash, bytes32 receiptHash, bytes32 newHead, uint256 blockNumber);
function anchor(bytes32 receiptHash, bytes32 prevHash) external returns (bytes32 newHead) {
bytes32 stored = head[msg.sender];
require(prevHash == stored, "prevHash mismatch");
newHead = keccak256(abi.encodePacked(prevHash, receiptHash, block.number, msg.sender));
head[msg.sender] = newHead;
emit Anchored(msg.sender, prevHash, receiptHash, newHead, block.number);
}
}published
published on mainnet · 0x74c180D585ADB6DC493aBe517C6e48D7B66DCF47 · tx 0x16ca8e2d78f384e9… · tempo (4217) · mainnet
published on testnet · 0x7A3589f90c9B84AeDe2222263Cc351537eb33C36 · tx 0xe433a40fb42062c3… · tempo (42431) · testnet