Validating your statements
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import { HashiProver } from "./HashiProver.sol";
contract MockERC20Prover {
event TransferEventVerified(uint256 indexed chainID, bytes rlpEncodedEvent);
HashiProver public hashiProver;
address public erc20Contract;
uint256 public chainID;
constructor(address shoyuBashi_, address erc20Contract_, uint256 chainID_) {
hashiProver = HashiProver(shoyuBashi_);
erc20Contract = erc20Contract_;
chainID = chainID_;
}
function verifyTransferEvent(HashiProver.ReceiptProof calldata proof, bytes memory expectedRlpEncodedEvent) external {
require(proof.chainId == chainID, "Invalid chain id");
bytes memory rlpEncodedEvent = hashiProver.verifyForeignEvent(proof);
require(keccak256(rlpEncodedEvent) == keccak256(expectedRlpEncodedEvent), "invalid event");
emit TransferEventVerified(proof.chainId , rlpEncodedEvent);
// TODO: Define custom logic here
}
}Deployment:
References
Last updated
Was this helpful?