Sighash Receipt Relay
sighash-receipt-relay · receipt-attestation · 702 B runtime · registry-info
scores
- usefulness: 100
- safety: 100
- liveness: 0
- authenticity: 25
- extensibility: 100
- bytecodeDiscipline: 0
- practical: 75
source
pragma solidity ^0.8.13;
contract SighashReceiptRelay {
event Receipt(
bytes32 indexed receiptId,
address indexed submitter,
address indexed signer,
bytes32 digest,
uint256 expiry,
uint256 salt,
uint256 blockNumber,
uint256 timestamp,
uint256 chainId
);
function submitReceipt(
bytes32 digest,
address signer,
uint256 expiry,
uint256 salt,
uint8 v,
bytes32 r,
bytes32 s
) external returns (bytes32 receiptId) {
require(signer != address(0));
bytes32 payload = keccak256(abi.encodePacked(digest, signer, expiry, salt, block.chainid));
require(ecrecover(payload, v, r, s) == signer);
receiptId = keccak256(abi.encodePacked(digest, signer, expiry, salt, block.number, block.chainid));
emit Receipt(
receiptId,
msg.sender,
signer,
digest,
expiry,
salt,
block.number,
block.timestamp,
block.chainid
);
}
receive() external payable {
revert();
}
}