Skip to content

Latest commit

 

History

History
77 lines (49 loc) · 2.47 KB

README.md

File metadata and controls

77 lines (49 loc) · 2.47 KB

✨⛓ Simplechain ⛓✨

CircleCI Status Coverage Status

Interactive blockchain built with Node.js.

demo

Intro

The blockchain is a fascinating technology, but it can also be intimidating. At the time I wrote this code, I had consumed a lot of material regarding the blockchain and cryptocurrencies, but I hadn't satisfied my hunger for knowledge (and still haven't). I wanted to create my own blockchain for some of that knowledge to sink in, and I wanted it to be simple. Simplechain is the result of that, and I hope you find it as helpful as it was for me when I created it.

Check out Simplechain++ for a C++ port.

Usage

First, clone the repo:

$ git clone https://github.com/olistic/simplechain.git
$ cd simplechain

Then, install the dependencies:

$ npm install

And finally, launch the REPL:

$ npm start

Voilà! If you see the SIMPLECHAIN> prompt, it means you're inside the REPL.

Go ahead and try the following commands:

  • ADDBLOCK <data>: Mines a block with the provided data and adds it to the chain.
  • LISTBLOCKS: Lists all the blocks in the chain.

Well done! If you want to learn more, please don't forget to look at the code.

Advanced Usage

Adjust Difficulty

If you want to tweak the blockchain's difficulty, you can do so via the CLI:

$ npm start -- --difficulty <number>

This number represents the amount of zeros the hashes of the blocks in the blockchain need to begin with. A greater number makes it more difficult (more computationally expensive) to mine a block.

Next Steps

  • Implement P2P network of nodes where:
    • Miner nodes broadcast mined blocks
    • User nodes broadcast data to be included in blocks by miners
  • Implement peer discovery protocol so nodes can find each other

Resources

License

MIT