Skip to content

MalindaWMD/expt-blockchain-in-golang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

expt-blockchain-in-golang

Experiment with blockchain from scratch using golang

Used BoltDB as it's easy to install with go application.

(code: PLN-STAGES)

Done

  • ✅ Setup basic structure and adding new blocks.
  • ✅ Store blockchain in a DB.
  • ✅ Implement PoW.
  • ✅ Mining process.
  • ✅ Block validation.
  • ✅ Implement addresses and transactions.
    • ✅ Address generation(withtin the app for now). Basic version for now. Wallets should be implemented.
      • Addresses are saved in a db(for now).
      • Private keys are encrypted before stoting.
    • ✅ Basic transactions setup.
    • ✅ Signing transactions.
  • ✅ Transaction verification.(In the mining process for now)
    • ✅ Signature verification.
    • ✅ UTXO validation.
    • ✅ Balance validation.
  • ✅ Block hash using Merkle tree.
  • Implement wallets and transfer address generation into wallets.
  • ✅ Create transaction pool for UTXOs(Mempool).
  • Update NewBlock() to get UTXOs from pool.
  • ✅ Implement a Miner.
    • A simple one for now. After mining is completed and data is valid it broadcast TX ids through a channel and listener will remove those from mempool.

Todo

  • Test coverage
  • Implement Merkle proof and verification
  • Node system.
  • Broadcasting.
  • Handle concurrency? (code: PNL-CONCURRENCY)

Resources used

About

Experiment with blockchain from scratch using golang

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages