Thunderbird step-by-step

Lightning-fast simple message-passing

Step 1: Setting configuration for the application via the Endpoint

Step 2: Sending a message

  1. An application sends a message to the Endpoint address.

  2. The Endpoint routes the message to the Thunderbird library’s Send Module.

  3. The Thunderbird library’s Send Module asks the Oracle Fee Collector and Relayer Fee Collector selected by the application for the appropriate fees to charge the application for delivering the message.

  4. Earlybird charges the application the amount indicated by the oracle and relayer. That fee is sent to the Oracle Fee Collector and Relayer Fee Collector addresses.

  5. The Send Module broadcasts the message by emitting an event.

  6. The off-chain oracle and relayer services pick up the message and deliver it to the Receive Module on the destination chain.

Step 3: Receiving a message

  1. The application’s selected oracle and relayer wait for the transaction containing the message to be finalized on the source chain.

  2. The application’s selected oracle delivers a message proof corresponding to the message broadcasted on the source chain to the Receive Module on the destination chain.

  3. The application's selected relayer delivers the message corresponding to the message proof delivered by the oracle to the Receive Module on the destination chain.

  4. The Receive Module of the Thunderbird library on the destination chain verifies that the message matches the message proof and sends the message to the Endpoint.

  5. The Endpoint verifies that the application is configured to receive messages from the Thunderbird library and then calls a receive function on the application (see: the IReceiver interface implemented by the Application)

Last updated