GithubHelp home page GithubHelp logo

nicolafiorillo / bitcoin_rules Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 0.0 24.91 MB

A Bitcoin node written in Rust almost from scratch.

License: MIT License

Rust 98.92% Python 0.67% Gnuplot 0.09% Shell 0.20% C++ 0.11%

bitcoin_rules's Introduction

Bitcoin_rules!
a Bitcoin (the protocol) node written in Rust mainly for educational purposes

Status

Build/Test

Motivation and other info

There's no better way to learn how something works than by trying to reproduce it.

Paul Graham, "How to Do Great Work"

A Bitcoin node is the backbone of the Bitcoin network, functioning as a participant that validates transactions, maintains a copy of the blockchain, and ensure the integrity of the blockchain by enforcing consensus rules.

The Bitcoin_rules! project is a comprehensive endeavor aimed at exploring the intricacies of Bitcoin's protocol, staring from the very basics of the protocol and building up to a fully functional Bitcoin node, (almost) from scratch. Bitcoin_rules! goes beyond the surface-level understanding of Bitcoin: we delve into the technical aspects of building a full node, offering a deep dive into the inner workings of the Bitcoin network, protocol, and consensus.

Moreover, consider this as a contribute to the Bitcoin spread and adoption.

See references for documentations, references, and articles used building Bitcoin_rules!. See also roadmap for the list of features and milestones.

Do not use this code in production stuff. Completeness, stability, and expecially security are not guaranteed.

Getting started

At time main() is almost empty. We are working on structures and algorithms. For the moment, clone the repo and build it with:

cargo build

Run the unit tests:

cargo test --lib --bins

Run unit tests only (fast):

cargo test --lib --bins

Run unit tests and integration tests (slow):

cargo test

Run the node (cli app):

cargo run --bin brn

Feedback

Feedback are welcome! Please open an issue or PR.

Support

If you want to support this project, you can donate to:

Acknowledgments

bitcoin_rules's People

Contributors

nicolafiorillo avatar

Stargazers

Paolo Gariboldi avatar  avatar Emilio Junior Francischetti avatar  avatar

Watchers

 avatar  avatar

bitcoin_rules's Issues

Github actions.

Configure Github actions for cross compilation x86 (Mac, Windows, Linux).

Minimize `clone()` usage.

Despite clone() usage is not considered a bad practice, we will try to minimize usage for performances improvement..

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.