When using the Mapo light client for transaction verification, the primary method we utilize is verifyProofData. It's worth noting that verifyProofData requires a bytes parameter as input. This is done to conform to a unified standard for EVM-compatible chains. In reality, this bytes parameter is a structured data that
Please refer to a more detailed code implementation for specifics ILightNode
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface ILightNode {
// event update block header
event UpdateBlockHeader(address indexed maintainer, uint256 indexed blockHeight);
// updates the block header
function updateBlockHeader(bytes memory _blockHeader) external;
// updates the light client
function updateLightClient(bytes memory _data) external;
// Verify the validity of the transaction according to the header, receipt
// The interface will be updated later to return logs
function verifyProofData(bytes memory _receiptProof) external view returns (bool success, string memory message, bytes memory logs);
// Get client state
function clientState() external view returns(bytes memory);
// Get final status information
function finalizedState(bytes memory _data) external view returns(bytes memory);
// Height of the block that has been synchronized
function headerHeight() external view returns (uint256 height);
// Gets the range of blocks that can be verified
function verifiableHeaderRange() external view returns (uint256, uint256);
}