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.
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.