Multi-bridge Message Sender
src/MultiBridgeMessageSender.sol
Features
Supports sending messages via multiple bridge sender adapters
Only a predefined dApp contract can use this multi-bridge sender for cross-chain remote calls
Allows adding and removing bridge sender adapters
The caller is responsible for determining the fees to be paid to each of the bridges to be used.
The caller can choose to omit a set of bridges for a given message
Emits events for sent messages, sender adapter updates, and error when sending messages
Functions
remoteCall
This function allows a remote function to be called on a destination chain. It does this by sending multiple copies of a cross-chain message through available bridges. Only the predefined caller
contract can call this function. The call is successful if a minimum number of bridge adapters, defined by the _successThreshold
parameter, successfully dispatch the cross-chain message.
It takes the following parameters:
_dstChainId
: The destination chainId_target
is the target execution point on the destination chain_callData
is the data to be sent to _target by low-level call(eg. address(_target).call(_callData))_nativeValue
is the value to be sent to _target by low-level call (eg. address(_target).call{value: _nativeValue}(_callData))_expiration
refers to the number of seconds that a message remains valid before it is considered stale and can no longer be executed._refundAddress
refers to the refund address for any extra native tokens paid_fees
refers to the fees to pay to each sender adapter that is not in the exclusion list specified by _excludedAdapters. The fees are in the same order as the sender adapters in the senderAdapters list, after the exclusion list is applied._successThreshold
specifies the minimum number of bridges that must successfully dispatch the message for this call to succeed.excludedAdapters
are the sender adapters to be excluded from relaying the message, in ascending order by address
addSenderAdapters
Adds an array of bridge sender adapter addresses, that must be provided in ascending order. This function is only callable by the owner
.
removeSenderAdapters
Removes an array of bridge sender adapter addresses, that must be provided in ascending order. This function is only callable by the predefined owner
contract.
Events
MultiBridgeMessageSent
: is emitted after a call toremoteCall()
completes, sending a given message through one or more bridges. The details of this event should be inspected to see if any bridges have failed.MessageSendFailed
: is emitted if sending a message through a specific AMB fails.SenderAdapterUpdated
: is emitted when a sender adapter is added or removed
Dependencies
The contract depends on the following files:
IMessageSenderAdapter.sol
: Interface for bridge sender adaptersIMultiBridgeMessageReceiver.sol
: Interface for MultiBridgeMessageReceiver contracts on the destination chainMessageSenderGAC
: Global Access Control contract.It also uses a
Message.sol
file for the message structure.
Last updated