Context
I’m trying to build a state transfer bridge using the FxPortal contracts linked in the Matic developer docs:
https://github.com/fx-portal/contracts
https://docs.matic.network/docs/develop/l1-l2-communication/state-transfer
The following is my repository, with a Root and Child contract, deployed on Goerli and Mumbai, respectively. Verified contracts are available in the readme.
https://github.com/nkrishang/cross-chain-vrf
The root contract (VRFRootTunnel.sol) sends a message to the child contract (VRFChildTunnel.sol) on calling requestRandomNumber().
Issue
The child contract (VRFChildTunnel.sol) never receives the message passed to it by the root contract (VRFRootTunnel.sol).
Here’s a successful transaction where I call requestRandomNumber() on the root contract, which sends a message to the child contract.
https://goerli.etherscan.io/tx/0x93e45a47efd4853d6cd5c94112f0e879d15c4af3fba2560a5773987aacef3c09
The message is never passed to the child contract. As seen on the explorer, the child contract has no transactions, internal or otherwise, where it receives the message from the root contract.
The same goes for the contracts in the official FxPortal repository, where it seems the child contract never receives the message sent.
https://docs.matic.network/docs/develop/l1-l2-communication/state-transfer/#example-contracts-of-state-transfer-bridge