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

Simple_Wallet 在伺服器端通過RPC操縱錢包

Simple_Wallet 在伺服器端通過RPC操縱錢包

 

完成了前幾步後大約第三天,我們在伺服器上輸入

btc-cli getinfo
  • 1

獲得如下內容

{
    "version" : 100000,
    "protocolversion" : 70002,
    "walletversion" : 60000,
    "balance" : 0.00000000,
    "blocks" : 346865,
    "timeoffset" : -3,
    "connections" : 45,
    "proxy" : "",
    "difficulty" : 47427554950.64830017,
    "testnet" : false,
    "keypoololdest" : 1425532189,
    "keypoolsize" : 101,
    "paytxfee" : 0.00000000,
    "relayfee" : 0.00001000,
    "errors" : ""
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

注意其中的“blocks”引數,截止我寫這篇文章時同步到346865塊,查詢Blockchain發現最新塊也是如此。說明我們的同步已經趕上了最新塊,我們可以開始接下來的事務

你可以注意到,我剛才的操作btc-cli getblock,這個是什麼意思呢?
其實這就是我們通過json-rpc介面來操縱錢包,向錢包軟體下命令。

Run bitcoind or bitcoin-qt -server. You can control it via the command-line bitcoin-cli utility or by HTTP JSON-RPC commands.

可供操作的命令有非常多的種類

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

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 > 提交已經簽名的交易資訊並廣播到整個網際網路,返回值為交易雜湊
signrawtransaction hexstring,[{“txid”:txid,”vout”:n,”scriptPubKey”:hex},…][,…] 非常重要得一步,對交易進行簽名操作。其中第一個引數為“createrawtransaction”返回的hex值。第二個引數裡“txid”,“vout”,“scriptPubkey”和“listunspent”返回值一一對應(下一張簽名過程中會介紹到)。第三個引數為對應的私鑰明文(當然如果私鑰本身儲存在這個引數可省略)

以上是常用的大部分命令,完整版請移步官方api文件 (這款排版比較混亂,我的漢化計劃也在進行中,盡請期待~)

接下來你可以嘗試在終端中輸入這些命令來控制錢包,比如
btc-cli getbalance獲取餘額
btc-cli getinfo獲取錢包資訊