A Rust implementation of the wire protocol of Hypercore
Unstable and not finished! My spare time projects for some time, slowly getting there while playing with datrs. If someone wants to help to fill the gaps feel free to open issues or submit PRs. The best starting place is to say hi on IRC in #datrs on freenode.
This crate provides a low-level API to hypercore-protocol and exposes traits 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 (currently depending on unreleased changes on its master branch).
Current features are:
Note: To sync with NodeJS the minimum required version is hypercore 9
and hypercore-protocol 8
.
These examples sync data between Rust and NodeJS hypercore-protocol implementations. To prepare, run
cd examples-nodejs
npm install
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.
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.
Share a file over a hypercore on a local TCP server. Prints a hypercore key.
node examples-nodejs/replicate.js server 8000 ./README.md
Use this key to connect from Rust and pipe the file content to stdout:
cargo run --example basic -- server 8000 KEY