Hashchain Receipt Anchor

hashchain-receipt-anchor · receipt-attestation · 517 B runtime · registry-info

scores

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