Skip to main content




constructor(address _checkpointManager, address _fxRoot) (internal)
setFxChildTunnel(address _fxChildTunnel) (public)
_sendMessageToChild(bytes message) (internal)

Send bytes message to Child Tunnel


  • message: bytes message that will be sent to Child Tunnel some message examples - abi.encode(tokenId); abi.encode(tokenId, tokenMetadata); abi.encode(messageType, messageData);
_validateAndExtractMessage(bytes inputData) → bytes (internal)
receiveMessage(bytes inputData) (public)

receive message from L2 to L1, validated by proof

This function verifies if the transaction actually happened on child chain


  • inputData: RLP encoded data of the reference tx containing following list of fields 0 - headerNumber - Checkpoint header block number containing the reference tx 1 - blockProof - Proof that the block header (in the child chain) is a leaf in the submitted merkle root 2 - blockNumber - Block number containing the reference tx on child chain 3 - blockTime - Reference tx block time 4 - txRoot - Transactions root of block 5 - receiptRoot - Receipts root of block 6 - receipt - Receipt of the reference transaction 7 - receiptProof - Merkle proof of the reference receipt 8 - branchMask - 32 bits denoting the path of receipt in merkle tree 9 - receiptLogIndex - Log Index to read from the receipt
_processMessageFromChild(bytes message) (internal)

Process message received from Child Tunnel

function needs to be implemented to handle message as per requirement This is called by onStateReceive function. Since it is called via a system call, any event will not be emitted during its execution.


  • message: bytes message that was sent from Child Tunnel