原创 比特幣代碼分析6 錢包發送

BITCoin錢包如下: 比特幣發送邏輯如下: 整個過程可以分爲上面幾個步驟。下面分別進行說明。當用戶發送比特幣到某一個地址時,比特幣客戶端會調用SendMoney()方法。該方法包含三個參數:scriptPubKey包含腳本代碼OP_DU

原创 比特幣代碼分析5 挖礦代碼分析

本文描述礦工處理線程,通過本文學習,可以瞭解礦工挖礦的大致流程。主要包含挖礦費用交易的產生、當前交易池的打包處理,工作量證明等相關內容。流程圖(參考網絡)如下所示:。 礦工處理函數1.void ThreadBitcoinMiner(void

原创 比特幣代碼分析1 整體架構

Bitcoin 比特幣官方客戶端有兩個版本:一個是圖形界面的版本,通常被稱爲 Bitcoin(首字母大寫),以及一個簡潔命令行的版本(稱爲 bitcoind)。命令行可以有兩種運作方式:節點,RPC命令。節點是持續運行,RPC命令是一次性

原创 比特幣代碼分析11 比特幣存儲機制

比特幣存儲機制  比特幣存儲系統由兩部分組成: kv 數據庫(levelDB)索引和普通數據文件。普通文件用於存儲區塊鏈數據,kv 數據庫用於存儲區塊鏈元數據。用於存儲區塊鏈數據的普通文件以 blk00000.dat , blk00001.

原创 比特幣代碼分析10 比特幣中的工作量

比特幣網絡中任何一個節點,如果想生成一個新的區塊並寫入區塊鏈,必須解出比特幣網絡出的工作量證明的迷題。這道題關鍵的三個要素是工作量證明函數、區塊及難度值。工作量證明函數是這道題的計算方法,區塊決定了這道題的輸入數據,難度值決定了這道題的所需

原创 比特幣代碼分析9 Merkle樹

  Merkle Tree,通常也被稱作Hash Tree,顧名思義,就是存儲hash值的一棵樹。Merkle樹的葉子是數據塊(例如,文件或者文件的集合)的hash值。非葉節點是其對應子節點串聯字符串的hash。 Hash List  在點

原创 比特幣代碼分析8 區塊校驗和確認

比特幣節點接收到一個區塊以後,都會進行校驗和確認,如下參考網絡圖: 關鍵看看對區塊中的交易進行進一步的校驗代碼:1.// First transaction must be coinbase, the rest must not be2.i

原创 比特幣代碼分析7 交易校驗

每一個收到交易,比特幣節點都驗證該交易,有效的交易將被傳遞到各個附近節點,這將確保只有有效的交易纔會在網絡中傳播, 而無效的交易將會在第一個節點處就被廢棄。校驗選項列表:每一個節點在校驗每一筆交易時,都需要對照一個長長的標準列表1、交易語法