About

RsNano is a Rust port of the original nano-node.

Why?

The original nano-node is written in C++. C++ is a very powerful language, but it makes it easy to introduce potentially exploitable bugs, like buffer overflows, dangling pointers, race conditions, integer overflows, and the like. Rust, on the other hand, offers similar performance characteristics as C++, but garantees memory safety and thread safety at compile time.

The Nano cryptocurrency should not suffer from the security issues that C++ can introduce, so that’s why RsNano was started.

Additionally, through the help of the Rust compiler, RsNano allows for

  • easier Refactoring
  • easier Multithreading
  • easier community contributions

Our goals are to

  • port the whole nano-node to Rust
  • make the test suite a lot faster, stable and bigger
  • improve the source code design
How?

RsNano is a fork of the original nano-node. We move small parts of the C++ code base to Rust while the node should be runnable at all times. New commits to the original nano-node are incorporated into RsNano as well.

That means RsNano already has feature parity with nano-node and will keep it.

How far are we?

Visit the dev blog for the latest progress report.

We keep track of how much C++ code is already translated:

RsNano Translation Progress
Infogram

Community

I do live coding on YouTube once a week

Join our Discord server and chat with us

Read our Dev Blog for the latest progress reports

Check out my Twitter for updates

Check out the source code on GitHub

Every Monday at 19:30 UTC I do a coding livestream where I work on RsNano. These streams are a good starting point for new contributors. Checkout out this stream, where I ported part of class from C++ to Rust:

Contribute

We are happy to accept your pull requests! You would like to contribute, but you don’t know where to start? Join our Discord server and we’ll find something.

A good starting point to get an understanding of the code base is the official Nano Core Development Documentation.

Would you like to support our work? Please donate to this address:

RsNano Donation Address nano_1iawmcfwmmdyr7xmnordt71gpnhnao8rsk4nywq5khtmedocaj6bafk4fb8h

Installation

Please mind that this project is still in its early stages and hasn’t been thoroughly tested yet!

Option 1: Run the official docker image
docker run -d --name rsnano -p 54000:54000 -v ~/NanoBeta:/root/NanoBeta simpago/rsnano-beta:latest nano_node daemon --network=beta
Option 2: Build your own docker image
docker build -f docker/node/Dockerfile -t rsnano-node https://github.com/simpago/rsnano-node.git#develop

docker run -d --name rsnano -p 54000:54000 -v ~/NanoBeta:/root/NanoBeta rsnano-node:latest nano_node daemon --network=beta
Option 3: Build from Source

Currently you can only build RsNano on Linux.

Install the cmake plugin Corrosion for building Rust projects with cmake:

git clone https://github.com/AndrewGaspar/corrosion.git
cmake -Scorrosion -Bbuild -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
cmake --install build --config Release

Build the nano-node. The official nano-node build instructions still apply for RsNano.

git clone --recurse-submodules https://github.com/simpago/rsnano-node.git

cd rsnano-node
mkdir build && cd build

cmake -G "Unix Makefiles" -DNANO_TEST=ON -DCMAKE_BUILD_TYPE=Debug ..

make nano_node
./nano_node --diagnostics

Principal Representative

We operate a beefy Principal Representative hosted in Falkenstein, Germany by Hetzner. Please feel free to choose us as your representative.

RsNano Donation Address
nano_1tk8h3yzkibbsti8upkfa69wqafz6mzfzgu8bu5edaay9k7hidqdunpr4tb6

Our representative currently runs the official nano-node. We will switch to RsNano-node at some point in the future.

Legal Information

Responsible for this website is

Gustav Schauwecker
Gutenbergstr. 77a
c/o Coworking0711
70197 Stuttgart
Germany

Contact

Telefon: +49 177 5338841
E-Mail: gustav@gustav-schauwecker.de