Skip to content

gnostr-org/gnostr-command

gnostr-command

gnostr: a git+nostr workflow utility

I. BYZANTINE QUORUM SYSTEMS


make

help            	help
rustup-install  	rustup-install
rustup-install-stable 	rustup-install-stable
rustup-install-nightly 	rustup-install-nightly
cargo-b         	cargo-b
cargo-b-release 	cargo-b-release
cargo-c         	cargo-c
install         	install
cargo-i         	cargo-i
cargo-help      	cargo-help
cargo-bt        	cargo-bt
cargo-build-tokio 	cargo-build-tokio
cargo-bas       	cargo-bas
cargo-build-async-std 	cargo-build-async-std
cargo-install   	cargo install --path .
cargo-br-tokio  	cargo-br-tokio
cargo-build-release-tokio 	cargo-build-release-tokio
cargo-br-async-std 	cargo-br-async-std
cargo-build-release-async-std 	cargo-build-release-async-std
cargo-check     	cargo-check
cargo-check-tokio 	cargo-check-tokio
cargo-check-async-std 	cargo-check-async-std
cargo-bench     	cargo-bench
cargo-tt        	cargo-tt
cargo-test-tokio 	cargo-test-tokio
cargo-ts        	cargo-ts
cargo-test-async-std 	cargo-test-async-std
cargo-jits      	cargo-jits
cargo-t-jit-tokio 	cargo-test-jit-tokio
cargo-t-jit-as  	cargo-test-jit-as
cargo-test-benches 	cargo-test-benches
cargo-report    	cargo-report
cargo-doc       	cargo-doc
node-sdk-run-js-node 	node-sdk-run-js-node
node-sdk-run-js-rust 	node-sdk-run-js-rust
dockerx         	docker-buildx
docker-build    	ocker build -f Dockerfile -t gnostr-command .
docker-buildx   	docker buildx build sequence
👀

Hypercore Protocol

crates.io version build status downloads docs.rs docs

Hypercore protocol is a streaming, message based protocol. This is a Rust port of the wire protocol implementation in the original Javascript version. This crate targets the Hypercore LTS version 10.

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 uses either async-std or tokio for async IO, snow for the Noise handshake and RustCrypto's crypto_secretsteram for encryption.

Features

  • Complete the Noise handshake
  • Establish libsodium's crypto_secretstream.
  • Open channels with a key
  • Accept channels opened by the remote end if your end knows the key
  • Create and verify capability hashes
  • Send and receive all protocol messages
  • Support async-std or tokio runtimes
  • Support WASM
  • Test Javascript interoperability
  • Support the new manifest in the wire protocol to remain compatible with upcoming v11
  • Finalize documentation and release v1.0.0

Installation

cargo add hypercore-protocol

Examples

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

cd examples-nodejs && npm install && cd ..

Runs the replication.rs example by replicating a hypercore between Rust and Node hypercores and printing the result.

  • Node Server / Rust Client
node examples-nodejs/run.js nodeServer
  • Rust Server / Node Client
node examples-nodejs/run.js rustServer
  • Rust Server / Rust Client
node examples-nodejs/run.js rust
  • Node Server / Node Client
node examples-nodejs/run.js node

Development

To test interoperability with Javascript, enable the js_interop_tests feature:

cargo test --features js_interop_tests

Run benches with:

cargo bench

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.

Want to help with Hypercore Protocol? Check out our "Contributing" guide and take a look at the open issues.

License

MIT OR Apache-2.0