安裝比特幣並等待將節點同步到網路後,開啟控制檯。 執行bitcoin-qt(比特幣核心的GUI)時,可以在視窗下拉選單中找到它。
比特幣RPC控制檯接受各種命令,通常帶有0或1個引數。還有一些方法需要多個引數,例如傳送或驗證交易。在本教程中,我們將使用以下基本命令來熟悉控制檯:
基本資訊
1. getblockchaininfo
2. getmininginfo
3. getpeerinfo
區塊資訊
1. getblockcount
2. getbestblockhash
3. getblock hash
4. getblockhash index
事務資訊
1. getrawmempool
2. getrawtransaction txid
3. decoderawtransaction rawtx
常規資訊命令
這些命令將各自返回具有各種資訊的物件。 例如,
> getblockchaininfo
返回資訊:
{
"chain": "main",
"blocks": 582101,
"headers": 582101,
"bestblockhash": "000000000000000000165bf4a8eaa460df475200284
0009c29ec0adfd9376406",
"difficulty": 7409399249090.253,
"mediantime": 1561321207,
"verificationprogress": 0.9999922936147396,
"initialblockdownload": false,
"chainwork": "000000000000000000000000000000000000000006d2371
8c9e22adc4275b706",
"size_on_disk": 257091100656,
"pruned": false,
"softforks": [
{
"id": "bip34",
"version": 2,
"reject": {
"status": true
}
},
{
"id": "bip66",
"version": 3,
"reject": {
"status": true
}
},
{
"id": "bip65",
"version": 4,
"reject": {
"status": true
}
}
],
"bip9_softforks": {
"csv": {
"status": "active",
"startTime": 1462060800,
"timeout": 1493596800,
"since": 419328
},
"segwit": {
"status": "active",
"startTime": 1479168000,
"timeout": 1510704000,
"since": 481824
}
},
"warnings": ""
}
此命令有很多資訊。它為我們提供了確定最佳塊以及在何處找到所需的所有詳細資訊。我們還可以看到區塊鏈的大小和實現的各種軟分叉。
第二個常規資訊命令,
> getmininginfo
返回以下物件:
{
"blocks": 582102,
"difficulty": 7409399249090.253,
"networkhashps": 6.626238141514776e+019,
"pooledtx": 3527,
"chain": "main",
"warnings": ""
}
區塊和難度值也位於getblockchaininfoinfo命令中,但是在這裡我們可以找到:
· 每秒網路雜湊
· 交易池中的交易數
第三個常規資訊命令是查詢有關您的節點與之通訊區塊鏈資料的對等方的資訊。該命令:
> getpeerinfo
返回物件陣列。每個物件都有有關您的比特幣核心例項當前連線到的對等節點的資訊。如果您在路由器上開啟了埠8333,則此數字的範圍通常為10–50(有關在此處開啟埠的更多資訊)。返回的資訊包括:
· IP地址資訊
· 上次傳送/接收後的時間
· 節點連線時間(正常執行時間)
· 版本/子版本
· 其他網路資訊
此陣列中對等點的總數指示連線數,但是您也可以使用命令getconnectioncount返回連線節點的數值。
區塊命令
要檢索有關一個區塊的資料,我們首先需要一個區塊索引或雜湊來標識該區塊。我們可以使用以下命令檢索有關鏈上當前最佳區塊的兩個值:
> getblockcount
返回當前的最佳區塊索引:
582102
或者
> getbestblockhash
返回當前最好的區塊雜湊值:
000000000000000000227508581434096917b80e3a4c981116cc8ff532aa48ef
比特幣區塊鏈上的每個區塊都有一個索引和一個雜湊,我們可以使用它來查詢有關它的詳細資訊。可以使用區塊雜湊直接查詢塊,也可以使用塊索引間接查詢區塊。例如假設我們知道要查詢高度(索引)為530120的塊。首先鍵入以下命令:
> getblockhash 530120
返回雜湊值:
00000000000000000025c3a8404acf1cabc9fe0a2901f59828128c3bb16f7616
接下來使用getblock命令檢索區塊資料:
> getblock 00000000000000000025c3a8404acf1cabc9fe0a2901f59828128c3bb16f7616
使用特定雜湊呼叫的getblock命令將返回:
· 自該區塊以來已確認區塊的數量
· 區塊大小
· 區塊重量
· 梅克爾根
· 塊中所有tx id的陣列
· 區塊被挖掘的時間
· 區塊隨機數
· 目前的難度係數
· 交易數量(nTx)
· 下一個/上一個區塊雜湊
事務處理命令
預設情況下,比特幣不對交易編制索引。 要查詢與您的錢包關聯的事務以外的事務,必須首先在配置檔案中開啟索引。 轉到設定>>選項>>開啟配置檔案以開啟比特幣配置檔案(bitcoin.conf)。
新增行:
txindex=1
新增此命令後,儲存檔案並重新啟動Bitcoin Core。此過程可能需要幾個小時,因此設定過夜或在您不在時很有用。一旦比特幣核心索引了區塊鏈,就可以使用getrawtransaction和解碼器awtransaction命令單獨查詢任何交易。
這似乎是一個繁瑣的額外步驟,但是請記住,此設定也是執行閃電節點的必要條件。
現在我們有一個索引的比特幣節點正在執行,讓我們找到一些要解碼的交易。 我們可以使用以下命令檢視記憶體池中所有事務的ID
> getrawmempool
此命令將返回當前在記憶體池中的(通常)成千上萬個待處理事務的陣列。
我們可以透過選擇其中一個交易ID來查詢特定交易。
> getrawtransaction 68ecbf8b6d78db0aa4969feb65c6d600bde02f33dbc84151139964fcf448af55
這將返回原始交易:
010000000152fb73aff8ae297ab294f0e4ddce76c63cfcdb10488582d6e7c8
94053a4325ea000000006b483045022100bc7852636a24fd1da1e14d04abc2
c8a467b45f5f7922be47ed8cbd5f571904af0220239cb094a40a4b5d812096
b82354bc4470823aeaf8658dd9c71a43327f4a29cd012102a1703f0092c3de
5106379bce7fbf8689263e31ea8ed41723c8533c28de62cf16ffffffff0219
7c0800000000001976a914bf1cccd8e4256b5258ce66849e05f4a59f1edb8d
88ac0000000000000000536a4c500003ad250002c5239e661ae029df7a66f0
2955e7a322413e8fbeb6448072b87b7a7c1304ac111052848276bb2bbbf5ad
6612436a5d0fe8370702bd541feb2ffa416fa6194a21eb30a2be3060387bf8
7100000000
這個十六進位制字串(我們稱之為十六進位制)是經過編碼的交易,可以使用以下程式碼進行解碼:
> decoderawtransaction hex
此命令返回一個物件,其中包含有關該事務的詳細資訊
{
"txid": "68ecbf8b6d78db0aa4969feb65c6d600bde02f33dbc841511399
64fcf448af55",
"hash": "68ecbf8b6d78db0aa4969feb65c6d600bde02f33dbc841511399
64fcf448af55",
"version": 1,
"size": 284,
"vsize": 284,
"weight": 1136,
"locktime": 0,
"vin": [
{
"txid": "ea25433a0594c8e7d682854810dbfc3cc676cedde4f094b27a
29aef8af73fb52",
"vout": 0,
"scriptSig": {
"asm": "3045022100bc7852636a24fd1da1e14d04abc2c8a467b45f5
f7922be47ed8cbd5f571904af0220239cb094a40a4b5d812096b82354bc447082
3aeaf8658dd9c71a43327f4a29cd[ALL] 02a1703f0092c3de5106379bce7fbf8
689263e31ea8ed41723c8533c28de62cf16",
"hex": "483045022100bc7852636a24fd1da1e14d04abc2c8a467b45f
5f7922be47ed8cbd5f571904af0220239cb094a40a4b5d812096b82354bc447082
3aeaf8658dd9c71a43327f4a29cd012102a1703f0092c3de5106379bce7fbf8689
263e31ea8ed41723c8533c28de62cf16"
},
"sequence": 4294967295
}
],
"vout": [
{
"value": 0.00556057,
"n": 0,
"scriptPubKey": {
"asm": "OP_DUP OP_HASh260 bf1cccd8e4256b5258ce66849e05f4a59
f1edb8d OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a914bf1cccd8e4256b5258ce66849e05f4a59f1edb8d88ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"1JRWZiGXAm9n3b5FXopkW1wPifAtXwfjWC"
]
}
},
{
"value": 0.00000000,
"n": 1,
"scriptPubKey": {
"asm": "OP_RETURN 0003ad250002c5239e661ae029df7a66f029
55e7a322413e8fbeb6448072b87b7a7c1304ac111052848276bb2bbbf5ad66
12436a5d0fe8370702bd541feb2ffa416fa6194a21eb30a2be3060387bf871",
"hex": "6a4c500003ad250002c5239e661ae029df7a66f02955e7a
322413e8fbeb6448072b87b7a7c1304ac111052848276bb2bbbf5ad6612436a
5d0fe8370702bd541feb2ffa416fa6194a21eb30a2be3060387bf871",
"type": "nulldata"
}
}
]
}
這裡我們有:
· 交易規模
· 交易權重
· 輸入詳細資訊
· 輸出詳細資訊和值/秒
這裡有很多資訊,但是請注意,上面的交易沒有與其輸入相關的任何值。確認交易所在的區塊在交易中均不可用。故意遺漏這些細節是為了防止區塊鏈重複不必要的資料。但是我們確實有足夠的資訊來查詢每筆比特幣交易中收到的金額,並且能夠查詢以前的交易輸出。使用這些命令足以構建基本的區塊瀏覽器。
總結
比特幣核心RPC控制檯是使用比特幣節點促進交易和構建應用程式的中心。每個比特幣例項都可以訪問以前交易歷史記錄以及網路和採礦資訊的幾乎不變的共享資料庫。
通常瞭解其中一些基本命令是比特幣應用程式開發和節點操作中的關鍵步驟。可以透過多種不同的程式語言來訪問這些命令,以構建使用和實現事務邏輯的API和應用程式。可以從您自己的節點執行業務,並透過具有自定義使用者介面的應用程式以程式設計方式跟蹤每個交易。