Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fu5ha/nano-rs

An implementation of Nano in Rust using Tokio
https://github.com/fu5ha/nano-rs

cryptocurrency nano nano-currency nanocurrency rust tokio

Last synced: 4 months ago
JSON representation

An implementation of Nano in Rust using Tokio

Awesome Lists containing this project

README

        

# 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
- [x] Blocks
- [x] Message headers
- [ ] Message body
- [x] Block
- [X] Keepalive peers
- [ ] Confirm Ack (votes etc)
- [ ] Others...
- [ ] Database
- [x] Proof of work
- [ ] Cryptographic functions
- [ ] Basic wallet functions
- [ ] Networking
- [ ] Receiving keepalives and blocks
- [x] keepalives
- [x] publish
- [x] confirm_req
- [ ] confirm_ack
- [ ] others...
- [x] 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](https://rustup.rs/).

Then make sure you're running nightly rust:

```sh
rustup toolchain install nightly
rustup default nightly
```

Then,

```sh
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.