該項目目標是實現一個最小的可運行版本的類似bitcoin的blockchain。
- 目的:
- 闡述bitcoin的機制
- 熟悉相關知識點
github地址:bitcoinlitelite
說明
Transaction指的是bitcoin里面的交易,里面包含了此次交易的信息。多個Transaction構成一個集合,形成block。
流程是:userA 要給userB轉賬,userA會打包一個Transaction,里面包含了userA的address(這里暫時用publicKey取代),還有userA用privateKey Sign之后的信息。其他的user收到該筆Transaction,根據Transaction里面包含的userA的address,通過公鑰算法驗證該筆Transaction是否就是userA發出的。
POW:多個節點都收到一定的Transaction之后,誰來打包?POW算法決定誰來打包,某個user,假設C,C必須根據規則不斷生成Hash,直到生成的Hash符合這次打包規則。C把該block信息廣播,其他節點驗證其POW是否正確,如果是,block加入到chain里。
-
包含文件:
- btc/transaction.go
- consensus/pow.go
Transaction
- Header:
- From 從哪個地址發出
- To 發到哪個地址
- PayloadHash 對交易內容進行SHA256
- PayloadLen 交易內容的長度,用于最終解碼
- Timestamp 交易產生時間
- Nonce 可以理解為不斷遞增的數字,用于跟交易內容合并,產生HASH,然后匹配是否符合POW
- Transaction:
- Header 交易Header
- Signature 交易發起者使用私鑰進行簽名
- Payload 交易內容