mirror of
https://github.com/logos-messaging/pm.git
synced 2026-01-02 14:13:09 +00:00
2.2 KiB
2.2 KiB
Waku SDK FURPS
Functionality
- Setup, start and stop a Waku node.
- Support edge node operation mode.
- Support relay node operation mode.
- Does automatic peer discovery based on the node platform and operation mode.
- Returns health and connectivity information using proven heuristics.
- Previously discovered peers are persisted across restarted, and potentially used for future connections.
- When wrapping the C API, conversion from native types to JSON is needed by the wrapper.
- When wrapping the C API, conversion from native types to Protobuf is needed by the wrapper (PoC).
Usability
- When setting up a Waku node, no need to specify what protocols to mount, only an operational mode (edge or relay).
- Disconnection detection and recovery, and other peer management matters are automatically handled.
- Developers do not need to specify the protocols used to send and receive messages; it is deduced from the mode of operation.
- Developers pass and receive data to the API in types native to the wrapping language.
- By default, auto-sharding is applied, meaning developers do not need to be concerned by sharding; pubsub topics are never exposed.
- Developers only need to handle errors in cases of irretrievable failure requiring end-user action. Internal errors are not bubbled up if they can be recovered internally.
- When wrapping the C API, a protobuf definition can be used to generate native types for the host language (PoC).
Reliability
- Sends a message using peer-to-peer reliability (service node redundancy for edge, optional store confirmation)
- Receives messages using peer-to-peer reliability (service node redundancy for edge, periodic store query, periodic filter ping)
Performance
Supportability
- Developers can use the SDK in nim software, importing it via git path.
- Developers can use the SDK in Golang software, importing it from on pkg.go.dev.
- Developers can use the SDK in Browser software, importing it from npmjs.com.
- Developers can use the SDK in Rust software, importing it from crates.io.
+ (Privacy, Anonymity, Deployments)
- C API uses JSON format for data passing.
- C API uses Protobuf format for data passing.