An implementation of Nano in Rust using Tokio
Switch branches/tags
Nothing to show
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
nano-lib-rs Seed now holds slice instead of string Apr 24, 2018
nanopow-rs use cargo workspace Mar 22, 2018
src impl From<PublicKey> for Address {} Apr 24, 2018
.gitignore reduced padding to 1 byte Apr 24, 2018
Cargo.lock Added tests, PrivateKey, PublicKey impls Apr 24, 2018
Cargo.toml use cargo workspace Mar 22, 2018
LICENSE Create LICENSE Mar 16, 2018
README.md update readme Mar 19, 2018

README.md

Nano-rs

Nano-rs is a pure Rust implementation of the Nano cryptocurrency based on Tokio. It is currently in its very infancy.

This repo serves as a monorepo that contains several crates, including the root nano-rs crate, which is the node implementation itself. There are also several subcrates:

  • nanopow-rs is a standalone Proof of Work implementation.
  • nano-lib-rs provides types and functions for working with the Nano protocol in Rust.

Milestones

  • A basic node that can validate and store blocks sent to it
    • Data structures
      • Blocks
      • Message headers
      • Message body
        • Block
        • Keepalive peers
        • Confirm Ack (votes etc)
        • Others...
    • Database
    • Proof of work
    • Cryptographic functions
    • Basic wallet functions
    • Networking
      • Receiving keepalives and blocks
        • keepalives
        • publish
        • confirm_req
        • confirm_ack
        • others...
      • Sending keepalives
  • Add broadcasting and discovery
  • Add RPC interface
  • Add voting
  • Add compatibility with existing Nano Nodes
  • Add complete testing harness
  • Possibly more things in the future

Installation/Usage

First, install Rust.

Then make sure you're running nightly rust:

rustup toolchain install nightly
rustup default nightly

Then,

git clone https://github.com/termhn/nano-rs
cd nano-rs
cargo run --release

Logging is printed to stderr and saved in files in the logs/ folder.