Message Receiver Adapters
The receiver adapter uses the ERC-2771 standard to forward the message to MultiBridgeMessageReceiver
.
IMessageReceiverAdapter
The IMessageReceiverAdapter
interface extends the MessageExecutor
interface defined below. It defines the following additional functions.
updateSenderAdapter
Updates the address of the corresponding IMessageSenderAdapter
contract for this bridge on the source chain.
name
This function returns the name of the message bridge.
The interface defines the following event:
SenderAdapterUpdated
Emitted when the sender adapter address is updated through the updateSenderAdapter()
function.
MessageExecutor
The interface defines the following event:
MessageIdExecuted
This event is emitted when a message or message batch has been executed.
The interface defines the following error types.
MessageIdAlreadyExecuted
Is thrown if a messageId
has already been executed.
MessageFailure
Is thrown if the execution of an individual message fails.
MessageBatchFailure
Is thrown if the execution of a batch of messages fails. (not currently used)
Most importantly
MessageExecutor MUST append the ABI-packed (messageId, fromChainId, from) to the calldata for each message being executed. This allows the receiver of the message to verify the cross-chain sender and the chain that the message is coming from.
to.call(abi.encodePacked(data, messageId, fromChainId, from));
The contract which the executor calls (to
) MUST be ExecutorAware
. The ExecutorAware
contract allows contracts on a receiving chain to execute messages from an origin chain. These messages are sent by the MessageDispatcher
contract which live on the origin chain. The MessageExecutor
contract on the receiving chain executes these messages and then forward them to an ExecutorAware
contract on the receiving chain.
Last updated