比特币RPC API中文手册

区块链API
GetBestBlockHash/获取链头区块哈希 GetBlock/获取指定哈希的区块 GetBlockChainInfo/获取区块链当前状态 GetBlockCount/获取区块数量 GetBlockHash/获取指定高度区块的哈希 GetBlockHeader/获取指定哈希区块头 GetChainTips/获取全部链头区块 GetDifficulty/获取出块难度 GetMemPoolAncestors GetMemPoolDescendants GetMemPoolEntry GetMemPoolInfo/获取交易池信息 GetRawMemPool/获取交易池详情 GetTxOut/获取交易输出信息 GetTxOutProof/获取交易在区块中的证据 GetTxOutSetInfo/获取交易输出集信息 PreciousBlock PruneBlockChain VerifyChain/校验本地区块 VerifyTxOutProof
节点控制API
GetRpcInfo/获取rpc服务器信息 Help Stop/关闭节点软件
区块构造与挖矿API
Generate/挖矿出块 GenerateToAddress/挖矿出块并奖励指定地址 GetBlockTemplate GetMiningInfo/获取挖矿信息 GetNetworkHashPS/获取全网哈希生成速率 PrioritiseTransaction SubmitBlock/提交区块
P2P网络通信API
AddNode ClearBanned DisconnectNode GetAddedNodeInfo GetConnectionCount GetNetTotals GetNetworkInfo GetPeerInfo ListBanned Ping SetBan SetNetworkActive
裸交易相关API
CreateRawTransaction/创建裸交易 FundRawTransaction/充值裸交易 DecodeRawTransaction/解码裸交易 DecodeScript/解码脚本 GetRawTransaction/获取指定裸交易 SendRawTransaction/广播裸交易 SignRawTransaction/签名裸交易
工具类
CreateMultiSig/创建多签地址与脚本 EstimateFee EstimatePriority GetMemoryInfo/获取内存利用信息 ValidateAddress/验证地址有效性 VerifyMessage/验证消息签名
钱包相关
AbandonTransaction/废弃交易 AddWitnessAddress/添加隔离见证地址 AddMultiSigAddress/添加多签地址 BackupWallet/备份钱包文件 BumpFee/提高交易手续费 DumpPrivKey/导出指定私钥 DumpWallet/导出钱包文件 EncryptWallet/加密钱包 GetAccountAddress/获取指定账户当前地址 GetAccount/获取指定地址所述账户 GetAddressesByAccount GetBalance/查询钱包余额 GetNewAddress/生成新地址 GetRawChangeAddress/生成新找零地址 GetReceivedByAccount GetReceivedByAddress/查询指定地址收币数量 GetTransaction/查询指定交易 GetUnconfirmedBalance/查询钱包未确认余额 GetWalletInfo/获取钱包信息 ImportAddress/导入地址 ImportMulti ImportPrunedFunds ImportPrivKey/导入私钥 ImportWallet/导入钱包转储文件 KeyPoolRefill/预填充密钥池 ListAccounts ListAddressGroupings/按地址分组查询余额 ListLockUnspent/获取锁定状态UTXO ListReceivedByAccount ListReceivedByAddress/按地址统计收币数量 ListSinceBlock/查询指定区块后发生的钱包交易 ListTransactions/查询最近发生的钱包交易 ListUnspent/查询钱包UTXO LockUnspent/锁定或解锁指定的UTXO Move RemovePrunedFunds SendFrom SendMany SendToAddress/向指定地址发送比特币 SetAccount SetTxFee/设置交易手续费率 SignMessage/签名消息 SignMessageWithPrivKey/用指定私钥签名消息 WalletLock/锁定钱包 WalletPassphrase/解锁钱包 WalletPassphraseChange/修改钱包密码

FundRawTransaction/充值裸交易

fundrawtransaction调用为交易增加输入,直到该交易的输入可以满足输出值 的要求。该调用不会修改已有的输入,同时会增加一个找零输出。

需要指出的是,如果交易之前的输入已经签名,那么在本调用完成后可能 需要重新签名。新增加的交易输入是未签名的,因此需要使用signrawtransaction 调用进行签名。所有的交易输入所引用的UTXO必须属于钱包内的交易。

参数

  • Hexstring:要添加输入的裸交易字符串
  • Options:额外的可选项,结构如下:
    • changeAddress:找零地址,如果不设置则自动从地址池中选择一个新地址
      • changePosition:找零输出的序号,如果不设置则随机选择在交易输出中的序号
      • includeWatching:是否使用watch-only地址的UTXO,默认值:false
      • lockUnspents:是否在调用执行后锁定UTXO,默认值:false
      • reserveChangeKey:是否预留找零密钥,默认值:true
      • feeRate:交易费率,如果不设置则由钱包决定
      • subtractFeeFromOutputs:交易费扣除数组

返回值

fundrawtransaction调用返回更新后的交易信息,结构如下:

  • hex:更新后的未签名交易字符串
  • fee:交易支付的手续费,单位:bitcoin
  • changepos:找零在交易输出中的序号

示例代码

下面的命令更新指定的裸交易:

~$ bitcoin-cli -testnet fundrawtransaction 01000000011da9283b4ddf8d\
89eb996988b89ead56cecdc44041ab38bf787f1206cd90b51e0000000000ffff\
ffff01405dc600000000001976a9140dfc8bafc8419853b34d5e072ad37d1a51\
59f58488ac00000000 
'{
    "changeAddress": "15gJiApWFGTN2iTteQwQbqasdT6dwGWwv6",
    "changePosition" : 1,
    "includeWatching" : false,
    "lockUnspents" : true,
    "feeRate" : 0.0001
}'

输出结果如下:

{
    "hex": "01000000011da9283b4ddf8d89eb996988b89ead56cecdc44041ab38bf787f1206cd90b51e0000000000ffffffff01405dc600000000001976a9140dfc8bafc8419853b34d5e072ad37d1a5159f58488ac00000000",
    "fee": 0.0000245,
    "changepos": 2
}