Proof-of-Delivery Anchor

proof-of-delivery-anchor · receipt-attestation · 246 B runtime · registry-info

scores

source

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract ProofOfDeliveryAnchor {
    mapping(bytes32 => uint256) private receiptBlock;

    event Receipt(bytes32 indexed digest, address indexed sender, uint256 blockNumber);

    function attest(bytes32 digest) external {
        require(receiptBlock[digest] == 0);
        receiptBlock[digest] = (uint256(uint160(msg.sender)) << 96) | block.number;
        emit Receipt(digest, msg.sender, block.number);
    }
}