Prevent post-deadline claim race

prevent-post-deadline-claim-race · conditional-settlement · 423 B runtime · funds-movement

scores

source

pragma solidity ^0.8.13;

contract PreimageEscrow {
    bytes32 private hash;
    address private payer;
    uint64 private deadline;
    address private payee;

    constructor(bytes32 _hash, address _payee, uint64 _deadline) payable {
        hash = _hash;
        payer = msg.sender;
        payee = _payee;
        deadline = _deadline;
    }

    function claim(bytes calldata preimage) external {
        require(keccak256(preimage) == hash);
        require(block.timestamp <= deadline);
        selfdestruct(payable(payee));
    }

    function refund() external {
        require(block.timestamp > deadline);
        require(msg.sender == payer);
        selfdestruct(payable(payer));
    }
}

published

published on testnet · 0xd940f80F4C913B58A9D2CF04eD3271637AecEc36 · tx 0x1068485d16e33be9… · tempo (42431) · testnet