hypercore-protocol

Rust implementation of the Hypercore wire protocol


Crates.io version Download docs.rs docs

API Docs | Contributing

This crate provides a low-level streaming API to hypercore-protocol and exposes an interface that should make it easy to implement actual protocol logic on top. This crate targets Hypercore 9 (Dat 2) only.

It uses async-std for async IO, and snow for the Noise handshake.

Current features are:

We're actively looking for contributors to the datrust development! If you're interested, say hi in the #rust channel on the Hypercore Protocol Discord :-)

Examples

These examples sync data between Rust and NodeJS hypercore-protocol implementations. To prepare, run cd examples-nodejs npm install

hypercore.rs

node examples-nodejs/run.js hypercore

Runs the hypercore.rs example with a replication stream from NodeJS hypercore. The hypercore.rs example fetches all blocks of a Node.js hypercore and inserts them into a Rust in-memory hypercore.

basic.rs

Accepts a hypercore-protocol stream and fetches all blocks of the first hypercore.

node examples-nodejs/run.js basic

Runs the basic.rs example with a replication stream from NodeJS hypercore. The basic.rs example fetches all blocks of a hypercore and prints them to STDOUT.

Contributing

We're actively looking for contributors to the datrust development!

If you're interested, the easiest is to say hi in the #rust channel on the Hypercore Protocol Discord.

Contributions include pull requests, issue reports, documentation, design and other work that benefits this project.

This project is welcoming contributions from anyone who acts in good faith! We do not tolerate toxic behavior or discriminations against other contributors. People who engage with this project in bad faith or fail to reflect and change harmful behavior may be excluded from contributing. Should you feel that someone acted in such a way, please reach out to the authors of this project.

Open, diverse, and inclusive communities live and die on the basis of trust. Contributors can disagree with one another so long as they trust that those disagreements are in good faith and everyone is working towards a common goal.