AWM Rust Relayer MVP Scope and Design #94
Replies: 2 comments
-
Awesome initiative! Some internal feedback:
Warp is designed to be a minimal messaging interface. Therefore, a warp message only contains minimal fields:
The contents of the Payload can be arbitrary. To encourage standardization, we provide some initial Payload types (namely AddressedCall and Hash). More are to come and anyone can define their own types. Teleporter utilizes the AddressedCall payload type. You can find more information of the different Warp payloads here: |
Beta Was this translation helpful? Give feedback.
-
Thank you for the feedback @martineckardt. I'm adding a diagram that we believe encompasses the high-level architecture of the Relayer. |
Beta Was this translation helpful? Give feedback.
-
Hey everyone, LimeChain has an idea about building an alternative relayer that can serve as a fallback to the Go Relayer in the beginning. In case of a implementation bug, having multiple relayer implementations reduces the chance that the message won't be relayed to the target subnet. Below you will find the high-level scope and design for the MVP version. We'd be happy to get some feedback on our idea.
AWM Relayer in Rust Scope
Overview
The goal of this document is to outline the high-level design and scope of an Minimum Viable Product(MVP) Avalanche Warp Messaging Relayer in Rust.
Scope
P2P Network
Consideration is given to using either JSON RPC or direct requests via Protobuf. The latter is favoured due to existing Protobuf types in avalanche-rs, streamlining implementation and obviating the need for defining new types. Additionally, having a network module implemented, it can serve as an example the community can use in order to build their own clients in Rust.
AppRequest
messagesMessage Handling
The message handling module is responsible for managing inbound and outbound cross-chain messages.
Signature Aggregation
Signature aggregation is a sub-process stemming from a newly received inbound message. This process is critical to the security of the AWM protocol.
receiveCrossChainMessage
function with the message with aggregated signaturePersistence
Relayer is a stateful application, although not data heavy(at least in the MVP version). The persistence layer is to be implemented using a Rust trait, so that in the future DBs can easily be added and swapped for one another.
User Configuration
-config-file path-to-config
).-dev
option for testnet settings.#[serde(default)]
for log level, network ID, and P-chain API URL.Future Plans
Beta Was this translation helpful? Give feedback.
All reactions