This project allows to demonstrate the fundamentals concepts of a Blockchain platform. Concepts like: - Block - Blockchain - Wallet - Blockchain Identity - Proof of Existance
- The application will create a Genesis Block when we run the application.
- The user will request the application to send a message to be signed using a Wallet and in this way verify the ownership over the wallet address. The message format will be:
<WALLET_ADRESS>:${new Date().getTime().toString().slice(0,-3)}:starRegistry
; - Once the user have the message the user can use a Wallet to sign the message.
- The user will try to submit the Star object for that it will submit:
wallet address
,message
,signature
and thestar
object with the star information. The Start information will be formed in this format:"star": { "dec": "68° 52' 56.9", "ra": "16h 29m 1.0s", "story": "Testing the story 4" }
- The application will verify if the time elapsed from the request ownership (the time is contained in the message) and the time when you submit the star is less than 5 minutes.
- If everything is okay the star information will be stored in the block and added to the
chain
- The application will allow us to retrieve the Star objects belong to an owner (wallet address).
- This application will be created using Node.js and Javascript programming language. The architecture will use ES6 classes because it will help us to organize the code and facilitate the maintnance of the code.
- The company suggest to use Visual Studio Code as an IDE to write your code because it will help you debug the code easily but you can choose the code editor you feel confortable with.
- Some of the libraries or npm modules you will use are:
- "bitcoinjs-lib": "^4.0.3",
- "bitcoinjs-message": "^2.0.0",
- "body-parser": "^1.18.3",
- "crypto-js": "^3.1.9-1",
- "express": "^4.16.4",
- "hex2ascii": "0.0.3",
- "morgan": "^1.9.1"
Libraries purpose:
bitcoinjs-lib
andbitcoinjs-message
. Those libraries will help us to verify the wallet address ownership, we are going to use it to verify the signature.express
The REST Api created for the purpose of this project it is being created using Express.js framework.body-parser
this library will be used as middleware module for Express and will help us to read the json data submitted in a POST request.crypto-js
This module contain some of the most important cryotographic methods and will help us to create the block hash.hex2ascii
This library will help us to decode the data saved in the body of a Block.
The Boilerplate code is a simple architecture for a Blockchain application, it includes a REST APIs application to expose the your Blockchain application methods to your client applications or users.
app.js
file. It contains the configuration and initialization of the REST Api, the team who provide this boilerplate code suggest do not change this code because it is already tested and works as expected.BlockchainController.js
file. It contains the routes of the REST Api. Those are the methods that expose the urls you will need to call when make a request to the application.src
folder. In here we are going to have the main two classes we needed to create our Blockchain application, we are going to create ablock.js
file and ablockchain.js
file that will contain theBlock
andBlockChain
classes.
First thing first, we are going to download or clone our boilerplate code.
Then we need to install all the libraries and module dependencies, to do that: open a terminal and run the command npm install
( Remember to be able to work on this project you will need to have installed in your computer Node.js and npm )
At this point we are ready to run our project for first time, use the command: node app.js
We ca use POSTMAN, this tool will help to make the requests to the API.
- Run the application using the command
node app.js
You should see in your terminal a message indicating that the server is listening in port 8000:
Server Listening for port: 8000