Blockchain has the potential to change the way that the world approaches data. Develop Blockchain skills by understanding the data model behind Blockchain by developing your own simplified private blockchain.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Installing Node and NPM is pretty straightforward using the installer package available from the (Node.js® web site)[https://nodejs.org/en/].
- Use NPM to initialize your project and create package.json to store project dependencies.
npm init
- Install crypto-js with --save flag to save dependency to our package.json file
npm install crypto-js --save
- Install level with --save flag
npm install level --save
- Install Express.js npm install express --save
- Install body-parser
npm install body-parser --save
To test code: 1: Open a command prompt or shell terminal after install node.js. 2: Enter a node session, also known as REPL (Read-Evaluate-Print-Loop). 3: Smoke tests for simple chain could also be triggered by npm test
node
3: Copy and paste your code into your node session 4: Instantiate blockchain with blockchain variable
let blockchain = new Blockchain();
5: Generate 10 blocks using a for loop
for (var i = 0; i <= 10; i++) {
blockchain.addBlock(new Block("test data "+i));
}
6: Validate blockchain
blockchain.validateChain();
7: Induce errors by changing block data
let inducedErrorBlocks = [2,4,7];
for (var i = 0; i < inducedErrorBlocks.length; i++) {
blockchain.chain[inducedErrorBlocks[i]].data='induced chain error';
}
8: Validate blockchain. The chain should now fail with blocks 2,4, and 7.
blockchain.validateChain();
Get block endpoint
- Configure GET request using URL path with a block height parameter.
- URL path should resemble: http://localhost:8000/block/0
- '0' within the URL path is the block height.
- The response for the endpoint should provide block object is JSON format.
GET response example for URL http://localhost:8000/block/0
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
cache-control: no-cache
content-length: 179
accept-ranges: bytes
Connection: close
{"hash":"49cce61ec3e6ae664514d5fa5722d86069cf981318fc303750ce66032d0acff3","height":0,"body":"First block in the chain - Genesis block","time":"1530311457","previousBlockHash":""}
Post block endpoint
- Post a new block with data payload option to add data to the block body.
- The block body should support a string of text.
- The response for the endpoint should provide block object is JSON format.
POST response example for URL http://localhost:8000/block
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
cache-control: no-cache
content-length: 238
Connection: close
{"hash":"ffaffeb2330a12397acc069791323783ef1a1c8aab17ccf2d6788cdab0360b90","height":1,"body":"Testing block with test string data","time":"1531764891","previousBlockHash":"49cce61ec3e6ae664514d5fa5722d86069cf981318fc303750ce66032d0acff3"}