Simple_Wallet 在服务器端通过RPC操纵钱包

完成了前几步后大约第三天,我们在服务器上输入

btc-cli getinfo

获得如下内容

{
    "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" : "" }

注意其中的“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获取钱包信息

Have a nice day

版权说明:此文章所有权归本博客所有,转载请联系本人邮箱[email protected]征得同意

阅读更多

更多精彩内容