Feel free to reach out if you have additional questions
Can the sender and receiver be the same application?
Yes. Any Earlybird application can send a message to any Earlybird application that implements the IReceiver interface, including itself.
For an application on a particular chain, can receiving and sending modules be different?
No. This is technically not possible. When calling setLibraryAndConfigs, you must specify the name of the library used for both sending and receiving.
Do I need to specify which chains I want to receive messages from?
No. Implementations of the IReceiver interface will receive every valid message from any supported chain. Filtering messages from particular chains can be done in the application's receiveMsgs implementation.
Can you send a message from an EOA?
Yes. To the protocol, both EOAs and smart contracts are just addresses when sending messages
Can you deliver a message to an EOA?
No. The receiver needs to implement the IReceiver interface, which can't be done with EOAs.
Does the sending library on the source need to be the same as the receiving library on the destination chain?
Yes. If you have a use case for them to be different, we'd love to hear about it on Discord!
Reach out to the team if you have any questions; our discord is the best place to get in touch with us!