1. 程式人生 > >在伺服器端通過RPC操縱比特幣錢包

在伺服器端通過RPC操縱比特幣錢包

在LINUX伺服器上安裝了比特幣的核心錢包後,可以通過RPC命令操縱比特幣錢包,最常用的命令:

/usr/local/bitcoin/bin/bitcoin-cli --datadir=/www/bitcoin/data/ getinfo   

{
  "deprecation-warning": "WARNING: getinfo is deprecated and will be fully removed in 0.16. Projects should transition to using getblockchaininfo, getnetworkinfo, and getwalletinfo before upgrading to 0.16",
  "version": 150100,
  "protocolversion": 70015,
  "walletversion": 139900,
  "balance": 0.01000000,
  "blocks": 509963,
  "timeoffset": -1,
  "connections": 8,
  "proxy": "",
  "difficulty": 2874674234415.941,
  "testnet": false,
  "keypoololdest": 1517114450,
  "keypoolsize": 1999,
  "paytxfee": 0.00000000,
  "relayfee": 0.00001000,
  "errors": ""

}

注意其中的“blocks”引數,截止我寫這篇文章時同步到509963塊,查詢Blockchain發現最新塊也是如此。說明我們的同步已經趕上了最新塊.

其中我們會比較常用的幾種命令,精選如下(字母順序)

Command(命令)Parameters(引數)Description(描述)
createrawtransaction[{“txid”:txid,”vout”:n},…] {address:amount,…}這條命令是用來建立新的交易的,主要的兩個引數為unspend(為花費的比特幣的資訊)以及目標地址資訊,生成結果為一個壓縮後的hex string
decoderawtransaction< hex string>用這個命令將一個壓縮後的hex string解析為JSON物件,這樣方便我們觀察交易的具體資訊
dumpprivkey< bitcoinaddress >通過提供比特幣地址,來返回此地址所對應的私鑰(當然前提是這個地址是本身錢包中的)
getaccount< bitcoinaddress >通過提供比特幣地址,來返回此地址對應的賬戶(前提是這個地址是本身在錢包中的)
getaccountaddress< account >這個命令是提供賬戶名稱返回一個賬戶中的地址方便收款,如果引數“account”在錢包中並不存在,那麼就新建一個同名account並在這個account中新建一個比特幣地址並返回
getaddressesbyaccount< account >這個命令是提供一個賬戶名稱,並返回一個list物件,裡面包含這個賬戶下的所有地址,如果壓根沒有這個地址,那麼返回一個空list
getbalance[account] [minconf=1]幾乎是最常用的命令,如果不填寫引數則預設用來返回錢包所有帳戶中的所有比特幣餘額總和,如果填寫account則為指定賬戶的餘額總和,“minconf”引數來控制有幾個確認,一般填寫3即可
getinfo也是最常用的命令之一,返回一個包含各種資訊的物件
getnewaddress[account]生成一個新的比特幣地址,如果指定了account,則在該account名下生成這個地址
getrawtransaction< txid > [verbose=0]引數為“txid”以及一個int型別的引數(預設為0),返回txid對應的Hex值。如果verbose為0則返回序列化的Hex字串,如果為1則返回解析後的Hex字串
getreceivedbyaccount[account] [minconf=1]第一個引數為“account”,第二個引數為確認數(選填)。通過這個函式可以獲得對應account所受到的所有比特幣
gettransaction< txid >通過txid來獲取transaction交易資訊
listaccounts[minconf=1]列表形式列出錢包中所有的賬戶名稱
listunspent[minconf=1] [maxconf=999999]非常常用的一個命令,有兩個引數“最小確認”與“最大確認”,返回植為未花費的“input”
sendrawtransaction< hex string >提交已經簽名的交易資訊並廣播到整個網際網路,返回值為交易雜湊
signrawtransactionhexstring,[{“txid”:txid,”vout”:n,”scriptPubKey”:hex},…][,…]非常重要得一步,對交易進行簽名操作。其中第一個引數為“createrawtransaction”返回的hex值。第二個引數裡“txid”,“vout”,“scriptPubkey”和“listunspent”返回值一一對應(下一張簽名過程中會介紹到)。第三個引數為對應的私鑰明文(當然如果私鑰本身儲存在這個引數