Giter VIP home page Giter VIP logo

blockchain-in-javascript-from-scratch's Introduction

Create Blockchain from Scratch in JavaScript

Follow on Twitter for any questions.

image

What topics are covered in this Project

  1. Fully Functional Blockchain
  2. Create a Wallet
  3. Create Transactions
  4. Sign a Transaction
  5. Validate a Transaction
  6. Generate a Transaction from Multiple inputs
  7. Broadcast Transactions
  8. Memory Pool
  9. Listen for New Transactions and add them in a Block
  10. Mine a Block
  11. Automatically remove transactions from Memory Pool that are included in a Block.
  12. Automatically Adjust the Mining Difficulty
  13. Frontend to View all the Blocks in a Chronological Order
  14. Create Transactions from the Frontend
  15. As soon Transaction is created it will appear in Mempool.
  16. Click on address to view the Total account Balance and complete Tx History.
  17. Click on any TxId to view in which block that transaction was included.

image

The steps to run it correctly are listed below.

  1. On your local machine, download or clone the repository.
  2. Go to the local directory in VSCODE or any other IDE. For example, if you have this repository saved at C:/users/abc/desktop/anni maan
  3. Run npm install from the anni maan directory. It will install all of the Project's essential dependencies.
  4. You'll need a free MongoDB online atlas account. Simply create a user account. If you don't know how to make a mongoDB account, there are numerous YouTube videos available.
  5. You should now have an Url that you may use to connect to MongoDB on your local PC.
  6. You must generate two .env files, one in the anni maan/Backend/core/.env directory and the other in the anni maan/Backend/database/.env directory.
  7. That's all there is to it; you should now be able to work on your projects.
  8. cd backend/core and make sure you're on anni maan.
  9. Dummy Private Key and Public Address is already hardcoded in core/Tx.Js file to receive the mining award.
  10. If you don't want to use the Dummy Private Key and Public address then you generate new Private Key and Public by running wallet.js script. Now you can update Tx.Js with the new Private Key and Public Address.
  11. Start your Blockchain node by typing node blockchain
  12. Voila! Your blockchain mining node is now up and running. image

Steps to Start Frontend

  1. cd frontend and create copy the .env file with database uri.
  2. cd frontend and run npm install and then npm run dev.
  3. http://localhost:3000/
  4. There 3 main sections, Blocks, Transfer and Mempool.
  5. Block is to see all the Blocks in our Blockchain.
  6. Transfer is to send coins to any address. You can type any random intergers and it will automatically generate your Public Address. Make sure the from and to addresses are correct.
  7. once you hit the Submit button, you should be able to see your transaction in mempool. Once Transaction is confirmed it will be automatically removed from the mempool.
  8. You can goto back to blocks and one the block should have 2 transaction. First transaction will always be COINBASE transaction which is the mining reward and other transaction you just initiated.
  9. You can click on any Transaction Id to see who sent you the coins.
  10. You can also Click on the Public address to view the total balance and you the transaction you have received as far on this address. image

blockchain-in-javascript-from-scratch's People

Contributors

anni1236012 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.