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