Multi-bridge Message Receiver
src/MultiBridgeMessageReceiver.sol
Features
Receive messages from a predefined source chain, through an approved set of bridge receiver adapters.
Enable scheduling a message for execution if a quorum of bridges relays the message
Update the list of trusted bridge receiver adapters
Update the quorum threshold for message validity
Functions
receiveMessage
function receiveMessage(MessageLibrary.Message calldata _message) external override onlyReceiverAdapterEnables the contract to receive messages from a source chain, through a list of allowed bridge receiver adapters. A message can be delivered by a given bridge only once.
_message: A MessageLibrary.Message an object containing the message details.
scheduleMessageExecution
function scheduleMessageExecution(bytes32 _msgId, MessageLibrary.MessageExecutionParams calldata _execParams) external;Sends a message, that has achieved a quorum and has not yet expired, to the governance timelock for eventual execution.
_msgId: The unique identifier of the message_execParams: The parameters for message execution, including the target contract address and execution payload
updateReceiverAdapter
function updateReceiverAdapters(address[] calldata _receiverAdapters, bool[] calldata _operations) external override onlyOwnerUpdates the list of approved bridge receiver adapters. This function can only be called by the owner
_receiverAdapters: An array of addresses of the receiver adapter contracts_operations: An array of operations for each receiver adapter. True implies add, and False implies remove.
updateQuorum
function updateQuorum(uint64 _newQuorum) external onlyOwnerUpdates the quorum, which is the number of independent bridges that must deliver a message for it to be considered valid. This function can only be called by the owner
_newQuorum: The new quorum threshold for message validation
updateQuorumAndReceiverAdapter
function updateReceiverAdaptersAndQuorum(
address[] calldata _receiverAdapters,
bool[] calldata _operations,
uint64 _newQuorum,
) external override onlyOwnerAtomically updates the list of approved bridge receiver adapters and the quorum for message validation. This function can only be called by the owner
_receiverAdapters: An array of addresses of the receiver adapter contracts_operations: An array of operations for each receiver adapter. True implies add, and False implies remove._newQuorum: The new quorum threshold for message validation
updateGovernanceTimelock
function updateGovernanceTimelock(address _newGovernanceTimelock) external;Updates the governance timelock address, which is the contract that ultimately executes valid messages.
_newGovernanceTimelockis the new governance timelock contract address
Events
BridgeMessageReceived: Emitted when a message is received from a bridge receiver adapterMessageExecutionScheduled: Emitted when a message is scheduled for execution on the time lock contract on the destination chainBridgeReceiverAdapterUpdated: Emitted when a receiver adapter is updatedQuorumUpdated: Emitted when the quorum threshold is updated
Dependencies
IMultiBridgeMessageReceiver: Interface for the MultiBridgeMessageReceiver contractIMessageReceiverAdapter: Common interface for AMB receiver adapters that builds on EIP-5164 MessageExecutor. Read more here.ExecutorAware: EIP-5164 interface for trusted executor-aware contracts. Read more here.MessageLibrary: Contains the message struct definition
Last updated