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 messageread(uint256 chainId, address contract, string messageType)- Read message
This approach gives you full control over cross-chain logic while maintaining atomicity guarantees.