Skip to main content

Custom Contract Development

For more complex dApps requiring custom logic, you can integrate Mailbox contracts directly into your own contracts:

Import and use Mailbox smart contracts pseudocode

import "Compose/Mailbox.sol";

contract CustomCrossChainDApp {
Mailbox public mailbox;

function sendMessage(uint256 destinationChain, address targetContract,
string memory messageType, bytes memory data) {
mailbox.write(destinationChain, targetContract, messageType, data);
}

function readMessage(uint256 sourceChain, address sourceContract,
string memory messageType) returns (bytes memory) {
return mailbox.read(sourceChain, sourceContract, messageType);
}
}

Reading and Writing Messages

The Mailbox contract provides simple read/write interfaces for cross-chain communication:

  • write(uint256 chainId, address contract, string messageType, bytes data) - Send message
  • read(uint256 chainId, address contract, string messageType) - Read message

This approach gives you full control over cross-chain logic while maintaining atomicity guarantees.