Coder Social home page Coder Social logo

mikalv / bitcoin-akka-tutorial Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hhanh00/bitcoin-akka-tutorial

0.0 3.0 0.0 620 KB

Home Page: http://hhanh00.github.io/bitcoin-akka-tutorial/index.html

Scala 44.72% Batchfile 0.14% C 1.77% Java 53.36%

bitcoin-akka-tutorial's Introduction

layout
page

What is Bitcoin-Akka ?

Bitcoin-akka is a minimalistic but nearly fully compliant implementation of the Bitcoin protocol in Scala using the Akka library. It runs as a server node, playing a similar role to the reference implementation Bitcoin Core.

Before going further, here's the standard disclaimer:

I claim no responsibility if you lose money by using this software. It is provided for educational purposes only.

Especially true since Bitcoin has real money equivalence, though the risk is limited by the absence of wallet functionality.

That being said, care has been taken in replicating the same behavior as of Bitcoin Core. Bitcoin-akka passes the same regression tests and leverage the consensus library from Bitcoin Core for transaction verification.

Nonetheless, it remains an accademic/educational project aiming to demonstrate the principles of functional programming and how to apply them in a concrete environment without a large amount of code (BTC-akka has below 1700 LOC) and run on Windows, Linux and Mac OS.

As for the features, here's a short list:

  • Automatically synchronizes with the blockchain using headers first and parellel block download
  • Maintain database of unspent outputs: verifies and relays unconfirmed transactions
  • Import/Export blockchain
  • Serves headers and blocks - other nodes can synchronize the blockchain from Bitcoin-Akka

The project is structured as a tutorial with each step associated with a page and a commit. There are 4 milestones before the end:

  • "handshake": It connects to a peer and completes the handshake phase. The two nodes are ready to communicate,
  • "download": It requests the blockchain and can download headers/blocks,
  • "persist": It keeps the data on disk and can be restarted without repeating the same tasks,
  • "validate": It checks that the data is correct per protocol rules,
  • "final": It is finished!

At the bottom of every page, you have a commit hash. I recommend that you sync the project to it because I won't necessarily cover every aspect of the commit. The project should always build but it may not do anything useful yet.

bitcoin-akka-tutorial's People

Contributors

hhanh00 avatar

Watchers

 avatar  avatar  avatar

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.