《精通比特幣》master_bitcoin-第三章-《比特幣客戶端》
安裝Bitcoin Core
書上介紹瞭如何在Linux下從Github上clone“比特幣核心( Bitcoin Core)”的程式碼,並通過autogen/configure/make過程編譯出軟體。同時可以在Windows下下載安裝比特幣核心。在常用的Ubuntu作業系統下,如果有管理員許可權,可以使用官方提供PPA的方式安裝Bitcoin Core。
可以用以下三步完成安裝:
安裝完
Bitcoin Core的三種網路
- 主網mainnet
現在全球執行的比特幣網路。執行bitcoind即可以成為主網的一個全節點。
- 測試網路testnet
和主網平行的測試網路,已經有三個版本。執行“bitcoind -testnet”即可以成為測試網路的一個全節點。
- 私有網路regtest
用與比特幣相同的規則搭建私鏈。需要新增regtest引數:“bitcoind -regtest”。
額外的設定
bitcoind和bitcoin-cli有兩種方式讀取配置資訊。
1.在輸入命令時後面跟上引數,例如
bitcoind –testnet –printtoconsole -rpcuser=u -rpcpassword=p
2.把引數寫在~/.bitcoin/bitcoin.conf檔案裡,bitcoind和bitcoin-cli會自動去讀自己需要的配置資訊,例如
testnet=1
printtoconsole=1
rpcuser=u
rpcpassword=p
幾個重要的引數
-daemon:後臺執行 -printtoconsole:列印資訊 -rpcuser:rpc連線的使用者名稱 -rpcpassword: rpc連線的密碼 -rpcallowip:允許的訪問bitcoind的IP範圍 -minconf:交易的最小確認數 (輸入“bitcoind -h”檢視更多資訊)
啟動測試網路並檢視資訊
按上一張第二種方法啟動bitcoind後可以看到bitcoind輸出的除錯資訊。bitcoind開始尋找測試網路的節點並開始同步區塊,這個過程可能需要一段時間(根據網路情況也有可能幾天)。
#檢視資訊
bitcoin-cli getinfo
#檢視區塊鏈資訊
bitcoin-cli getblockchaininfo
#檢視網路資訊
bitcoin-cli getnetworkinfo
#檢視錢包資訊
bitcoin-cli getwalletinfo
#檢視更多可以用的命令
bitcoin-cli help
錢包
錢包加密、解密、備份、純文字匯出及恢復見《精通比特幣》3.2.2、3.2.3。
錢包會維護一個地址池,裡面預設有一些地址,使用時可以從中取出一個來接收比特幣。錢包會記錄跟地址池裡地址有關的交易。關於地址池中的地址和相關交易的查詢的命令見3.2.4。
交易
從地址池取出一個地址後,可以到http://bitcoinfaucet.uo1.net/send.php要一點測試幣。兩個小時經過多確認後可以看到餘額發生了變化。
通過listtransactions和gettransaction可以看到交易概要,後面會附上交易原文,即hex格式。用decoderawtransaction加hex格式的原文可以獲得交易詳細資訊,包括輸入輸出等。
通過listtransactions和gettransaction可以看到交易細節
區塊
getblockhash可以獲得某個高度的區塊的雜湊值,getblock可以獲得某個雜湊值的區塊的詳細資訊。
建立和傳送新交易
- listunspent:列出所有輸出到地址池裡地址的交易,即所有未花費的錢
- gettxout:獲得某個交易的某個vout
- createrawtransaction:生成交易的hex格式
- decoderawtransaction:解碼交易的hex格式
- signrawtransaction:給交易(hex格式)的每個輸入簽名
- sendrawtransaction:向網路傳送交易
其他替代客戶端、資料庫、工具包
• ▷ libbitcoin和sx tools
• 一款C++,通過命令列完成的全節點多執行緒客戶端與程式庫
• ▷ bitcoinj
• 一款全節點java客戶端和程式庫
• ▷ btcd
• 一款全節點GO 語言的比特幣客戶端
• ▷ Bits of Proof(BOP)
• 一款Java企業級平臺的比特幣工具
• ▷ picocoin
• 一款輕量級比特幣執行客戶端
• ▷ pybitcointools
• 一款Python語言的比特幣程式庫
• ▷ pycoin
• 另一款Python語言的比特幣程式庫
關於輕客戶端Electrum