MagnaChain 创建侧链流程

1.启动主链

./magnachaind -daemon
-rpcuser=magnachain
[email protected]
-datadir=/home/magnachain/L1_1

2.在主链上创建侧链

1) 生成新的地址:
rpc command:
./magnachain-cli
-rpcuser=magnachain
[email protected]
-datadir=/home/magnachain/L1_1 getnewaddress
return:
XRUMn1xfYEE7WHUgXwKNNZRAUqoxKCZVLb
2) 创建侧链:
rpc command:
./magnachain-cli
-rpcuser=magnachain
[email protected]
-datadir=/home/magnachain/L1_1
createbranchchain
clvseeds.com
00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:3b:80:8333
XRUMn1xfYEE7WHUgXwKNNZRAUqoxKCZVLb
return:
{
"txid": "d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a",
"branchid": "d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a"
}

3.添加侧链节点到主链

./magnachain-cli
-rpcuser=magnachain -
[email protected]
-datadir=/home/magnachain/L1_1
addbranchnode
d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a
127.0.0.1 9201 magnachain [email protected]
return:
ok

4.修改侧链配置文件

L2_1/cellllink.conf
port=9101
rpcport=9201
branchid=d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a
mainchaincfg={"ip":"127.0.0.1","port":8201,"usrname":"magnachain","password":"[email protected]"}
vseeds=clvseeds.com
seedspec6=00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:3b:80:8333

5.启动侧链

./magnachaind -daemon -rpcuser=magnachain [email protected] -datadir=/home/magnachain/L2_1

6.修改主链配置文件并添加侧链配置信息

L1_1/magnachain.conf
port=8101
rpcport=8201
branchcfg={
"branchid":"d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a",
"ip":"127.0.0.1", "port":9201, "usrname":"magnachain", "password":"[email protected]"
}

MagnaChain 智能合约手册

1.智能合约概述

  • a. MagnaChain 的智能合约采用 Lua 语言编写,在官方 5.1 版本进行修改,语法上全部保留。数字类型改为 long long,其他数据类型没作修改。去掉了安全相关基础库,例如 io,os等。去掉浮点相关操作函数,保留了 math.pow,math.max,math,min。
  • b. 合约接口可见性。全局函数可供外部调用,local 函数只能合约里内部调用。
  • c. 数据持久与初始化。合约里需要存储的数据请添加到全局变量 PersistentData。
  • d. 合约的费用。发布和调用合约需要提供小额的手续费。手续费根据指令执行数和需要存储的数据大小计算得出。
  • e. 调用者和区块相关数据。在合约里可以通过全局表 msg 获取到下列数据:

2.编写智能合约

  • a. 概述。 合约使用 Lua 语言脚本 UTF8(NOBOM)编码格式的文件编写。
  • b. 限制。为了防止部分脚本执行的指令过多以及死循环情况,合约限制了可执行的指令条数。用户可以将需要保存的数据添加到全局变量 PersistentData,该数据将会被打包存储,数据大小受到限制以防止过多占用计算机资源。
  • c. 初始化。用户可以根据需要选择是否加入初始化接口 init(),该接口仅在合约发布时会自动调用一次,并计算相应费用。

3.发布智能合约

  • a. 概述。 发布者在本地将写好的 Lua 文件发布,MagnaChain 内置的 Lua 虚拟机会将其解析成字节码,并将其存储于交易数据中,并计算相关费用后,返回该合约的地址。
  • b. 命令行格式: 有两种命令行格式,对应 http
    publish ${ContractFilePath}
    参数:
    @ContractFilePath[string,required,1]->要发布的合约文件绝对路径。
    返回值:
    执行成功时返回一个对象,包括以下字段:
    @contractaddress[string(hex),required,1]->以 hex 编码的合约地址。
    @senderaddress[string(hex),required,1]->以 hex 编码的发送者地址。
    执行失败,则返回相关字符串信息。
    示例:

    publishcontractcode ${ContractHexData}
    参数:
    @ContractHexData[string(hex),required,1]->以hex编码的合约文件数据。
    返回值:
    执行成功时返回一个对象,包括以下字段:
    @contractaddress[string(hex),required,1]->以 hex 编码的合约地址。
    @senderaddress[string(hex),required,1]->以 hex 编码的发送者地址。
    执行失败,则返回相关字符串信息。

4.调用智能合约

  • a. 概述。发布者或其它用户可以通过返回的合约地址找到合约对应的字节码,将其加载到 Lua 虚拟机中,并调用合约上的接口以相关参数完成交易。交易完成后,将根据执行指令数及数据大小,扣除相关的费用。
  • b. 命令行格式: 有两种格式,区别是 sendcall 是会广播交易数据,call 不会广播交易数据。
    sendcall ${ContractAddress} $(amountCell) ${SenderAddress}
    ${FunctionName} ${Params}
    或者
    call ${ContractAddress} ${SenderAddress} ${FunctionName} ${Params}
    参数:
    @ContractAddress[string(hex),required,1]->以hex编码的合约地址,即Public 和 PublicContractCode 返回值的 contractaddress 字段。
    @ amountCell[number,required,1]发送给智能合约的币。
    @SenderAddress[string(hex),required,1]->以 hex 编码的发送者地址,也是 Public 和 PublicContractCode 返回值的 senderaddress 字段。
    @FunctionName[string,required,1]->要调用的智能合约上的接口函数名。
    @Params[string or number,optional,0 or More]->传递给智能合约接口的对应参数。
    返回值:
    执行成功,返回根据智能合约上的接口的返回值返回。
    执行失败,则返回相关字符串信息。
    示例:

5、启动节点

  • a.连接主网络(现在的测试网络)
    在 Linux 下启动,直接运行 MagnaChaind 程序。
    MagnaChaind -daemon
    在 window 下启动,直接运行 celld.exe 程序。
    celld.exe
  • b.数据路径
    默认的数据路径。
    Linux 下是用户目录下的.MagnaChain,~/.MagnaChain
    window 是 C:\Users\$username$\AppData\Roaming\MagnaChain
  • c.常用的启动参数
    -daemon 后台运行
    -printtoconsole 日志输出到控制台
    -datadir=your_dir 指定数据目录,如果没指定则用默认路径
    -regtest=1 回归测试网络,不与外部网络节点连接。
  • d.测试是否已经连上主网络(测试网络)
    Linux 下
    MagnaChain-cli getinfo
    window 下
    cell-cli.exe getinfo
    命令返回

    成功时,connections 非零,并且blocks在更新。

MagnaChain系统部署文档

1、windows系统部署

  • 执行程序说明

    magnachain.exe:是运行的核心程序俗称 magnachain core,也是必须首先需要启动的执行程序
    magnachain-cli.exe:是一个功能完备的RPC客户端,包括查询区块,交易信息等等
  • 新建配置文件magnachain.conf
    在自定义目录(如:D:\magnachain\data)下新建magnachain.conf,内容如下图:

    参数说明
    port=8099 #监听端口,默认(不设置)为:8833
    rpcport=9201 #rpc调用端口
    rpcuser=user #rpc调用用户名
    rpcpassword=pwd #rpc调用密码
  • 启动MagnaChain本地节点
    在cmd命里模式下,进入MagnaChain工程目录
    执行如下命令:
    magnachain.exe -datadir= D:\magnachain\data -regtest=1 -printtoconsole
    *** 备注 ***
     不要关闭cmd窗口, 因为在windows下后台启动参数daemon是不支持的,这点和
    linux系统不同,打开另外一个cmd窗口来执行magnachain-cli调用RPC命令;
     节点启动datadir和regtest两个参数在magnachain-cli调用rpc命令时一定要记得带上。

  • magnachain-cli调用RPC命令
    通过getinfo命令检测节点是否成功
    magnachain-cli.exe -datadir=D:\magnachain\data -regtest=1 getinfo

    *备注
     如果运行magnachain.exe失败,请运行vc_redist.x86.exe

2、centos(ubuntu)系统部署

  • 执行程序说明

    magnachaind:是运行的核心程序俗称 magnachain core,也是必须首先需要启动的执行程序
    magnachain-cli:是一个功能完备的RPC客户端,包括查询区块,交易信息等等
  • 加载运行依赖库
    在MagnaChain执行文件目录下载执行:
    chmod +x loadlib.sh
    ./loadlib.sh
  • 新建配置文件magnachain.conf
    在自定义目录(如: /Users/jerry/data)下新建magnachain.conf,内容如下图:

    参数说明
    port=8099 #监听端口,默认(不设置)为:8833
    rpcport=9201 #rpc调用端口
    rpcuser=user #rpc调用用户名
    rpcpassword=pwd #rpc调用密码
  • 启动MagnaChain本地节点
    在shell命里模式下,进入MagnaChain工程目录
    执行如下命令:
    ./magnachaind -datadir=/Users/jerry/data -regtest=1 -daemon
  • magnachain-cli调用RPC命令
    通过getinfo命令检测节点是否成功
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 getinfo

    *备注:
    节点启动datadir和regtest两个参数在magnachain-cli调用rpc命令时一定要记得带上。

3、常用rpc命令

  • getinfo: 获取区块的各种状态信息
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 getinfo

  • getnewaddress: 生成新的地址
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 getnewaddress (“account”)

  • listaccounts: 获取账号列表
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 listaccounts

  • listwallets: 钱包列表
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 listwallets

  • getwalletinfo: 获取钱包信息
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 getwalletinfo

  • generateforbigboom/ generate:创建区块
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 generateforbigboom 1

    *备注:
     generate需要一定的块高度才能使用;
     发布智能合约之前需要创建501以上的块才能进行,即./magnachain-cli generateforbigboom 501,直到通过getinfo返回信息中balance有值才能发布和调用智能合约。

4、智能合约

  • 发布智能合约
    a. 概述。发布者在本地将写好的Lua文件发布,MagnaChain内置的Lua虚拟机会将其解析成字节码,并将其存储于交易数据中,并计算相关费用后,返回该合约的地址。
    b. 命令行格式: 有两种命令行格式,对应http
    publish ${ContractFilePath} 参数:
    @ContractFilePath[string,required,1]->要发布的合约文件绝对路径。
    返回值:
    执行成功时返回一个对象,包括以下字段:
    @contractaddress[string(hex),required,1]->以hex编码的合约地址。
    @senderaddress[string(hex),required,1]->以hex编码的发送者地址。
    执行失败,则返回相关字符串信息。
    示例:

    publishcontractcode ${ContractHexData}
    参数:
    @ContractHexData[string(hex),required,1]->以hex编码的合约文件数据。
    返回值:
    执行成功时返回一个对象,包括以下字段:
    @contractaddress[string(hex),required,1]->以hex编码的合约地址。
    @senderaddress[string(hex),required,1]->以hex编码的发送者地址。
    执行失败,则返回相关字符串信息。
  • 调用智能合约
    a. 概述。发布者或其它用户可以通过返回的合约地址找到合约对应的字节码,将其加载到Lua虚拟机中,并调用合约上的接口以相关参数完成交易。交易完成后,将根据执行指令数及数据大小,扣除相关的费用。
    b. 命令行格式:有两种格式,区别是sendcall是会广播交易数据,call不会广播交易数据。
    sendcall ${ContractAddress} $(amountCell) ${SenderAddress} ${FunctionName} ${Params}
    或者
    call ${ContractAddress} ${SenderAddress} ${FunctionName} ${Params}
    参数:
    @ContractAddress[string(hex),required,1]->以hex编码的合约地址,即Public
    和PublicContractCode返回值的contractaddress字段。
    @ amountCell[number,required,1]发送给智能合约的币。
    @SenderAddress[string(hex),required,1]->以hex编码的发送者地址,也是
    Public和PublicContractCode返回值的senderaddress字段。
    @FunctionName[string,required,1]->要调用的智能合约上的接口函数名。
    @Params[string or number,optional,0 or More]->传递给智能合约接口的对应 参数。
    返回值:
    执行成功,根据智能合约上的接口的返回值返回。
    执行失败,则返回相关字符串信息。
    示例:

MagnaChainCoreAPIs

AbandonTransaction

撤消一个钱包内的交易以及关联子交易(比如交易可以设置在某个高度后才有效,该交易会留在自己内存池中而不广播,这样的交易可以取消,被打包进区块上的就无法取消)。
@TXID[string(hex),required,1]->目标交易 ID(TXID)
@result->返回 null 时表示交易及关联子交易已经取消
bitcoin-cli abandontransaction
fa3970c341c9f5de6ab13f128cbfec58d732e736a505fe32137ad551c799ecc4

AddMultiSigAddress

添加一个 P2SH 多重签名地址到钱包
@Required[number(int),required,1]->解锁脚本需要的最少签名数量 m。
@KeysOrAddresses[array,required,1]->公钥或地址的字符串数组。
KeyOrAddress[string,required,1 or more]->签名将被检查的公钥。另外,也可使用属于钱包的 P2PKH 地址(公钥将被替换)。必须至少有@Required 指定的密钥数量,并
且可能会有更多密钥。
@Account[string,optional,0 or 1]->存储地址的帐户名,默认为空字符串。
@result[string(base58),required,1]->P2SH 多重签名地址,该地址会添加到钱包中,可通过钱包追踪支付到该地址的输出。
bitcoin-cli -testnet addmultisigaddress \ 2 \ '''
[
"mjbLRSidW1MY8oubvs4SMEnHNFXxCcoehQ",
"02ecd2d250a76d204011de6bc365a56033b9b3a149f679bc17205555d3c2b2854f",
"mt17cV37fBqZsnMmrHnGCm9pM28R1kQdMG"
]
''' \ 'test account'
2MyVxxgNBk5zHRPRY2iVjGRJHYZEp1pMCSq

AddNode

从 addnode 列表添加或删除一个节点,或尝试连接节点一次。
@Node[string,required,1]->以''表示的节点。可以是通过 DNS 解析的主机名,或者 IPv4、IPv6、IPv4-asIPv6 格式的地址。
@Command[string,required,1]->对 IP 地址的操作选项:
*add->将节点添加到 addnode 列表。默认 8 个节点最多可以添加 8 个节点。 不受 -maxconnections 限制。
*remove->从列表删除一个节点。如果当前已经建立连接,则会立即断开连接。
*onetry->即使对外连接槽(outgoing connection slots)已满,也会立即尝试连接到节点,且只会尝试连接一次。
@result[null,required,1]->添加、移除、尝试重连成功或尝试重连失败时都会返回空值。如果尝试移除一个不在 addnode 列表的节点时,会填充 JSON-RPC 的 error 字段。
bitcoin-cli -testnet addnode 192.0.2.113:18333 onetry

AddWitnessAddress

需要启用钱包支持。需要一个未上锁或未加密的钱包。为脚本添加一个见证地址(使用已知的公钥或兑换脚本)。
@Address[string(base58),required,1]->要添加到脚本中的见证地址,该地址必须在钱包中且未压缩。
@result[string[base58,Required,1]->新地址值(P2SH格式的见证脚本)。
bitcoin-cli addwitnessaddress 1BRo7qrYHMPrzdBDzfjmzteBdYAyTMXW75
3LfAujMsBHgQKoxLn59dVbeYPmfUrHSAQb

BackupWallet

需要启用钱包支持。 将 wallet.data 安全复制到指定的路径
@Destination[string,required,1]->指定的路径。如果是个文件,则该文件会被创建或覆盖。如果是一个目录,则会创建或覆盖目录中的 wallet.dat 文件。
@result[null,required,1]->总是返回空值。失败则会设置 JSON-RPC 的 error 和 message字段。
bitcoin-cli -testnet backupwallet /tmp/backup.dat

BumpFee

需要启用钱包支持。需要钱包未上锁。
替换一个未经确认的交易,该交易向RBF发送了一笔支付更高费用的新交易。增加的费用从找零输出中扣除。如果找零输出太小而无法增加费用,或钱包/内存池中包含花费交易输出之一的交易,则该命令将失败。参数-walletrbf必须开启(默认关闭)。
@TXID[string(hex),required,1]->交易ID。
@Options[object,optional,0 or 1]->有以下选项:
>confTarget[number(int),0 or 1]->区块中的确认目标。根据此值,将使用与estimatefee相同的代码进行计算新的费用。如果未设置,会使用默认值6个区块。
>totalFee[number(satoshis),optional,0 or 1]->支付的总费用(不是交易费率)。在极少数情况下,如果找零输出接近最小阈值,实际费用可能会更高。
>replaceable[bool,optional,0 or 1]->新交易是否仍然是BIP 125可替换的。即使设置为false,交易可能仍然可替换(比如一个未确认的可替换的父交易)。默认值为true。
@result[object,required,1]->新交易的相关信息对象。
>txid[string(hex),required,1]->新交易的ID。
>origfee[number(bitcoins),required,1]->被替换交易的费用。
>fee[number(bitcoins),required,1]->新交易的费用。
>errors[array,required,1]->处理过程中遇到的错误(可能为空值)。
bitcoin-cli -testnet bumpfee d4a33e0cabaz723149e1fcab4e033a40173\88a644c65370e3cb06ba2f0e13975\
'{
"totalFee": 4000,
"replaceable": false
}'
{
"txid":
"37a55ce49636977k79bcb04ee1143573b570b1743e09660e79e7ec3320968ca54",
"origfee": 0.00002450,
"fee": 0.00004000,
"errors": ""
}

ClearBanned

清空BannedNodes列表。
@result[null,required,1]->列表被清空时返回空值。
bitcoin-cli clearbanned

CreateMultiSig

创建一个 P2SH 多重签名地址。
@Required[number(int),required,1]->花费具有 n 个多重签名的脚本需要的最少签名数量 m。
@KeysOrAddresses[array,required,1]->一个公钥或地址字符串的数组。
Key/Address[string,required,1 or more]->签名将被检查的公钥。如果启用钱包支持,这可能是属于钱包的 P2PKH 地址,即相应的公钥将被替换。必须至少有@Required 指定的密钥数量,并且可能会有更多密钥。
@result[object,required,1]->描述多重签名的对象。
>address[string(base58),required,1]->该多重签名的兑换脚本的 P2SH 地址。
>redeemScript[string(hex),reqired,1]->用 hex 编码的多重签名兑换脚本。
bitcoin-cli -testnet createmultisig 2 '''
[
"mjbLRSidW1MY8oubvs4SMEnHNFXxCcoehQ",
"02ecd2d250a76d204011de6bc365a56033b9b3a149f679bc17205555d3c2b2854f",
"mt17cV37fBqZsnMmrHnGCm9pM28R1kQdMG"
]
'''
{
"address" : "2MyVxxgNBk5zHRPRY2iVjGRJHYZEp1pMCSq",
"redeemScript" : "522103ede722780d27b05f0b1169efc90fa15a601a32fc6c3295114500c586831b6aaf2102ecd2d250a76d204011de6bc365a56033b9b3a149f679bc17205555d3c2b2854f21022d609 d2f0d359e5bc0e5d0ea20ff9f5d3396cb5b1906aa9c56a0e7b5edc0c5d553ae"
}

CreateRawTransaction

创建一个未签名的序列化交易,该交易将先前的输出用于具有 P2PKH 或 P2SH 地址的新输入。该交易不会存储在钱包中,也不会发送到网络中。
@Inputs[array,required,1]->一组对象,每个对象将作为交易的其中一个输入。
>Input[object,required,1 or more]->描述某个特定输入对象。
>>txid[string(hex),required,1]->以 hex 编码的表示要花费的输出所属的交易的TXID。
>>vout[number(int), required,1]->要花费的输出索引,第一个输出索引为 0。
>>sequence[number(int),optional,0 or 1]->用于输入的序列号。
@Outputs[object,required,1]->待支付的地址和比特币数额。
>Address/Amount[string:number(bitcoins),required,1 or More]->以键值对出现的地址:数量。
@Locktime[number(int), optional, 0 or 1]->把该交易加入区块链中的最早时间(类似于挂单功能)。
@result[string, required,1]->返回以 hex 编码的未签名原始交易序列化数据。如果交易无法创建,返回空值,且设置 JSON-RPC 的 error 和 message 字段。
bitcoin-cli -testnet createrawtransaction '''
[
{
"txid": "1eb590cd06127f78bf38ab4140c4cdce56ad9eb8886999eb898ddf4d3b28a91d",
"vout" : 0
}
]''' '{ "mgnucj8nYqdrPFh2JfZSB1NmUThUGnmsqe": 0.13 }'
01000000011da9283b4ddf8d89eb996988b89ead56cecdc44041ab38bf787f12\ 06cd90b51e0000000000ffffffff01405dc600000000001976a9140dfc8bafc8\ 419853b34d5e072ad37d1a5159f58488ac00000000

DecodeRawTransaction

将用 hex 编码的序列化交易数据解码为用 JSON 对象描述的交易信息。
@SerializedTransaction[string(hex),required,1]->待解码的序列化交易数据。
@result[object,required,1]->用 JSON 对象描述的交易信息。如果解码失败,返回空值。
bitcoin-cli decoderawtransaction 0100000001bafe2175b9d7b3041ebac\ 529056b393cf2997f7964485aa382ffa449ffdac02a000000008a47304402201\ 3d212c22f0b46bb33106d148493b9a9723adb2c3dd3a3ebe3a9c9e3b95d8cb00\ 220461661710202fbab550f973068af45c294667fc4dc526627a7463eb23ab39\ e9b01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815\ b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08\ ffb10d4b8ffffffff01b0a86a00000000001976a91401b81d5fa1e55e069e3cc\ 2db9c19e2e80358f30688ac00000000
{
"txid": "52309405287e737cf412fc42883d65a392ab950869fae80b2a5f1e33326aca46",
"hash": "52309405287e737cf412fc42883d65a392ab950869fae80b2a5f1e33326aca46",
"size": 223,
"vsize": 223,
"version": 1,
"locktime": 0,
"vin":
[
{
"txid": "2ac0daff49a4ff82a35a4864797f99f23c396b0529c5ba1e04b3d7b97521feba",
"vout": 0,
"scriptSig":
{
"asm":
"3044022013d212c22f0b46bb33106d148493b9a9723adb2c3dd3a3ebe3a9c9e3b95d8cb0022046 1661710202fbab550f973068af45c294667fc4dc526627a7463eb23ab39e9b[ALL] 0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4 655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",
"hex":
"473044022013d212c22f0b46bb33106d148493b9a9723adb2c3dd3a3ebe3a9c9e3b95d8cb00220 461661710202fbab550f973068af45c294667fc4dc526627a7463eb23ab39e9b01410479be667ef9 dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1 108a8fd17b448a68554199c47d08ffb10d4b8"
},
"sequence": 4294967295
}
],
"vout": [
{
"value": 0.06990000,
"n": 0,
"scriptPubKey":
{
"asm": "OP_DUP OP_HASH160 01b81d5fa1e55e069e3cc2db9c19e2e80358f306 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a91401b81d5fa1e55e069e3cc2db9c19e2e80358f30688ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"1A6Ei5cRfDJ8jjhwxfzLJph8B9ZEthR9Z"
]
}
}
]
}

DecodeScript

将用hex编码的P2SH兑换脚本解码。
@RedeemScript[string(hex),required,1]->用hex编码的P2SH兑换脚本。
@result[object,required,1]->解码后的脚本对象。如果脚本无法解码,返回空值。
>asm[string,required,1]->用non-data-pushing opcodes形式表示的兑换脚本。可能为空值。
>type[string,optional,0 or 1]->脚本类型,有以下选项:
*pubkey->用于P2SH内的P2PK脚本
*pubkeyhash->用于P2SH内的P2PKH脚本
*multisig->用于P2SH内的多重签名脚本
*nonstandard->用于未知脚本
>reqSigs[number(int),optional,0 or 1]->需要的签名数量。用于P2SH内的P2PK或P2PKH的值为1。用于P2SH多重签名的值可能大于1。如果脚本类型(@type)是nonstandard,该值将不会返回。
>addresses[array,optional,0 or 1]->此脚本中使用的P2PKH地址,或此脚本中任何公钥计算出的P2PKH地址。如果脚本类型是nonstandard,该值将不会返回。
>>Address[string,required,1 or More]->一个P2PKH。
>p2sh[string(hex),required,1]->解锁兑换脚本的P2SH地址。
bitcoin-cli -testnet decodescript 522103ede722780d27b05f0b1169ef\ c90fa15a601a32fc6c3295114500c586831b6aaf2102ecd2d250a76d204011de\ 6bc365a56033b9b3a149f679bc17205555d3c2b2854f21022d609d2f0d359e5b\ c0e5d0ea20ff9f5d3396cb5b1906aa9c56a0e7b5edc0c5d553ae
{
"asm" : "2 03ede722780d27b05f0b1169efc90fa15a601a32fc6c3295114500c586831b6aaf 02ecd2d250a76d204011de6bc365a56033b9b3a149f679bc17205555d3c2b2854f 022d609d2f0d359e5bc0e5d0ea20ff9f5d3396cb5b1906aa9c56a0e7b5edc0c5d5 3 OP_CHECKMULTISIG",
"reqSigs" : 2,
"type" : "multisig",
"addresses" :
[
"mjbLRSidW1MY8oubvs4SMEnHNFXxCcoehQ",
"mo1vzGwCzWqteip29vGWWW6MsEBREuzW94",
"mt17cV37fBqZsnMmrHnGCm9pM28R1kQdMG"
],
"p2sh" : "2MyVxxgNBk5zHRPRY2iVjGRJHYZEp1pMCSq"
}

DisconnectNode

立即与指定的节点断开连接。
@Address[string,required,1]->以''表示的要断开连接的节点。可以是通过 DNS 解析的主机,或 IPv4、IPv6、IPv4-as-IPv6 地址。
@result[null,required,1]->节点已断开时返回空值。
bitcoin-cli -testnet disconnectnode 192.0.2.113:18333

DumpPrivKey

需要启用钱包支持。需要一个未上锁或未加密钱包。返回一个与地址对应的钱包导入格式(WIF)的私钥(但不会从钱包中移除)。
@P2PKHAddress[string(base58),required,1]->对应到目标私钥的 P2PKH 地址,该地址必须与钱包中的私钥对应。
@result[string(base58),required,1]->以 base58check 编码的 WIF 格式的私钥。
bitcoin-cli -testnet dumpprivkey moQR7i8XM4rSGoNwEsw3h4YEuduuP6mxw7
cTVNtBK7mBi2yc9syEnwbiUpnpGJKohDWzXMeF4tGKAQ7wvomr95

DumpWallet

需要启用钱包支持。需要一个未上锁或未加密钱包。
以用户可读的格式创建或覆盖一个包含所有钱包钥匙的文件。
@Filename[string,required,1]->钱包转储的文件路径。可以使用绝对路径。如果文件存在则会覆盖。
@result[null,required,1]->返回空值。如果执行失败,则设置 JSON-RPC 的 error 和 message 字段。
bitcoin-cli -testnet dumpwallet /tmp/dump.txt head /tmp/dump.txt
# Wallet dump created by Bitcoin v0.9.1.0-g026a939-beta (Tue, 8 Apr 2014 12:04:06 +0200)# *
Created on 2014-04-29T20:46:09Z# * Best block at time of backup was 227221 (0000000026ede4c10594af8087748507fb06dcd30b8f4f48b9cc463cabc9d767),# mined on 2014-04-29T21:15:07Z
cTtefiUaLfXuyBXJBBywSdg8soTEkBNh9yTi1KgoHxUYxt1xZ2aA 2014-02-05T15:44:03Z label=test1 # addr=mnUbTmdAFD5EAg3348Ejmonub7JcWtrMck
cQNY9v93Gyt8KmwygFR59bDhVs3aRDkuT8pKaCBpop82TZ8ND1tH 2014-02-05T16:58:41Z reserve=1 # addr=mp4MmhTp3au21HPRz5waf6YohGumuNnsqT
cNTEPzZH9mjquFFADXe5S3BweNiHLUKD6PvEKEsHApqjX4ZddeU6 2014-02-05T16:58:41Z reserve=1 # addr=n3pdvsxveMBkktjsGJixfSbxacRUwJ9jQW
cTVNtBK7mBi2yc9syEnwbiUpnpGJKohDWzXMeF4tGKAQ7wvomr95 2014-02-05T16:58:41Z change=1 # addr=moQR7i8XM4rSGoNwEsw3h4YEuduuP6mxw7
cNCD679B4xi17jb4XeLpbRbZCbYUugptD7dCtUTfSU4KPuK2DyKT 2014-02-05T16:58:41Z reserve=1 # addr=mq8fzjxxVbAKxUGPwaSSo3C4WaUxdzfw3C

EncryptWallet

需要启用钱包支持。
使用密码加密钱包,该接口只能在第一次启用加密时使用。启用加密后,你需要输入密码才能使用密钥。
如果使用命令行,记住你的 shell 可能保存了命令行的密码。此外,没有 RPC 完全禁用加密。如果你想返回一个未加密的钱包,则必须创建一个新钱包,并通过 dumpwallet 接口
将钱包数据导入到这个新钱包里。
@Passphrase[string,required,1]->加密钱包的密码,至少包含一个字符。
@result[string,required,1]->返回一个“The keypool has been flushed, you need to make a new backup”的提示。说明钱包已经成功被加密。
bitcoin-cli -testnet encryptwallet "test"
wallet encrypted; Bitcoin server stopping, restart to run with encrypted
wallet. The keypool has been flushed, you need to make a new backup.

EstimateFee

估算交易被一定数量的区块包含时所需要支付的每千字节交易费用。
@Blocks[number(int),required,1]->预测一个交易在被包含进一个区块前需要等待的最大区块数量。取值范围是 2-25。
@result[bitcoins,required,1]->预测一笔交易被包含到指定数量的区块需要支付的交易费用。如果节点没有足够的信息进行预测,返回-1。
bitcoin-cli estimatefee 6
0.00162556
bitcoin-cli estimatefee 100
-1

EstimatePriority

估算一个交易被包含进一定数量区块作为免费的高优先级排序交易的优先级。不要与 prioritisetransaction 调用混淆,该调用是继续支持向交易添加更多的交易费用。estimatepriority 将会在后续版本移除。可参考 EstimateFee。交易优先级与交易的字节大小有关。
@Blocks[number(int),rquired,1]->一个交易在被预测包含在一个完全基于其优先级的区块中之前应该等待的最大区块数。
@result[number(real),required,1]->交易被包含进指定数量的区块中的估算优先级。如果节点没有足够的信息进行估算,则返回值-1。
bitcoin-cli estimatepriority 6
718158904.10958910
bitcoin-cli estimatepriority 100
-1.00000000

FundRawTransaction

需要启用钱包支持。
添加若干输入到一个交易中直到满足它的输出值。这不会修改现有的输入,并会添加一个找零输出。注意,由于输入/输出已经被添加,因此签名后的输入可能需要在完成后从MemPool移出。新加的输入不会被签名,使用signrawtransaction进行签名。所有现有的输入都必须保证钱包中拥有其先前的输出交易。
@Hexstring[string(hex),required,1]->以hex编码的原始交易数据。
@Options[object,optional,0 or 1]->有以下选项:
>changeAddress[string,optional,0 or 1]->接收找零的比特币地址。如果未设置,将从AddressPool中选取。
>changePosition[number(int),optional,0 or 1]->找零输出的索引值。如果未设置,将随机选取。
>includeWatching[bool,optional,0 or 1]->包含仅监听地址的输入。默认为false。
>lockUnspents[bool,optional,0 or 1]->该调用完成后,选中的输出将被锁定。默认为false。
>reserveChangeKey[bool, optional,0 or 1]->保留KeyPool中的找零输出密钥。默认为true。在BitcoinCore 0.14.0之前的版本中,使用的KeyPool中的密钥从不标记为找零地址,且会直接返回到KeyPool中(导致地址重用)。
>feeRate[number(bitcoins),optional,0 or 1]->你愿意支付的每千字节交易费率。如果未设置,由钱包决定交易费率。
>subtractFeeFromOutputs[array,optional,0 or 1]->JSON表示的整数数组。费用将会从各输出中平等扣除。输出将会在任何找零输出添加后,从0开始依次指定。
>>OutputIndex[number(int),optional,0 or More]->该从中扣除费用的输出索引号(vout)。如果提供多重输出,整个交易费用将会除以vout列表的大小,并从每个vout的条目中减去该数量。
>result[object,required,1]->创建的交易信息对象。
>>hex[string(hex),required,1]->以hex编码的未签名原始交易序列化交易数据。
>>fee[number(bitcoins),required,1]->交易支付的费用。
>>changepos[number(int),required,1]->添加的找零输出位置。如果没有添加任何找零输出,返回-1。
bitcoin-cli -testnet fundrawtransaction 01000000011da9283b4ddf8d\ 89eb996988b89ead56cecdc44041ab38bf787f1206cd90b51e0000000000ffff\ ffff01405dc600000000001976a9140dfc8bafc8419853b34d5e072ad37d1a51\ 59f58488ac00000000 '{
"changeAddress": "15gJiApWFGTN2iTteQwQbqasdT6dwGWwv6",
"changePosition" : 1,
"includeWatching" : false,
"lockUnspents" : true,
"feeRate" : 0.0001
}'
{
"hex":
"01000000011da9283b4ddf8d89eb996988b89ead56cecdc44041ab38bf787f1206cd90b51e0000
000000ffffffff01405dc600000000001976a9140dfc8bafc8419853b34d5e072ad37d1a5159f58488a
c00000000",
"fee": 0.0000245,
"changepos": 2
}

Generate

需要启用钱包支持。 立即创建一些区块。
@Blocks[number(int),required,1]->要生成的区块数量。该调用会等待直到所有区块被生成或者达到最大的迭代次数。
@Maxtries[number(int),optional,0 or 1]->尝试创建请求区块数量的最大迭代次数。默认为 1000000。
@result[array,required,1]->生成区块的区块头哈希值数组(如果与 generate 0 一起使用时,该数组为空值)。
>HeaderHashes[string(hex),required,1 or More]->以 hex 编码的 regtest 模式下生成的区块头哈希值。
bitcoin-cli -regtest generate 2 500000
[
"36252b5852a5921bdfca8701f936b39edeb1f8c39fffe73b0d8437921401f9af",
"5f2956817db1e386759aa5794285977c70596b39ea093b9eab0aa4ba8cd50c06"
]

GenerateToAddress

需要启用钱包支持。
在给定的地址生成挖出的区块。
@Blocks[number(int), required,1]->要生成的区块数量。该调用会等待直到所有区块被生成或者达到最大的迭代次数。
@Address[string(base58),required,1]->新生成的比特币发送到的地址,即接收地址。
@Maxtries[number(int),optional,0 or1]->试创建请求区块数量的最大迭代次数。默认为1000000。
@result[array,required,1]->生成区块的区块头哈希值数组(如果与 generate 0 一起使用时,该数组为空值)。
>HeaderHashes[string(hex),required,1 or More]->用 hex 编码的 regtest 模式下生成的区块头哈希值。
bitcoin-cli -regtest generatetoaddress 2 "1BRo7qrYHMPrzdBDzfjmzt\eBdYAyTMXW75" 500000
[
"36252b5852a5921bdfca8701f936b39edeb1f8c39fffe73b0d8437921401f9af",
"5f2956817db1e386759aa5794285977c70596b39ea093b9eab0aa4ba8cd50c06"
]

GetAccountAddress

需要启用钱包支持。
返回当前接收支付的帐户对应的比特币地址。如果帐户不存在,将会为同时创建一个帐户及接收支付的新地址。一旦一笔支付被一个地址接收,将来为该帐户使用这个接口的调用将会返回一个不同的地址。 这个 API 在以后的版本中将会被移除。
@Account[string,required,1]->帐户名。空字符串则使用默认帐号。如果帐户不存在则会自动创建一个新帐户。
@result[string(base58),required,1]->返回一个帐户对应的地址,该地址未接收过任何支
付。
bitcoin-cli -testnet getaccountaddress "
msQyFNYHkFUo4PG3puJBbpesvRCyRQax7r

GetAccount

需要启用钱包支持。
返回给定地址关联的帐户。
@Address[string(base58),required,1]->一个关联到指定帐户或默认帐户(空字符串)的 P2PKH 或 P2SH 地址。
@result[string,required,1]->帐户名,空字符串表示使用默认帐号。
bitcoin-cli -testnet getaccount mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN
doc test

GetAddedNodeInfo

返回指定或所有(onetry节点除外)添加节点的信息。只有手动添加的节点(调用addnode接口)才会有相应的信息。
@Details[bool,required,1]->为true时,返回所有新加节点的详细信息;为false时,仅显示添加的IP或主机地址及端口。
@Node[string,optional,0 or 1]->获取以''格式的节点信息。如果参数未提供,返回所有添加的节点。
@result[array,required,1]->返回描述新加节点信息的数组。如果没有新加的节点,数组将为空值。通过onetry添加的节点不会返回。
>AddedNode[object,optional,0 or More]->一个新加节点的详细信息对象。
>>addednode[string,required,1]->新加节点的以''格式表示的地址。无论@Details参数是否设置为true,该元素都会出现在添加的节点上。
>>connected[bool,optional,0 or 1]->如果@Details参数为true,且当前节点已经连接时该值为true,否则为false。
>>addresses[array,optional,0 or 1]->如果@Details参数为true,该值为关联到新加节点地址的数组。
>>>Address[object,optional, 0 or More]->描述该节点地址信息的对象。
>>>>address[string,required,1]->节点的IP地址和端口。如果该节点使用一个DNS地址,这里将会是已解析的IP地址。
  >>>>connected[string,required,1]->本地节点是否连接到使用当前IP地址的这个新加节点。有效的数值为:
*false->未连接。
*inbound->AddNode是否连接到我们这里。
*outbound->我们是否连接到AddNode。
bitcoin-cli getaddednodeinfo
[
{
"addednode" : "bitcoind.example.com:8333",
"connected" : true,
"addresses" : [
{
"address" : "192.0.2.113:8333",
"connected" : "outbound"
}
]
}
]

GetAddressesByAccount

需要启用钱包支持。
返回一个列表,包含分配给指定帐号的每个地址。
该接口将在后续的版本中移除。可参考 GetAccount、GetBalance 接口。
@Account[string,required,1]->帐户名,空字符串使用默认帐户地址。
@result[array,required,1]->返回一个属于指定帐户的所有地址数组。如果帐户不包含地址,该数组为空值。
>Address[string(base58),optional,1]->一个属于指定帐户的 P2PKH 或 P2SH 地址。
bitcoin-cli -testnet getaddressesbyaccount "doc test"
[
"mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN",
"mft61jjkmiEJwJ7Zw3r1h344D6aL1xwhma",
"mmXgiR6KAhZCyQ8ndr2BCfEq1wNG2UnyG6"
]

GetBalance

需要启用钱包支持。
获得所有帐户或指定帐户的比特币余额。
@Account[string,optional,0 or 1]->帐户名。空字符串则使用默认帐户;传入*(默认)会获取所有帐户的余额。
@Param2->最小数量的确认。
@Param3->是否包含仅监视地址。
@result[number(bitcoins),required,1]->返回指定帐户或所有帐户的比特币余额。
bitcoin-cli -testnet getbalance "test1" 1 true
1.99900000

GetBestBlockHash

返回最佳区块链上最近块的头部哈希。
@result[string,required,1]->以 hex 编码的最佳区块链上最近块的头部哈希值。
bitcoin-cli -testnet getbestblockhash
0000000000075c58ed39c3e50f99b32183d090aefa0cf8c324a82eea9b01a887

GetBlock

从本地区块链数据库中获取指定区块头哈希值的区块,该区块既以JSON对象或序列化的格式输出。
@HeaderHash[string(hex),required,1]->用hex编码的区块头哈希值。
@Format[number,optional,0 or 1 or2)->为0时,获取用序列化区块格式的区块数据; 为1时,获取解码成JSON对象的区块数据(默认值);为2时,获取解码成JSON对象(详细)的区块数据。
@result[string(hex)/null,required,1]->Format为0时,返回以hex编码序列化区块数据。失败返回空值。
result[object/null,required,1]->Format大于0时,以JSON表示的区块数据,失败返回空值。
>hash[string(hex),required,1]->用hex区块编码的区块头哈希值。与@HeaderHash 相同。
>confirmations[number(int),required,1]->该区块拥有的交易确认数量。在最佳区块链顶端时由1开始。如果值为-1,该区块不在最佳区块链中。
>size[number(int),required,1]->序列化区块的字节大小。
>strippedsize[number(int),required,1]->序列化区块的字节大小(不包括见证数据)。
>weight[number(int),required,1]->在BIP141中定义的区块权重。
>height[number(int),required,1]->该区块在区块链中的高度。
>version[number(int),required,1]->区块的版本号。
>versionHex[string,required,1]->用hex编码的区块版本号。
>merkleroot[string(hex),required,1]->用hex编码的包含由本区块所有交易构造的merkle树根。
>tx[array,required,1]->用hex编码的区块所有交易的TXID数组。
>>TXID[string(hex),required,1 or More]->用hex编码的交易ID。
>time[number(int),required,1]->区块头的时间字段,表示该区块大致的创建时间。
>mediantime[number(int),required,1]->区块中位时间(Unix)。
>nonce[number(int),required,1]->将此特定区块转换为可添加到最佳块链中的随机数。
>bits[string(hex),required,1]->挖矿难度,由全网决定,每2016个区块重新调整,调整算法固定。
>difficulty[real,required,1]->相对于为找到区块0所完成的估计工作量而估计的工作量。
>chainwork[string(hex),required,1]->矿工需要校验的从创世区块到当前区块的以hex编码的区块头哈希值估计数量。
>previousblockhash[string(hex),optional,0 or1]->用hex编码的上一个区块头的哈希值。创世区块不返回该值。
>nextblockhash[string(hex),optional,0 or 1]->在最佳区块链上用hex编码的下一个区块哈希值。
bitcoin-cli getblock \00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 \False
010000006fe28c0ab6f1b372c1a6a246ae63f74f931e8365e15a089c68d61900\ 00000000982051fd1e4ba744bbbe680e1fee14677ba1a3c3540bf7b1cdb606e8\ 57233e0e61bc6649ffff001d01e3629901010000000100000000000000000000\ 00000000000000000000000000000000000000000000ffffffff0704ffff001d\ 0104ffffffff0100f2052a0100000043410496b538e853519c726a2c91e61ec1\ 1600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781\ e62294721166bf621e73a82cbf2342c858eeac00000000
bitcoin-cli getblock \00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048
{
"hash":
"00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048",
"confirmations": 447014,
"strippedsize": 215,
"size": 215,
"weight": 860,
"height": 1,
"version": 1,
"versionHex": "00000001",
"merkleroot":"0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098",
"tx": [
"0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098"
],
"time": 1231469665,
"mediantime": 1231469665,
"nonce": 2573394689,
"bits": "1d00ffff",
"difficulty": 1,
"chainwork":"0000000000000000000000000000000000000000000000000000000200020002",
"previousblockhash":"000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",
"nextblockhash":"000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd"
}

GetBlockChainInfo

返回区块链当前状态信息。
@result[object,required,1]->本地区块链当前状态信息。
>chain[string,required,1]->区块链名称(main主链,test测试链,regtest私有测试链中)。
>blocks[number(int),required,1]->本地最佳区块链中上有效的区块数量。对于一个仅有创世区块的新节点,该值为0。
>headers[number(int),required,1]->本地最佳区块链中有效的区块头数量。对于一个仅有创世区块的新节点,该值为0。该值可能比区块的数量大。
>bestblockhash[string(hex),required,1]->用hex编码的本地最佳区块链中上最高区块的哈希值。与getbestblockhash的返回字符串相同。
>difficulty[number(real),required,1]->本地最佳区块链中上最高高度区块的难度。
>mediantime[number(int),required,1]->最近11个区块的中位时间。用于在BIP113下验证交易锁定时间。
>verificationprogress[number(real),required,1]->估算当前已验证的区块链交易数据的百分比(0.0-1.0)。在完全同步时,可能稍微超过1.0,以说明在内存池中已包含在区块中之前已验证的交易。
>chainwork[string(hex),required,1]->以big-endian hex编码的从创世区块到当前区块验证区块头哈希值的估计数量。
>pruned[bool,required,1]->区块是否需要修剪。
>pruneheight[int,required,0 or 1]->pruned启用时,存储最低高度完整区块。
>softforks[array,required,1]->一个用来分别描述当前或之前软分叉的数组。
>>Softfork[object,required,3 or More]->其中一个软分叉。
>>>id[string,required,1]->分支名称。
>>>version[number(int),required,1]->软分叉使用的区块版本。
>>>enforce[string:object,optional,0 or 1]->软分叉实施新版本区块规则的进度。
>>>>status[bool,required,1]->是否达到阈值。
>>>>found[number(int),optional,0 or 1]->支持软分叉的区块数量。
>>>>required[number(int),optional,0 or 1]->达到阈值需要的区块数量。
>>>>window[number(int),optional,0 or 1]->最近区块的检测窗口的最大数量。
>bip9_softforks[object,required,1]->BIP9软分叉状态。
>>Name[string:object,required,2 or More]->指定的BIP9软分叉数据。
>>>status[string,required,1]->有以下选项:
*defined->如果投票还未开始。
*started->如果投票已经开始。
*locked_in->如果投票成功但软分叉未启用。
*active->如果软分叉已启用。
*failed->如果软分叉未收到足够投票。
>>>bit[number(int),optional,0 or 1]->区块version字段的0-28位用来表示此软分叉。字段仅在@status为started时显示。
>>>startTime[number(int),required,1]->软分叉开始投票的时间(Unix)。
>>>timeout[number(int),required,1]->如果尚未锁定,认为部署失败的时间(Unix)。
>>>since[number(int),required,1]->状态应用的第一个区块高度。
bitcoin-cli getblockchaininfo
{
"chain": "main",
"blocks": 464562,
"headers": 464562,
"bestblockhash":"00000000000000000085bd56990c579a36bade6ea427646612f13476edb30ceb",
"difficulty": 521974519553.6282,
"mediantime": 1493758169,
"verificationprogress": 0.999989733170878,
"chainwork": "00000000000000000000000000000000000000000052c26f32ffa22706efd28c",
"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": "started",
"bit": 1,
"startTime": 1479168000,
"timeout": 1510704000,
"since": 439488
}
}
}

GetBlockCount

返回在本地最佳区块链的区块数量。
@result[number(int),required,1]->本地最佳区块链的区块数量。对于一个仅有创世区块的新节点,该值为 0。
bitcoin-cli -testnet getblockcount
315280

GetBlockHash

返回本地最佳区块链指定高度的区块头哈希值。
@BlockHeight[number(int),required,1]->指定的区块高度,硬编码的创世区块高度为 0。
@result[string(hex)/null,required,1]->用 hex 编码的指定高度区块头的哈希值。出错返回空值。
bitcoin-cli -testnet getblockhash 240886
00000000a0faf83ab5799354ae9c11da2a2bd6db44058e03c528851dee0a3fff

GetBlockHeader

根据给定的哈希值从本地区块链数据库中获取一个区块头信息,该值可以为JSON对象或序列化区块头数据。
@HeaderHash[string(hex),required,1]->要查找的以hex编码的区块头哈希值。
@Format[bool,optional,0 or 1]->为false时,返回一个序列化区块头信息;为true(默认值)时,返回以JSON表示的解码后的区块头数据。
@result[string(hex)/null,required,1]->用hex编码的序列化区块头。出错时返回空值。
result[object/null,required,1]->JSON格式的区块信息。出错时返回空值。
>hash[string(hex),required,1]->区块头哈希值,与@HeaderHash相同。
>confirmations[number(int),required,1]->该区块拥有的交易确认数量。在最佳区块链顶端时由1开始。如果值为-1,该区块不在最佳区块链中。
>height[number(int),required,1]->该区块在区块链中的高度。
>version[number(int),required,1]->区块的版本号。参考block version numbers。
>versionHex[string(hex),required,1]->用hex编码的区块版本号。参考block version numbers。
>merkleroot[string(hex),required,1]->用hex编码的区块MerkleRoot。
>time[number(int),required,1]->区块头的time字段,表示该区块大致的创建时间。
>mediantime[number(int),required,1]->最近11个区块的中位时间。用于在BIP113下验证交易锁定时间。
>nonce[number(int),required,1]->一个可将此特定区块转换为可添加到最佳块链中的一次性随机数。
>bits[string(hex),required,1]->区块头的nBits字段值,表示该区块头必须通过的目标阈值。
>difficulty[number(real),required,1]->相对于为找到区块0估计的工作量而估计的工作量。
>chainwork[string(hex),required,1]->以big-endian hex编码的从创世区块到当前区块验证区块头哈希值的估计数量。
>previousblockhash[string(hex),optional,0 or1]->用hex编码的上一个区块头的哈希值。创世区块不返回该值。
>nextblockhash[string(hex),optional,0 or 1]->在最佳区块链上用hex编码的下一个区块的哈希值。
bitcoin-cli -testnet getblockheader \00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09 \False
010000007de867cc8adc5cc8fb6b898ca4462cf9fd667d7830a275277447e608\
00000000338f121232e169d3100edd82004dc2a1f0e1f030c6c488fa61eafa93\
0b0528fe021f7449ffff001d36b4af9a
bitcoin-cli -testnet getblockheader \00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09
{ "hash":
"00000000c937983704a73af28acdec37b049d214adbda81d7e2a3dd146f6ed09",
"confirmations": 437926,
"height": 1000,
"version": 1,
"versionHex": "00000001",
"merkleroot":
"fe28050b93faea61fa88c4c630f0e1f0a1c24d0082dd0e10d369e13212128f33",
"time": 1232346882,
"mediantime": 1232344831,
"nonce": 2595206198,
"bits": "1d00ffff",
"difficulty": 1,
"chainwork":
"000000000000000000000000000000000000000000000000000003e903e903e9",
"previousblockhash":
"0000000008e647742775a230787d66fdf92c46a48c896bfbc85cdc8acc67e87d",
"nextblockhash":
"00000000a2887344f8db859e372e7e4bc26b23b9de340f725afbf2edb265b4c6"
}

GetBlockTemplate

获 取 用 于 采 矿 软 件 的 块 模 板 或 建 议 。 获 取 更 多 信 息 , 可 参 考 Bitcoin Wiki
GetBlockTemplate、BIP22、BIP23。

GetChainTips

返回关于每个本地区块链的最高高度区块的信息。
@result[array,required,1]->返回区块链最高高度区块头信息的数组,至少包含一个本地最佳区块链。
>Tip[object,required,1 or More]->某条区块链最高区块头信息。第一个一般是描述活动区块链(本地最佳区块链)。
>>height[number(int),required,1]->该链的最高高度值。对于仅有创世区块的新节点,该值为0。
>>hash[string(hex),required,1]->该链上以hex编码的最高高度区块哈希值。
>>branchlen[number(int),required,1]->在该链上而不在主链上的区块数。对于本地最佳区块链,该值为0;其它链至少为1。
>>status[string,required,1]->链的状态。有以下选项:
*active->该链为本地最佳区块链。
*invalid->该链包含一个或多个无效区块。
*headers-only->对于具有有效区块头的链,其对应的区块未存储在本地,也未被验证。
*valid-headers->对于具有有效区块头的链,其对应的区块存储在本地,但未被验证。
*valid-fork->对于一个已经被验证的链,它还不是本地最佳区块鉫的一部分(在一些点上可能是本地最佳区块链)。
*unknown->对于一个没有成为活跃链的原因尚不清楚。
bitcoin-cli -testnet getchaintips
[
{
"height" : 312647,
"hash" : "000000000b1be96f87b31485f62c1361193304a5ad78acf47f9164ea4773a843",
"branchlen" : 0,
"status" : "active"
},
{
"height" : 282072,
"hash" : "00000000712340a499b185080f94b28c365d8adb9fc95bca541ea5e708f31028",
"branchlen" : 5,
"status" : "valid-fork"
},
{
"height" : 281721,
"hash" : "000000006e1f2a32199629c6c1fbd37766f5ce7e8c42bab0c6e1ae42b88ffe12",
"branchlen" : 1,
"status" : "valid-headers"
},
]

GetConnectionCount

返回到其它节点的连接数量。
@result[number(int),required,1]->返回到其它节点的连接数量(包括所有内外连接)。
bitcoin-cli -testnet getconnectioncount
14

GetDifficulty

返回当前难度值。
@result[number(real),required,1]->创建具有与本地最佳块链中最高高度区块相同目标阈值(nBits)的区块的难度值。这个数字是最小难度的倍数。
bitcoin-cli -testnet getdifficulty
1.00000000

GetGenerate

该接口已被移除。如果使用旧版本的 BitcoinCore,使用 help getgenerate 获取帮助。

GetHashesPerSec

该接口已被移除。如果使用旧版本的 BitcoinCore,使用 help getgenerate 获取帮助。

GetInfo

返回关于节点和网络的各种信息。
该接口将会在后续版本移除。参考GetBlockChainInfo、GetMemPoolInfo、GetMiningInfo、GetNetworkInfo、GetWalletInfo。
@result[object,required,1]->关于节点和网络的信息。
>version[number(int),required,1]->节点的BitcoinCore版本号。如BitcoinCore 0.9.2的版本号为90200。
>protocolversion[number(int),required,1]->这个节点使用的协议版本号。参考protocol versions section获取更多信息。
>walletversion[number(int),optional,0 or 1]->钱包版本号。仅在启用钱包支持时返回。
>balance[number(bitcoins),optional,0 or 1]->钱包余额。仅在启用钱包支持时返回。
>blocks[number(int),required,1]->本地最佳区块链的区块数量。只有硬编码创世区块的新节点值为0。
>timeoffset[number(int),required,1]->以秒表示的节点时间(UTC)与计算机时间(UTC)的差值。该值最大可以4200秒。
>connections[number(int),required,1]->该节点与其它节点打开的连接(双向)总数。
>proxy[string,required,1]->以''表示的代理。空字符串则表示未设置。
>difficulty[number[real],required,1]->最佳区块链的最高高度区块的难度值。
>testnet[bool,required,1]->为true表示节点是测试网;false表示节点是主网或私有测试网。
>keypoololdest[number(int),optional,0 or 1]->钱包中最早生成的密钥的创建时间(Unix)。仅用于扫描自此日期以来创建的交易块。仅在钱包支持启用时返回。
>keypoolsize[number(int),optional,0 or 1]->密钥池中的密钥数量。仅在钱包支持启用时返回。
>paytxfee[number(bitcoins),optional,0 or 1]->最少的每千字节交易费率,可以为0。仅在钱包支持启用时返回。
>relayfee[number(bitcoins),required,1]->一个低优化级交易被接受到MemPool的最少交易费用。
>unlocked_until[number(int),optional,0 or 1]->钱包自动上锁的时间(Unix)。仅在钱包已加密时显示。为0时表示当前钱包已上锁。
 >errors[string,required,1]->该节点遇到或检测到的任何错误的纯文本描述。如果没有错误则返回一个空字符串。该字段与JSON-RPC的error字段无关。
bitcoin-cli -testnet getinfo
{
"version" : 100000,
"protocolversion" : 70002,
"walletversion" : 60000,
"balance" : 1.27007770,
"blocks" : 315281,
"timeoffset" : 0,
"connections" : 9,
"proxy" : "",
"difficulty" : 1.00000000,
"testnet" : true,
"keypoololdest" : 1418924649,
"keypoolsize" : 101,
"paytxfee" : 0.00000000,
"relayfee" : 0.00001000,
"errors" : ""
}

GetMemoryInfo

返回内存使用相关信息。
@result[object,required,1]->内存使用相关信息对象。
>locked[string:object,required,1]->锁定的内存管理器相关信息
>>used[number(int),required,1]->使用的字节数。
>>free[number(int),required,1]->当前可使用的字节数。
>>total[number(int),required,1]->管理的字节总数。
>>locked[number(int),required,1]->成功锁定的字节数。
>>chunks_used[number(int),required,1]->分配的内存块数量。
>>chunks_free(number(int),required,1]->未使用的内存块数量。
bitcoin-cli getmemoryinfo
{
"locked": {
"used": 0,
"free": 65536,
"total": 65536,
"locked": 65536,
"chunks_used": 0,
"chunks_free": 1
}
}

GetMemPoolAncestors

返回MemPool中指定交易的所有父交易。
@Address[string,required,1]->要追踪的交易地址。
@Format[bool,optional, 0 or 1]->为true时,返回以JSON表示的内存池中的交易数据;为false(默认值),只返回TXID数组。
@result[array,required,1]->MemPool中指定交易的TXID数组。
>TXID[string,optional,0 or More]->以hex编码的在内在池中的交易ID。
result[object,required,1]->内存池中的交易数据数组。可能为空值。
>>TXID[string:object,optional,0 or More]->以hex编码的在内在池中的交易ID。
>>size[number(int),required,1]->序列化的交易数据字节大小。
>>fee[number(bitcoins),required,1]->交易费用。
>>modifiedfee[number(bitcoins),required,1]->挖矿优先权的交易费用。
>>time[number(int),required,1]->交易进入内存池的时间(Unix)。
>>height[number(int),required,1]->交易进入内存池时的区块高度。
>>startingpriority[number(int),required,1]->交易第一次进入内存池时的优先级。
>>currentpriority[number(int),required,1]->交易当前优先级。
>>descendantcount[number(int),required,1]->内存池中的子交易数量(包括此项)。
>>descendantsize[number(int),required,1]->内存池中的子交易字节大小(包括此项)。
>>descendantfees[number(int),required,1]->内存池中的子交易的找零费用(包括此项)。
>>ancestorcount[number(int),required,1]->内存池中的父交易数量。
>>ancestorsize[number(int),required,1]->内存池中的父交易字节大小。
>>ancestorfees[number(int),required,1]->存池中的父交易的找零费用(包括此项)。
>>depends[array,required,1]->一个包含未确认交易(此交易取决于父交易)TXID的数组。这些交易在当前交易能添加到区块之前,必须是区块的一部分,尽管所有交易可能被包含到同一个区块。该数组可能为空值。
>>>DependsTXID[string,optional,0 or More]->以hex编码的此交易所依赖的任何未确认交易的TXID。
bitcoin-cli getmempoolancestors 52273e0ce6cf3452932cfbc1c517c0ce\1af1d255fda67a6e3bd63ba1d908c8c2
[
"b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873",
"094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4"
]
bitcoin-cli getmempoolancestors 52273e0ce6cf3452932cfbc1c517c0ce\1af1d255fda67a6e3bd63ba1d908c8c2 true
{
"b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873": {
"size": 485,
"fee": 0.00009700,
"modifiedfee": 0.00009700,
"time": 1479423635,
"height": 439431,
"startingpriority": 15327081.81818182,
"currentpriority": 21536936.36363636,
"descendantcount": 1,
"descendantsize": 485,
"descendantfees": 9700,
"ancestorcount": 1,
"ancestorsize": 485,
"ancestorfees": 9700,
"depends": [
]
},
"094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4": {
"size": 554,
"fee": 0.00005540,
"modifiedfee": 0.00005540,
"time": 1479423327,
"height": 439430,
"startingpriority": 85074.91071428571,
"currentpriority": 3497174.4375,
"descendantcount": 1,
"descendantsize": 554,
"descendantfees": 5540,
"ancestorcount": 1,
"ancestorsize": 554,
"ancestorfees": 5540,
"depends": [
]
}
}

GetMemPoolDescendants

返回MemPool中指定交易的所有父交易。
@Address[string,required,1]->要追踪的交易地址。
@Format[bool,optional,0 or 1]->为true时,返回以JSON表示的内存池中的交易数据;为false(默认值)时,只返回TXID数组;
@result[array,required,1]->emPool中指定交易的TXID数组。
>TXID[string,optional,0 or More]->在MemPool中以hex编码的交易TXID。
result[object,required,1]->内存池中的交易数据数组。可能为空值。
>>TXID[string:object,optional,0 or More]->以hex编码的在内在池中的交易ID。
>>size[number(int),required,1]->序列化的交易数据字节大小。
>>fee[number(bitcoins),required,1]->交易费用。
>>modifiedfee[number(bitcoins),required,1]->挖矿优先权的交易费用。
>>time[number(int),required,1]->交易进入内存池的时间(Unix)。
>>height[number(int),required,1]->交易进入内存池时的区块高度。
>>startingpriority[number(int),required,1]->交易第一次进入内存池时的优先级。
>>currentpriority[number(int),required,1]->交易当前优先级。
>>descendantcount[number(int),required,1]->内存池中的子交易数量(包括此项)。
>>descendantsize[number(int),required,1]->内存池中的子交易字节大小(包括此项)。
>>descendantfees[number(int),required,1]->内存池中的子交易的找零费用(包括此项)。
>>ancestorcount[number(int),required,1]->内存池中的父交易数量。
>>ancestorsize[number(int),required,1]->内存池中的父交易字节大小。
>>ancestorfees[number(int),required,1]->存池中的父交易的找零费用(包括此项)。
>>depends[array,required,1]->一个包含未确认交易(此交易取决于父交易)TXID的数组。这些交易在当前交易能添加到区块之前,必须是区块的一部分,尽管所有交易可能被包含到同一个区块。该数组可能为空值。
>>>DependsTXID[string,optional,0 or More]->以hex编码的此交易所依赖的任何未确认交易的TXID。
bitcoin-cli getmempooldescendants 52273e0ce6cf3452932cfbc1c517c0\ce1af1d255fda67a6e3bd63ba1d908c8c2
[
"b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873",
"094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4"
]
bitcoin-cli getmempooldescendants 52273e0ce6cf3452932cfbc1c517c0\ce1af1d255fda67a6e3bd63ba1d908c8c2 true
{
"b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873": {
"size": 485,
"fee": 0.00009700,
"modifiedfee": 0.00009700,
"time": 1479423635,
"height": 439431,
"startingpriority": 15327081.81818182,
"currentpriority": 21536936.36363636,
"descendantcount": 1,
"descendantsize": 485,
"descendantfees": 9700,
"ancestorcount": 1,
"ancestorsize": 485,
"ancestorfees": 9700,
"depends": [
]
},
"094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4": {
"size": 554,
"fee": 0.00005540,
"modifiedfee": 0.00005540,
"time": 1479423327,
"height": 439430,
"startingpriority": 85074.91071428571,
"currentpriority": 3497174.4375,
"descendantcount": 1,
"descendantsize": 554,
"descendantfees": 5540, "ancestorcount": 1,
"ancestorsize": 554,
"ancestorfees": 5540,
"depends": [
]
}
}

GetMemPoolEntry

根据给定的交易(必须在MemPool中),返回内存池数据。
@Address[string,required[1]->要追踪的交易地址。
@result[object,required,1]->当前在内存池的交易数据。可能为空值。
>size[number(int),required,1]->序列化的交易数据字节大小。
>fee[number(bitcoins),required,1]->交易费用。
>modifiedfee[number(bitcoins),required,1]->挖矿优先权的交易费用。
>time[number(int),required,1]->交易进入内存池的时间(Unix)。
>height[number(int),required,1]->交易进入内存池时的区块高度。
>startingpriority[number(int),required,1]->交易第一次进入内存池时的优先级。
>currentpriority[number(int),required,1]->交易当前优先级。
>descendantcount[number(int),required,1]->内存池中的子交易数量(包括此项)。
>descendantsize[number(int),required,1]->内存池中的子交易字节大小(包括此项)。
>descendantfees[number(int),required,1]->内存池中的子交易的找零费用(包括此项)。
>ancestorcount[number(int),required,1]->内存池中的父交易数量。
>ancestorsize[number(int),required,1]->内存池中的父交易字节大小。
>ancestorfees[number(int),required,1]->存池中的父交易的找零费用(包括此项)。
>depends[array,required,1]->一个包含未确认交易(此交易取决于父交易)TXID的数组。这些交易在当前交易能添加到区块之前,必须是区块的一部分,尽管所有交易可能被包含到同一个区块。该数组可能为空值。
>>DependsTXID[string,optional,0 or More]->以hex编码的此交易所依赖的任何未确认交易的TXID。
bitcoin-cli getmempoolentry 52273e0ce6cf3452932cfbc1c517c0ce1af1\
d255fda67a6e3bd63ba1d908c8c2
{
"size": 485,
"fee": 0.00009700,
"modifiedfee": 0.00009700,
"time": 1479423635,
"height": 439431,
"startingpriority": 15327081.81818182,
"currentpriority": 21536936.36363636,
"descendantcount": 1,
"descendantsize": 485,
"descendantfees": 9700,
"ancestorcount": 1,
"ancestorsize": 485,
"ancestorfees": 9700,
"depends": [
]
}

GetMemPoolInfo

返回节点在当前交易的内存池信息。
@result[object,required,1]->内存池信息对象。
>size[number(int),required,1]->当前内存池中交易的数量。
>bytes[number(int),required,1]->内存池中所有交易的总字节数。
>usage[number(int),required,1]->内存池中内存使用总字节数。
>maxmempool[number(int),required,1]->内存池中最大可使用字节数。
>mempoolminfee[number(int),required,1]->内存池中每千字节最低交易费。
bitcoin-cli -testnet getmempoolinfo
{
"size": 1237,
"bytes": 591126,
"usage": 1900416,
"maxmempool": 300000000,
"mempoolminfee": 0.00000000
}

GetMiningInfo

返回挖矿相关信息。
@result[object,required,1]->挖矿相关信息。
>blocks[number(int),required,1]->本地最佳区块链的最高高度。
>currentblocksize[number(int),required,1]->如果此节点自上次重新启动以来启用了生成,则这是此节点为区块头哈希检查而构建的最后一个块的字节大小。否则该值为0。
>currentblocktx[number(int),required,1]->如果此节点自上次重新启动以来启用了生成,则这是此节点为区块头哈希检查而构建的最后一个块的交易数量。否则该值为0。
>difficulty[number[real],required,1]->如果此节点自上次重新启动以来启用了生成,则这是本地最佳区块链最高高度区块的难度值。否则该值为0。
>errors[string,required,1]->该节点遇到或检测到的任何错误的纯文本描述。如果没有错误,返回空字符串。该字段与JSON-RPC的error字段无关。
>genproclimit[number(int),required,1]->用于生成需要的处理器数量的限制。如果此节点自上次重新启动以来启用了生成,则这是在setgenerate调用的第二个参数(或默认值)中使用的数字。否则该值为-1。
>networkhashps[number(int),required,1]->估计网络每秒产生的哈希数以维持当前的难度。 请参阅getnetworkhashps以配置访问此数据。
>pooledtx[number(int),required,1]->MemPool中的交易数量。
>testnet[bool,required,1]->为true时,当前节点运行在测试网络;为false时,当前节点为主网络或私有测试网络。
>chain[string,required,1]->main为主网络,test为测试网络,regtest为私有测试网络。
>generate[bool,optional,0 or 1]->为true时启用生成;为false时关闭生成。仅在启用钱包支持时返回。
>hashespersec[number(int),optional,0 or 1]->在启用生成时,当前节点通过CPU每秒生成哈希值的大致数量;否则为0。需要启用钱包支持。
bitcoin-cli getmininginfo
{
"blocks": 464545,
"currentblocksize": 0,
"currentblockweight": 0,
"currentblocktx": 0,
"difficulty": 521974519553.6282,
"errors": "",
"networkhashps": 4.126888339085874e+18,
"pooledtx": 31241,
"chain": "main"
}

GetNetTotals

返回有关网络流量的信息,包括输入字节,输出字节和当前时间。
@result[object,required,1]->有关网络流量的信息。
>totalbytesrecv[number(int),required,1]->节点重启后接收的总字节数。
>totalbytessend[number(int),required,1]->节点重启后发送的总字节数。
>timemillis[number(int),required,1]->以毫秒表示的系统时间(Unix),不是节点调整时间。
>uploadtarget[string:object,required,1]->上行目标信息。
>>timeframe[number(int),required,1]->测量时间范围的长度(秒)。时间目前设定为24小时。
>>target[number(int),required,1]->允许的最大出站流量。默认为0.可通过-maxuploadtarget参数修改。
>>target_reached[bool,required,1]->表示是否达到目标。 如果达到目标,节点将不再响应SPV和历史区块请求。
>>serve_historical_blocks[bool,required,1]->响应历史区块服务是否启用。
>>bytes_left_in_cycle[number(int),required,1]->当前时间周期剩余字节数。如果没有上传目标,该值为0。
>>time_left_in_cycle[number(int),required,1]->当前时间周期剩余秒数。如果没有上传目标,该值为0。
bitcoin-cli getnettotals
{
"totalbytesrecv": 7137052851,
"totalbytessent": 211648636140,
"timemillis": 1481227418585,
"uploadtarget": {
"timeframe": 86400,
"target": 0,
"target_reached": false,
"serve_historical_blocks": true,
"bytes_left_in_cycle": 0,
"time_left_in_cycle": 0
}
}

GetNetworkHashPS

根据当前或历史网络,估算最近n个区块每秒哈希数。
@Blocks[number(int),optional,0 or 1]->计算每秒估计散列数的块数。默认是120。该值为-1时,表示平均所从上次难度调整后的所有区块。
@Height[number(int),optional,0 or 1]->用来计算最近区块高度的平均值。默认-1使用本地最佳区块连。如果指定高度比本地最佳区块链的最高高度还高,它将被解释为-1。
@result[number(int),required,1]->根据参数估算的每秒哈希次数。可能为0(区块高度为0时,即创世区块);如果最高高度区块平均具有早于最低高度区块平均的区块头时间,则可以为负值。
bitcoin-cli -testnet getnetworkhashps -1 227255
79510076167

GetNetworkInfo

返回节点的连接信息。
@result[object,required,1]->节点的连接信息。
>version[number,required,1]->节点的BitcoinCore版本信息。如BitcoinCore 0.9.2的版本号为90200。
>subversion[string,required,1]->此节点在其version消息中发送的用户代理。
>protocolversion[number(int),required,1]->此节点使用的协议版本号。参考protocol versions section获取更多信息。
>localservices[string(hex),required,1]->version消息中描述的此节点支持的服务。
>localrelay[bool,required,1]->在version消息中描述的此节点支持的服务。
>timeoffset[number(int),required,1]->此节点的时间(UTC)与计算机时间(UTC)的时间差(秒)。该值最大可为4200秒。
>connections[number(int),required,1]->当前节点与其它节点所有打开的连接(包括该节点与其它节点所有的输入输出)。
>networks[array,required,1]->该数组包含三个对象,一个是描述IPv4连接,一个是描述IPv6连接以及一个是描述Tor hidden service(onion)连接。
>>Network[object,optional,0 to 3]->描述的网络对象。如果网络不可路由,则不会返回。
>>>name[string,required,1]->网络名称,可以是IPv4,IPv6或者onion。
>>>limited[bool,required,1]->根据-onlynet、Bitcoin Core命令行/配置文件参数的值,表示允许连接到当前网络,设置为true;否则,设置为false。
>>>reachable[bool,required,1]->如果网络可达,则设置为true。否则设置为false。
>>>proxy[string,required,1]->该网络使用的以''格式的代理。如果未使用代理,则设置为空字符串。
>>>proxy_randomize_credentials[bool,required,1]->如果为此代理设置了随机凭据,则设置为true。否则设置为false。
>relayfee[number(bitcoins),required,1]->低优先级交易被接收到该节点到内存池中必须支付的最少费用。
>localaddress[array,required,1]->当前节点可信任监听一个描述本地地址。
>>Address[object,optional,0 or More]->此节点认为它正在监听的某个地址描述信息。
>>>address[string,required,1]->地址,该值可以通过手动配置自动检测到,或从跟它配对的节点获取version消息取得。
>>>port[number(int),required,1]->端口号,该值可以通过手动配置自动检测到,或从跟它配对的节点获取version消息取得。
>>>score[number(int),required,1]->此节点在其version消息中使用此地址在正常运行期间的传入连接数。
>>>warnings[string,required,1]->纯文本的网络警告信息。如果没有警告信息,该值为空。
bitcoin-cli getnetworkinfo
{
"version": 130100,
"subversion": "/Satoshi:0.13.1/",
"protocolversion": 70014,
"localservices": "000000000000000d",
"localrelay": true,
"timeoffset": -19,
"connections": 8,
"networks": [
{
"name": "ipv4",
"limited": false,
"reachable": true,
"proxy": "",
"proxy_randomize_credentials": false
},
{
"name": "ipv6",
"limited": false,
"reachable": true,
"proxy": "",
"proxy_randomize_credentials": false
},
{
"name": "onion",
"limited": true,
"reachable": false,
"proxy": "",
"proxy_randomize_credentials": false
}
],
"relayfee": 5000.00000000,
"localaddresses": [
{
"address": "0600:3c03::f03c:91ff:fe89:dfc4",
"port": 8333,
"score": 4
}
],
"warnings": ""
}

GetNewAddress

返回一个用于接收支付的新比特币地址。如果帐户被指定,通过地址收到的付款将记入该帐户。
@Account[string,optional,0 or 1]->帐户名。如果为空字符串,则使用默认帐户。
@result[string(base58),required,1]->返回一个未使用过的P2PKH地址。该地址在钱包内将被标记为接收地址。该地址可能已经是KeyPool的一部分,因此其它RPC接口(如dumpwallet)可能已经在之前披露过它。如果钱包已经解锁,它的keypool将会被填充到它的最大钥匙数量(默认为100未使用key)。如果钱包已经锁定且keypool是空的,该调用返回失败。
bitcoin-cli -testnet getnewaddress "doc test"
mft61jjkmiEJwJ7Zw3r1h344D6aL1xwhma

GetPeerInfo

返回每个连接的网络节点数据。
@Result[array,required,1]->描述连接节点的数组。如果没有连接,该数组为空。
>Node[object,optional,0 or More]->某个连接节点的描述信息。
>>id[number(int),required,1]->在本地节点地址数据库中的节点索引号。
>>addr[string,required,1]->远程节点连接的IP地址和商品号。
>>addrlocal[string,optional,0 or 1]->根据远程节点我们的IP地址和端口号。 由于错误或欺诈可能会不正确。大多数SPV节点设置成127.0.0.1:8333。
>>services[string(hex),required,1]->远程节点的version消息中通告的服务。
>>lastsend[number(int),required,1]->此节点最近一次成功发送数据到的时间(Unix)。
>>lastrecv[number(int),required,1]->此节点最近一次成功接收数据的时间(Unix)。
>>bytessend[number(int),required,1]->此节点总共发送的字节数。
>>bytesrecv[number(int),required,1]->此节点总共接收的字节数。
>>conntime[number(int),required,1]->我们连接到该节点的时间(Unix)。
>>timeoffset[number(int),required,1]->以秒为单位的时间偏移值。
>>pingtime[number(real),required,1]->响应最近一次P2P ping消息的时间(秒)。
>>minping[number(real),optional,1]->观察到的最短ping时间(如果有的话)。
>>pingwait(number(real),optional,1]->此节点响应一个P2P ping消息需要等待的时间(秒)。只有出现突出的ping消息时才显示。
>>version[number(int),required,1]->该节点使用的协议版本号。
>>subver[string,required,1]->此节点在其version消息中发送的用户代理。 该字符串已被清理以防止损坏JSON结果,可能是空字符串。
>>inbound[bool,required,1]->当此节点连接到我们,为true;如果我们连接到此节点,为false。
>>startingheight[number(int),required,1]->正如在version消息所报告的,连接到我们的远程节点的区块链高度。
>>banscore[number(int),required,1]->我们根据所做的任何不当行为来分配节点的禁令分数。 默认情况下,比特币核心在禁令分数达到100时断开连接。
>>synced_headers[number(int),required,1]->根据此节点发送给我们的最后一个P2P headers消息,我们与该节点有相同的最高高度区块头。如果没有收到headers消息,则会将其设置为-1。
>>synced_blocks[number(int),required,1]->根据此节点发送给我们的最后一个P2P inv消息,我们与该节点有相同的最高高度区块。如果没有收到inv消息,则会将其设置为-1。
>>inflight[array,required,1]->已从该对等方请求的区块数组。 可能是空值。
>>>blocks[number(int),optional,0 or More]从远程对等方请求的块的高度。
>>whitelisted[bool,required,1]->如果远程节点已被列入白名单,则设置为true; 否则,设置为false。如果他们的禁令分数超过最大值(默认为100),白名单的同伴将不会被禁止。默认情况下,从本地主机连接的对等端会被列入白名单。 >>bytessend_per_msg[string:object,required,1]->按消息类型汇总的总发送字节数信息。
>>>MessageType[number(int),required,1 or More]->按消息类型汇总的总发送字节数。每个使用的消息类型都有一个字段。
>>bytesrecv_per_msg[string:object,required,1]->按消息类型汇总的总接收字节数信息。
>>>MessageType[number(int),required,1 or More]->按消息类型汇总的总接收字节数。每个使用的消息类型都有一个字段。
bitcoin-cli getpeerinfo
[
{
"id": 3,
"addr": "192.0.2.113:43132",
"addrlocal": "127.0.0.1:8333",
"services": "0000000000000000",
"relaytxes": true,
"lastsend": 1481158534,
"lastrecv": 1481158534,
"bytessent": 142772,
"bytesrecv": 14167,
"conntime": 1481158420,
"timeoffset": 11,
"pingtime": 0.226368,
"minping": 0.226368,
"version": 70001,
"subver": "/Satoshi:0.12.1/",
"inbound": true,
"startingheight": 0,
"banscore": 0,
"synced_headers": -1,
"synced_blocks": -1,
"inflight": [
],
"whitelisted": false,
"bytessent_per_msg": {
"addr": 55,
"inv": 12161,
"ping": 32,
"pong": 1824,
"tx": 128549,
"verack": 24,
"version": 127
},
"bytesrecv_per_msg": {
"getdata": 12161,
"ping": 1824,
"pong": 32,
"verack": 24,
"version": 126
}
}
]

GetRawChangeAddress

需要钱包支持。
返回一个新的比特币地址用于接收更改。 这用于原始交易,而不是正常使用。
@Result(string(base58),required,1]->一个未返回过的P2PKH地址。该地址从会KeyPool移除但不会标记成一个接收地址,因此dumpwallet调用会将它作为一个修改地址。该地址已经是KeyPool的一部分,因此其它RPC(如dumpwallet)可能已经在之前披露过它。如果钱包未上锁,它的KeyPool中key的数量将会填充到最大值(默认100个未使用过的key)。如果钱包已经锁定并且它的KeyPool是空的,该调用将会失败。
bitcoin-cli -testnet getrawchangeaddress
mnycUc8FRjJodfKhaj9QBZs2PwxxYoWqaK

GetRawMemPool

以JSON数组返回所有MemPool所有交易的TXID或者详细信息。
@Format[bool,optional,0 or 1]->为true时,返回MemPool中每个交易详细输出描述信息;为false时,仅返回MemPool所有交易的TXID数组。
@result[object,required,1]->当前内存池中一个交易的数据,可能为空值。
>Params->参考GetMemPoolAncestors。
Result[array,required,1]->交易的TXID。如果内存池中没有交易,则返回空值。
>TXID[string,optional,0 or More]->以hex编码的交易ID。
>size[number(int),required,1]->序列化的交易数据字节大小。
>fee[number(bitcoins),required,1]->交易费用。
>modifiedfee[number(bitcoins),required,1]->挖矿优先权的交易费用。
>time[number(int),required,1]->交易进入内存池的时间(Unix)。
>height[number(int),required,1]->交易进入内存池时的区块高度。
>startingpriority[number(int),required,1]->交易第一次进入内存池时的优先级。
>currentpriority[number(int),required,1]->交易当前优先级。
>descendantcount[number(int),required,1]->内存池中的子交易数量(包括此项)。
>descendantsize[number(int),required,1]->内存池中的子交易字节大小(包括此项)。
>descendantfees[number(int),required,1]->内存池中的子交易的找零费用(包括此项)。
>ancestorcount[number(int),required,1]->内存池中的父交易数量。
>ancestorsize[number(int),required,1]->内存池中的父交易字节大小。
>ancestorfees[number(int),required,1]->存池中的父交易的找零费用(包括此项)。
>depends[array,required,1]->一个包含未确认交易(此交易取决于父交易)TXID的数组。这些交易在当前交易能添加到区块之前,必须是区块的一部分,尽管所有交易可能被包含到同一个区块。该数组可能为空值。 >>DependsTXID[string,optional,0 or More]->以hex编码的此交易所依赖的任何未确认交易的TXID。
bitcoin-cli getrawmempool true
{
"b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873": {
"size": 485,
"fee": 0.00009700,
"modifiedfee": 0.00009700,
"time": 1479423635,
"height": 439431,
"startingpriority": 15327081.81818182,
"currentpriority": 21536936.36363636,
"descendantcount": 1,
"descendantsize": 485,
"descendantfees": 9700,
"ancestorcount": 1,
"ancestorsize": 485,
"ancestorfees": 9700,
"depends": [
]
},
"094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4": {
"size": 554,
"fee": 0.00005540,
"modifiedfee": 0.00005540,
"time": 1479423327,
"height": 439430,
"startingpriority": 85074.91071428571,
"currentpriority": 3497174.4375,
"descendantcount": 1,
"descendantsize": 554,
"descendantfees": 5540,
"ancestorcount": 1,
"ancestorsize": 554,
"ancestorfees": 5540,
"depends": [
]
}
}
bitcoin-cli getrawmempool
[
"b104586f229e330caf42c475fd52684e9eb5e2d02f0fcd216d9554c5347b0873",
"094f7dcbc7494510d4daeceb2941ed73b1bd011bf527f6c3b7c897fee85c11d4"
]

GetRawTransaction

获取一个hex编码的以JSON格式描述的交易。BitcoinCore仅存储UTXO完整的交易数据,因此该调用可能在某些历史交易数据,除非在BitcoinCore启动设置里将txindex设为1。
@TXID[string(hex),required,1]->以hex编码的交易ID。
@Format[bool,optional,0 or 1]->为false(默认)时返回以hex编码的序列化交易数据。为true时,返回一个解码后的交易数据。在0.14.0版本前,分别使用0和1。
@result[null,required,1]->如果交易在区块链中不存在或内存池中未找到,或者不是交易索引的一部分,返回null。可参考BitcoinCore中的help txindex。
result[string(hex),required,1]->如果交易存在,返回以hex编码的序列化交易数据。
result[object,required,1]->交易数据描述对象。
>hex[string(hex),required,1]->交易ID(TXID)。
>blockhash[string(hex),optional,0 or 1]->如果交易包含在本地最佳区块链的一个区块中,该值为以hex编码的区块哈希值。
>confirmations[number(int),required,1]->如果交易包含在本地最佳区块链的一个区块中,该值为该交易的确认数。否则为0。
>time[number(int),optional,0 or 1]->如果交易包含在本地最佳区块链的一个区块中,该值为区块头时间。
>blocktime[number(int),optional,0 or 1]->该字段目前与上述时间字段相同。
bitcoin-cli getrawtransaction \
52309405287e737cf412fc42883d65a392ab950869fae80b2a5f1e33326aca46

0100000001bafe2175b9d7b3041ebac529056b393cf2997f7964485aa382ffa4\ 49ffdac02a000000008a473044022013d212c22f0b46bb33106d148493b9a972\ 3adb2c3dd3a3ebe3a9c9e3b95d8cb00220461661710202fbab550f973068af45\ c294667fc4dc526627a7463eb23ab39e9b01410479be667ef9dcbbac55a06295\ ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc\ 0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01b0a86a00000000\ 001976a91401b81d5fa1e55e069e3cc2db9c19e2e80358f30688ac00000000
bitcoin-cli getrawtransaction \ ef7c0cbf6ba5af68d2ea239bba709b26ff7b0b669839a63bb01c2cb8e8de481e \ true
{
"hex": "0100000001bafe2175b9d7b3041ebac529056b393cf2997f7964485aa382ffa449ffdac02a000000008a473044022013d212c22f0b46bb33106d1484
93b9a9723adb2c3dd3a3ebe3a9c9e3b95d8cb00220461661710202fbab550f973068af45c294667fc4dc526627a7463eb23ab39e9b01410479be667ef9dcbbac
55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8ffffffff01b0a86a
00000000001976a91401b81d5fa1e55e069e3cc2db9c19e2e80358f30688ac00000000",
"txid": "52309405287e737cf412fc42883d65a392ab950869fae80b2a5f1e33326aca46",
"hash": "52309405287e737cf412fc42883d65a392ab950869fae80b2a5f1e33326aca46",
"size": 223,
"vsize": 223,
"version": 1,
"locktime": 0,
"vin": [
{
"txid": "2ac0daff49a4ff82a35a4864797f99f23c396b0529c5ba1e04b3d7b97521feba",
"vout": 0,
"scriptSig": {
"asm": "3044022013d212c22f0b46bb33106d148493b9a9723adb2c3dd3a3ebe3a9c9e3b95d8cb00220461661710202fbab550f973068af45c2
94667fc4dc526627a7463eb23ab39e9b[ALL] 0479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3
c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",
"hex": "473044022013d212c22f0b46bb33106d148493b9a9723adb2c3dd3a3ebe3a9c9e3b95d8cb00220461661710202fbab550f973068af45
c294667fc4dc526627a7463eb23ab39e9b01410479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798483ada7726a3
c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8"
},
"sequence": 4294967295
}
],
"vout": [
{
"value": 0.06990000,
"n": 0,
"scriptPubKey": {
"asm": "OP_DUP OP_HASH160 01b81d5fa1e55e069e3cc2db9c19e2e80358f306 OP_EQUALVERIFY OP_CHECKSIG",
"hex": "76a91401b81d5fa1e55e069e3cc2db9c19e2e80358f30688ac",
"reqSigs": 1,
"type": "pubkeyhash",
"addresses": [
"1A6Ei5cRfDJ8jjhwxfzLJph8B9ZEthR9Z"
]
}
}
],
"blockhash": "0000000000000000015955e197fc362502a32f76290e5b5e5be822f9f161b3f3",
"confirmations": 374,
"time": 1483591778,
"blocktime": 1483591778
}

GetReceivedByAccount

从具有指定确认次数的交易中返回特定账户地址接收的比特币数量。不包括coinbase交易。
该接口将会在后续版本中移除。参考GetReceivedByAdd、GetAddressesByAccount、ListAccounts。
@Account[string,required,1]->想要获取地址对应的帐户名称。用空字符串表示获取默认帐户。
@result[number(bitcoins),required,1]->接收的比特币数量,不包括coinbase交易。可能为0。
bitcoin-cli -testnet getreceivedbyaccount "doc test" 6
0.30000000

GetReceivedByAddress

需要启用钱包支持。
返回具有指定确认次数的交易中指定地址接收的比特币数量,不包括coinbase交易。
@Address[string,required,1]->要追踪的交易地址。
@result[number(bitcoins),required,1]->接收的比特币数量,不包括coinbase交易。可能为0。
bitcoin-cli -testnet getreceivedbyaddress mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN 6
0.30000000

GetTransaction

需要启用钱包支持。
获取钱包内交易的详细信息。
@TXID[string(hex),required,1]->以hex编码的交易ID。
@result[object,required,1]->钱包中的交易对象数据。
>amount[number(bitcoins),required,1]->正数表示此次交易增加了钱包总余额;负数表示此次交易减少了钱包总余额;0表示交易对钱包余额无影响。
>fee[number(bitcoins),optional,0 or 1]->如果这里一笔输出交易,该值是以负数表示的交易报告的费用。
>confirmations[number(int),required,1]->交易确认数量。0表示交易未被确认过,-1表示交易有冲突。
>generated[bool,optional,0 or 1]->为true时,该交易是一笔coinbase交易;不返回则为普通交易。
>blockhash[string(hex),optional,0 or 1]->以hex编码的包含该交易的本地最佳区块链区块链的区块哈希值。仅返回确认过的交易。
>blockindex[number(int),optional,0 or 1]->交易在区块中的索引。仅返回确认过的交易。
>blocktime[number(int),optional,0 or 1]->包含该交易的本地最佳区块链的区块块头时间(Unix)。仅返回确认过的交易。
>txid[string(hex),requird,1]->以hex编码的交易ID。
>walletconflicts[array,required,1]->其它交易中一个消费同样输入的包含TXID的数组。该值可能为空值。
>>TXID[string(hex),optional,0 or More]->交易ID。
>time[number(int),required,1]->交易添加到钱包的时间(Unix)。
>timereceived[number(int),required,1]->本地节点检测到的交易时间(Unix),或者包含该交易的本地最佳区块链的区块时间。
>bip125-replaceable[string,required,1]->在BIP125协议中,表示交易是否可替换。
>comment[string,optional,0 or 1]->由钱包发出的交易且存储在本地的注释。只有有添加注释时才返回。
>to[string,optional,0 or 1]->由钱包发出的交易,一个存储在本地的注释将被添加到交易中以识别交易将要发送给谁。只有在在有注释时才返回。
>details[array,required,1]->一个受钱包影响的交易输入/输出数组。
>>involvesWatchonly[bool,optional,0 or 1]->为true时表示包含仅监视的输入/输出
>>account[string,required,1]->付款记入或扣除的帐户。默认帐户使用空值。
>>address[string(base58),optional,0 or 1]->如果该对象为输出,该地址为一个支付地址(可能是不属于这个钱包的别人的地址)。如果该对象为输入,该地址为之前某个输出的支付地址。在地址未知时可能为空值,比如付款给一个非标准的pubkey脚本。
>>category[string,required,1]->有以下选项:
*send->发送支付。
*receive->这个钱包正常交易中接收支付。
*generate->一个成熟且可用的coinbase。
*immature->一个不可用的coinbase。
*orphan->不在本地最佳区块链的coinbase。
>>amount[number(bitcoins,required,1]->负数表示发送付款的比特币金额;正数表示接收付款的比特币金额(包括coinbase)。
>>vcout[number(int),required,1]->对于一个输出,该交易中的输出索引。对于一个输入,该交易中所引用支付的输出索引。由于输入从先前交易列出输出索引,因此details数组中的多个条目可能具有相同的输出索引。
>>fee[number(bitcoins),optional,0 or 1]->如果发送支付,支付费用为负数。可能为0.接收支付不返回。
>>abandoned[boo,optional,0 or 1]->交易是否被丢弃。仅在发送付款返回该字段。
>hex[string(hex),required,1]->以hex编码的交易序列化格式数据。
bitcoin-cli -testnet gettransaction \ 5a7d24cd665108c66b2d56146f244932edae4e2376b561b3d396d5ae017b9589
{
"amount" : 0.00000000,
"fee" : 0.00000000,
"confirmations" : 106670,
"blockhash" : "000000008b630b3aae99b6fe215548168bed92167c47a2f7ad4df41e571bcb51",
"blockindex" : 1,
"blocktime" : 1396321351,
"txid" : "5a7d24cd665108c66b2d56146f244932edae4e2376b561b3d396d5ae017b9589",
"walletconflicts" : [
],
"time" : 1396321351,
"timereceived" : 1418924711,
"bip125-replaceable" : "no",
"details" : [
{
"account" : "",
"address" : "mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN",
"category" : "send",
"amount" : -0.10000000,
"vout" : 0,
"fee" : 0.00000000
},
{
"account" : "doc test",
"address" : "mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN",
"category" : "receive",
"amount" : 0.10000000,
"vout" : 0
}
],
"hex" : "0100000001cde58f2e37d000eabbb60d9cf0b79ddf67cede6dba58732539983fa341dd5e6c010000006a47304402201feaf12908260f666ab369bb875 3cdc12f78d0c8bdfdef997da17acff502d321022049ba0b80945a7192e631c03bafd5c6dc3c7cb35ac5c1c0ffb9e22fec86dd311c01210321eeeb46fd878ce8e62 d5e0f408a0eab41d7c3a7872dc836ce360439536e423dffffffff0180969800000000001976a9142b14950b8d31620c6cc923c5408a701b1ec0a02088ac00000000"
}

GetTxOut

返回指定的未花费交易输出详细数据(UTXO)。
@TXID[string(hex),required,1]->交易ID。
@Vout[number(int),required,1]->指定交易中输出的索引号。第一个输出索引为0。
@Unconfirmed[bool,optional,0 or 1]->为true时显示内在池中未确认输出;为false(默认)只显示已确认交易。
@result[object/null,required,1]->交易输出的数据。如果输出未找到(比如已经被花费或出错),该值为null。
>bestblock[string(hex),required,1]->以hex编码的本地最佳区块链的包含该交易的区块头。如果交易不属于任何区块,该字段为空值。
>confirmations[number(int),required,1]->该交易输出收到的确认数。如果未曾被确认,该值为0。
>value[number(bitcoins),required,1]->花费到这个输出的比特币数量。可能为0。
>scriptPubKey[string:object,optional,1]->公钥脚本的信息。如果没有公钥脚本,该值可能为空。
>>asm[string,required,1]->列出解码形式的pubkey脚本,其中包含非数据推送操作码
>>hex[string,required,1]->以hex编码的公钥脚本。
>>reqSigs[number(int),optional,0 or 1]->需要的签名数量。在P2SH内的P2PK或P2PKH是1。P2SH可以超过1,如果脚本类型是nulldata或者nonstandard,该值将不会返回。
>>type[string,optional,0 or 1]->脚本类型。有以下类型:
*pubkey->用于P2SH内的P2PK脚本。
*pubkeyhash->用于P2SH内的P2PKH脚本。
*multisig->用于P2SH内的多重签名脚本。
*nulldata->用于nulldata脚本。
*nonstandard->用于未知脚本。
>>addresses[string:array,optional,0 or 1]->交易中使用的P2PKH或P2地址,或者交易中任何公钥计算出来的P2PKH地址。nulldata或nonstandard脚本类型不会有返回值。
>>>Address[string,requried,1 or More]->一个P2PKH或P2SH地址。
>version[number(int),required,1]->包含该公钥脚本的交易版本号。
>coinbase[bool,required,1]->为true时,该交易的输出属于一个coinbase交易;为false时,对所有其它交易。在它们的输出能被花费之前,coinbase交易需要有101个确认。
bitcoin-cli -testnet gettxout \d77aee99e8bdc11f40b8a9354956f0346fec5535b82c77c8b5c06047e3bca86a \0 true
{
"bestblock" : "00000000c92356f7030b1deeab54b3b02885711320b4c48523be9daa3e0ace5d",
"confirmations" : 0,
"value" : 0.00100000,
"scriptPubKey" : {
"asm" : "OP_DUP OP_HASH160 a11418d3c144876258ba02909514d90e71ad8443 OP_EQUALVERIFY OP_CHECKSIG",
"hex" : "76a914a11418d3c144876258ba02909514d90e71ad844388ac",
"reqSigs" : 1,
"type" : "pubkeyhash",
"addresses" : [
"mvCfAJSKaoFXoJEvv8ssW7wxaqRPphQuSv"
]
},
"version" : 1,
"coinbase" : false
}

GetTxOutProof

返回一个以hex编码的证明,使一个或多个指定交易包含到一个块中。
注意:默认情况下,该函数仅在为为该交易设置UTXO的一个未花费输出时使用。要使其始终有效,你需要使用-txindex命令行选项来维护交易索引,或者手动指定包含该交易的区块(通过区块头哈希值)。
@TXIDs[array,required,1]->指定的一个以JSON表示的TXID数组。
>txid[string,required,1 or More]->用来生成证明的交易ID。所有交易必须在同一区块中。
@HeaderHash[string,optional,0 or 1]->如果被指定,使用此哈希值在块中查找TXID。
@result[string,required,1]->以hex编码的序列化凭证。
bitcoin-cli gettxoutproof \
'''
[
"f20e44c818ec332d95119507fbe36f1b8b735e2c387db62adbe28e50f7904683"
]
''' \
'0000000000000000140e84bf183d8d5207d65fbfae596bdf48f684d13d951847'
03000000394ab3f08f712aa0f1d26c5daa4040b50e96d31d4e8e3c130000000000000000\ ca89aaa0bbbfcd5d1210c7888501431256135736817100d8c2cf7e4ab9c02b168115d455\ 04dd1418836b20a6cb0800000d3a61beb3859abf1b773d54796c83b0b937968cc4ce3c0f\ 71f981b2407a3241cb8908f2a88ac90a2844596e6019450f507e7efb8542cbe54ea55634\ c87bee474ee48aced68179564290d476e16cff01b483edcd2004d555c617dfc08200c083\ 08ba511250e459b49d6a465e1ab1d5d8005e0778359c2993236c85ec66bac4bfd974131a\ dc1ee0ad8b645f459164eb38325ac88f98c9607752bc1b637e16814f0d9d8c2775ac3f20\ f85260947929ceef16ead56fcbfd77d9dc6126cce1b5aacd9f834690f7508ee2db2ab67d\ 382c5e738b1b6fe3fb079511952d33ec18c8440ef291eb8d3546a971ee4aa5e574b7be7f\ 5aff0b1c989b2059ae5a611c8ce5c58e8e8476246c5e7c6b70e0065f2a6654e2e6cf4efb\ 6ae19bf2548a7d9febf5b0aceaff28610922e1b9e23e52f650a4a11d2986c9c2b09bb168\ a70a7d4ac16e4d389bc2868ee91da1837d2cd79288bdc680e9c35ebb3ddfd045d69d767b\ 164ec69d5db9f995c045d10af5bd90cd9d1116c3732e14796ef9d1a57fa7bb718c07989e\ d06ff359bf2009eaf1b9e000c054b87230567991b447757bc6ca8e1bb6e9816ad604dbd6\ 0600

GetTxOutSetInfo

返回有关已确认未花费交易输出(UTXO)集的统计信息。
@result[object,required,1]->UTXO集的信息。
>height[number(int),required,1]->本地最佳区块链高度。仅有创世区块的新节点的高度值为0。
>bestblock[string(hex),required,1]->以hex编码的本地最佳区块链区块头最高高度哈希值。
>transactions[number(int),required,1]->拥有未花费输出的交易数量。
>txouts[number(int),required,1]->未花费交易输出的数量。
>bytes_serialized[number(int),requried,1]->序列化的UTXO集字节大小;不计算开销,这是BitcoinCore配置目录中chainstate目录的字节大小。
>hash_serialized[string(hex),required,1]->以SHA256哈希序列化的UTXO集,用于比较两个节点是否拥有一样的UTXO集(如果它们 使用相同的序列化格式,它们将会拥有同样的最佳区块链)。
>total_amount[number(bitcoins),required,1]->UTXO集的比特币总数量。
bitcoin-cli -testnet gettxoutsetinfo
{
"height" : 315293,
"bestblock" : "00000000c92356f7030b1deeab54b3b02885711320b4c48523be9daa3e0ace5d",
"transactions" : 771920,
"txouts" : 2734587,
"bytes_serialized" : 102629817,
"hash_serialized" : "4753470fda0145760109e79b8c218a1331e84bb4269d116857b8a4597f109905",
"total_amount" : 13131746.33839451
}

GetUnconfirmedBalance

返回钱包的未确认交易余额总数。
@result[number(bitcoins),required,1]->支付到钱包的未确认交易总数。
bitcoin-cli -testnet getunconfirmedbalance
0.00000000

GetWalletInfo

返回钱包信息。
@result[object,required,1]->描述钱包信息的对象。
>walletversion[number(int),required,1]->钱包版本号。
>balance[number(bitcoins),required,1]->钱包余额。与getbalance返回相同。
>txcount[number(int),required,1]->钱包内交易总数(包括已花费和已接收交易)。
>keypoololdest[number(int),required,1]->钱包keypool中最早创建的key的时间(Unix),仅用于扫描自此日期以来创建的交易块。
>keypoolsize[number(int),required,1]->钱包中keypool的key数量。
>unlocked_until[number(int),optional,1]->只在钱包使用encryptwallet调用加密时返回。返回钱包将将被上锁的时间(Unix)。如果钱包已经被锁定,返回0。
bitcoin-cli -testnet getwalletinfo
{
"walletversion" : 60000,
"balance" : 1.45060000,
"txcount" : 17,
"keypoololdest" : 1398809500,
"keypoolsize" : 196,
"unlocked_until" : 0
}

GetWork

该接口已被移除。可参考 GetBlockTemplate、SubmitBlock。

Help

@RPC[string,optional,0 or 1]->需要获取大盘珠RPC名称。如果省略,BitcoinCore 0.9x将显示按字母顺序排列的命令列表; BitcoinCore 0.10.0将显示一个分类的命令列表。
@result[string,required,1]->以可读文件的形式返回RPC调用帮助信息。
bitcoin-cli -testnet help help
help ( "command" )
List all commands, or get help for a specified command.
Arguments:
1. "command" (string, optional) The command to get help on
Result:
"text" (string) The help text

ImportAddress

添加一个地址或公钥脚本到没有关联的钱包中,允许你监听影响地址或公钥脚本的交易,而不花费交易输出。
@Address/Script[string(base58/hex),required,1]->可以是一个以base58check编码的P2PKH或P2SH地址,或者一个以hex编码的公钥脚本。
@Account[string,optional,0 or 1]->存放地址的帐户名称。空字符串表示使用默认帐户。
@Rescan[bool,optional,0 or 1]->为true(默认)时,重扫描本地区块链数据库钱包中任何影响地址或公钥脚本的交易(影响包括新加的地址和公钥的交易)。为false时,不扫描区块数据库(重新扫瞄可随时通过命令行参数指定-rescan参数重启BitcoinCore执行)。重新扫瞄需要花费几分钟时间。
@result[null,required,1]->如果地址或公钥脚本添加到钱包(或已在钱包中)返回null。
bitcoin-cli -testnet importaddress \ muhtvdmsnbQEPFuEmxcChX58fGvXaaUoVt "watch-only test" true
bitcoin-cli -testnet getaccount muhtvdmsnbQEPFuEmxcChX58fGvXaaUoVt
watch-only test

ImportMulti

需要启用钱包支持。需要钱包未上锁。
导入地址或脚本(包含私钥、公钥或者P2SH兑换脚本),并且对于所有导入执行最小必要的重新扫瞄(可选)。
@Imports[array,required,1]->JSON数组,可以是要导入的地址或脚本。
>Import[object,required,1 or More]->一个描述某个导入的JSON对象。
>>scriptPubKey[string(hex),optional,0 or 1]->待导入的脚本。必须包含该字段或下面的address字段。
>>address[string(base58),optional,0 or 1]->待导入的P2PKH或P2SH地址。必须包含该字段或上面的scriptPubKey字段。
>>timestamp[number(int)/string,required,1]->这个key创建的时间(Unix)或”now”替换当前的同步区块链时间。最早key的时间戳将决定后面区块链需要多久重新扫描。指定now可绕过扫描未使用过的key。指定0扫描整个区块链。区块最多在最早创建key的2小时内会执行扫瞄。
>>redeemscript[string,optional,0 or 1]->一个兑换脚本。只有在address字段是一个P2SH地址或scriptPubKey字段是一个P2SH脚本公钥时允许。
>>pubkeys[array,optional,0 or 1]->提供公钥的字符串数组,其必须出现在公钥脚本或兑换脚本中。
>>keys[array,optional,0 or 1]->提供私钥的字符串数组,其对应公钥必须出现在公钥脚本或兑换脚本中。
>>internal[bool,optional,0 or 1]->说明对应输出应该被视为找零而非收入。默认为false。
>>watchonly[bool,optional,0 or 1]->说明对应输出应该被视为监听即使它们不可花费。如果keys是空值,这将被允许。默认为false。
>>label[string,optional,0 or 1]->只有在internal设置为false时才允许为地址分配标签。默认为空字符串。
>option[object,optional,0 or 1]->带有关于导入选项的JSON对象。
>>rescan[bool,optinal,0 or 1]->为true(默认)时,作导入地址或脚本受到影响时,重新扫瞄整个本地最佳区块链的交易数据。为false时,导入后不重新扫瞄。重新扫瞄可能需要相当长的时间,并且使用区块链裁剪会下载区块。
@result[array,required,1]->JSON对象数组,每个对象描述导入的执行结果。
>Result[object,required,1 or More]->一个措述可执行结果的导入地址或对象。
>>success[string,required,1]->导入结果成功或失败。
>>error[string:object,optional,0 or 1]->JSON格式表示的错误相关信息。如果失败返回false。
>>>code[number(int),optional,0 or 1]->错误代码。
>>>message[string,optional,0 or 1]->错误消息。
bitcoin-cli importmulti '
[
{
"scriptPubKey" : { "address": "1NL9w5fP9kX2D9ToNZPxaiwFJCngNYEYJo" },
"timestamp" : 0,
"label" : "Personal"
},
{
"scriptPubKey" : "76a9149e857da0a5b397559c78c98c9d3f7f655d19c68688ac",
"timestamp" : 1493912405,
"label" : "TestFailure"
}
]' '{ "rescan": true }'
[
{
"success": true
},
{
"success": false,
"error": {
"code": -8,
"message": "Internal must be set for hex scriptPubKey"
}
}
]

ImportPrivKey

需要启用钱包支持。钱包必须未上锁。
添加一个密钥到你的钱包中。该key必须是dumpprivkey调用创建的钱包导入格式。
@PrivateKey[string(base58),required,1]->使用钱包导入格式(WIF)导入到钱包的用base58check编码的密钥。
@Account[string,optional,0 or 1]->应分配涉及key的交易帐户的名称。空字符串使用默认帐户。
@Rescan[bool,optional,0 or 1]->为true(默认)时,重扫描本地区块链数据库钱包中任何影响地址或公钥脚本的交易(影响包括新加的地址和公钥的交易)。为false时,不扫描区块数据库(重新扫瞄可随时通过命令行参数指定-rescan参数重启BitcoinCore执行)。重新扫瞄需要花费几分钟时间。注意,如果地址已经在钱包中,区块数据库不会执行重新扫瞄,即使该值为true。
@result[null,required,1]->如果密钥添加到钱包(或已经在钱包)中,返回空值。
bitcoin-cli -testnet importprivkey \ cU8Q2jGeX3GNKNa5etiC8mgEgFSeVUTRQfWE2ZCzszyqYNK4Mepy \"test label" \true

ImportPrunedFunds

需要启用钱包支持。
无需重新扫瞄即导入资金。这意味着和剪裁过的钱包一起使用。对应的地址或脚本必须包含在钱包里。最后的用户负责导入额外的交易,包括后续花费导入的输出或在交易包含区块链中的点后重新扫描。
@RawTransaction[string(hex),required,1]->用hex编码的为钱包中已经存在的地址提供资金的原始交易。
@TXOutProof[string(hex),required,1]->以hex编码的来自gettxoutproof的包含交易的输出。
@result[null,required,1]->如果资源添加到钱包里,返回null。
bitcoin-cli importprunedfunds "txhex" "txoutproof"

ImportWallet

需要启用钱包支持。需要一个未上锁或未加密钱包。
从钱包转储文件格式的文件中导入一个私钥(参考dumpwallet)。这些key将会添加到钱包当前的key里。此调用可能需要重新扫瞄所有或部分区块链中影响新添加key的交易,这可能要花费几分钟时间。
@Filename[string,required,1]->待导入的文件。该路径与BitcoinCore的工作目录有关。
@result[null,required,1]->如果文件中所有的key成功添加到钱包中,返回空值。
bitcoin-cli -testnet importwallet /tmp/dump.txt

KeyPoolRefill

需要启用钱包支持。需要一个未上锁或未加密钱包。
在KeyPool里预生成一些未使用的密钥。
@KeyPoolSize[number(int),optional,0 or 1]->KeyPool的大小。如果该值小于KeyPool里密钥的数量,将会生成新的密钥。默认为100,设置为0表示跟默认值相同。指定的值只对这个调用,默认KeyPool大小不改变。
@result[null,required,1]->如果成功创建密钥,返回空值。
bitcoin-cli -testnet keypoolrefill 101

ListAccounts

列出帐户和它们的余额。
该接口将在后续版本移除。可参考GetAccount、GetAddressesByAccount、ListReceivedByAccount。
@Confirmations[number(int),optional,0 or 1]->外部生成的交易在计入余额之前必须具有的最少确认数量。该节点生成的交易会立即计数。外部生成的交易是对该钱包的支付。该节点生成的交易是对其它钱包的支付。该值为0表示计算未确认的交易。默认为1。
@IncludeWatchOnly[bool,optional,0 or 1]->为true时,包括仅监听地址的详情,并把它们当成属于钱包普通的地址计算。为false(默认)时,认为仅监听地址当成不属于钱包。
@result[object,required,1]->包含AccountName和Value的键值对数组。必须至少包括默认帐户(“”)。
>AccountBalance[string:number(bitcoins),required,1 or More]->多个帐户名和余额的键值对。如果帐户花费的比特币数大于它接收的比特币数量,该值为负数。没有余额和没有交易过的帐户也会被显示。
bitcoin-cli -testnet listaccounts 1 true
{
"" : -2.73928803,
"Refund from example.com" : 0.00000000,
"doc test" : -498.45900000,
"someone else's address" : 0.00000000,
"someone else's address2" : 0.00050000,
"test" : 499.97975293,
"test account" : 0.00000000,
"test label" : 0.48961280,
"test1" : 1.99900000
}

ListAddressGroupings

需要启用钱包支持。
列出可能将共同所有权通过公共所有权公开的地址组作为同一交易中的输入或用作先前交易的更改。
@result[array,required,1]->一个包含分组的数组。可能为空值。
>Groupings[array,optional,0 or More]->与其它相关联的包含地址数组的数组。
>>AddressDetails[array,required,1 or More]->一个包含指定地址信息的数组。
>>>Address[string(base58),required,1]->以base58check编码的地址。
>>>Balance[number(bitcoins),required,1]->当前地址可花费的余额,不包括未确认的交易。
>>>Account[string,optional,0 or 1]->该字段将被移除。地址所属的帐户。该字段不会返回找零地址。默认帐户使用空字符串。
bitcoin-cli -testnet listaddressgroupings
[
[
[
"mgKgzJ7HR64CrB3zm1B4FUUCLtaSqUKfDb",
0.00000000
],
[
"mnUbTmdAFD5EAg3348Ejmonub7JcWtrMck",
0.00000000,
"test1"
]
]
]

ListBanned

禁用的IP或子网列表。
@result[object,required,1]->一个禁用列表。如果没有禁用列表,返回空值。
>Node[object,optional,0 or More]->禁止列表条目。
>>address[string,required,1]->IP/子网条目。
>>banned_until[number(int),required,1]->条目添加到禁止列表时间(Unix)。
>>ban_created[number(int),required,1]->直到IP/子网被禁止的时间(Unix)。
>>ban_reason[string,required,1]->有以下选项:
*node_misbehaving->节点由于DoS违规而被客户端禁止。
*manually_added->节点是否被用户手动禁止。
bitcoin-cli listbanned
[
{
"address": "83.84.25.82/32",
"banned_until": 1487269503,
"ban_created": 1478629503,
"ban_reason": "node misbehaving"
},
{
"address": "111.111.0.111/32",
"banned_until": 1487791655,
"ban_created": 1479151655,
"ban_reason": "manually added"
}
]

ListLockUnspent

需要启用钱包支持。
返回一个临时不可花费(锁定)输出。
@result[array,required,1]->一个包含所有锁定输出的数组。可能为空值。
>Output[object,optional,1 or More]->描述某个特定锁定输出的对象。
>>txid[string(hex),required,1]->以hex编码的包含锁定输出的交易的TXID。
>>vout[number(int),required,1]->该锁定输出在交易中的索引。第一个输出索引为0。
bitcoin-cli -testnet listlockunspent
[
{
"txid" : "ca7cb6a5ffcc2f21036879493db4530c0ce9b5bff9648f9a3be46e2dfc8e0166",
"vout" : 0
}
]

ListReceivedByAccount

需要启用钱包支持。
bitcoin-cli -testnet listreceivedbyaccount 6 false
[
{
"account" : "",
"amount" : 0.19960000,
"confirmations" : 53601
},
{
"account" : "doc test",
"amount" : 0.30000000,
"confirmations" : 8991
}
]

ListReceivedByAddress

需要启用钱包支持。
列举每个地址接收的比特币总量。
@Confirmations[number(int),optional,0 or 1]->外部生成的交易在计入余额之前必须具有的最少确认数量。该节点生成的交易会立即计数。外部生成的交易是对该钱包的支付。该节点生成的交易是对其它钱包的支付。该值为0表示计算未确认的交易。默认为1。
@IncludeEmpty[bool,optional,0 or 1]->为true时,只包括未接收过支付的帐户 。为false(默认)时,只包括接收过支付的帐户。一个帐户接收过支付的帐户将会被包含,即使它当前的余额为0。
@IncludeWatchOnly[bool,optional,0 or 1]->为true时,包括仅监听地址的详情,并把它们当成属于钱包的普通地址计算。为false(默认)时,认为仅监听地址当成不属于钱包。
@result[array,required,1]->一个描述特定地址的数组。
>Address[object,optional,0 or More]->描述地址的对象。
>>involvesWatchonly[bool,optional,0 or 1]->为true时,帐户余额包括一个已接收过可花费支付的仅监听地址(即这个支付至少有指定的确认并且不是一个成熟的coinbase)。否则返回空值。
>>address[string(base58),required,1]->以base58check编码的地址。
>>account[string,required,1]->将会被移除。地址对应的帐户。空字符串表示默认帐户。
>>amount[number(bitcoins,required,1]->该地址接收的比特币总数量。
>>confirmations[number(int),required,1]->地址最近一次交易的确认数量。未有确认交易时为0。
>>label[string,required,1]->地址对应的帐户。空字符串表示默认帐户。
>>txids[array,required,1]->支付到该地址的TXID数组。
   >>>TXID[string,optional,0 or More]->以hex编码的交易ID。
bitcoin-cli -testnet listreceivedbyaddress 6 false true
[
{
"address" : "mnUbTmdAFD5EAg3348Ejmonub7JcWtrMck",
"account" : "test1",
"amount" : 1.99900000,
"confirmations" : 55680,
"label" : "test1",
"txids" : [
"4d71a6127796766c39270881c779b6e05183f2bf35589261e9572436356f287f",
"997115d0cf7b83ed332e6c1f2e8c44f803c95ea43490c84ce3e9ede4b2e1605f"
]
},
{
"involvesWatchonly" : true,
"address" : "n3GNqMveyvaPvUbH469vDRadqpJMPc84JA",
"account" : "someone else's address2",
"amount" : 0.00050000,
"confirmations" : 34714,
"label" : "someone else's address2",
"txids" : [
"99845fd840ad2cc4d6f93fafb8b072d188821f55d9298772415175c456f3077d"
]
}
]

ListSinceBlock

需要启用钱包支持。
获取自特定区块以来发生的影响钱包的所有交易,以及特定高度的区块头哈希值。
@HeaderHash[string(hex),optional,0 or 1]->以hex编码的区块头哈希值。所有不在该区块的影响钱包的交易或者任何较早的区块将会被返回。默认是创世区块,因此默认所有影响钱包的交易将会被返回。
@TargetConfirmations[number(int),optional,0 or 1]->将结果的lastblock字段设置为这个有多次确认的区块头哈希值。这不影响哪个交易将被返回。默认为1,因此返回本地最佳区块链上最近区块的哈希值。
@IncludeWatchOnly[bool,optional,0 or 1]->为true时,包括仅监听地址的详情,并把它们当成属于钱包的普通地址计算。为false(默认)时,认为仅监听地址当成不属于钱包。
@result[object,required,1]->一个对象包含交易的数组以及lastblock字段。
>transactions[array,required,1]->一组对象,每个对象都向这个钱包描述特定支付。此数组中的对象不描述实际的交易,因此数组中的多个对象可能来自同一交易。该数组可能为空值。
>>Payment[object,optional,0 or More]->一个不出现在特定区块或较早区块中的支付。
>>>involvesWatchonly[bool,optional,0 or 1]->为true时,支付不涉及仅监听地址。否则不返回。
>>>account[string,required,1]->将会被移除。支付记录或扣除的帐户。为空字符串时使用默认帐户。
>>>address[string(base58),optional,0 or 1]->此支付的地址,可以是其它人不属于这个钱包的地址。如果地址未知则为空值(像支付到一个非标准公钥脚本时)。
>>>category[string,required,1]->有以下选项:
*send->如果用于发送支付。
*receive->如果钱包接到一个正常交易支付。
*generate->如果是一个成熟且可花费的coinbase。
*immature->如果是一个未花费的coinbase。
*orphan->如果一个区块的coinbase不在本地最佳区块链中。
>>>amount[number(bitcoins),required,1]->如果是发送支付则为负数;如果接收支付(包括coinbase)则为正数。
>>vcout[number(int),required,1]->对于一个输出,该值为交易的输出索引。对于一个输入,该值为花费在这个交易的输出的输出索引。由于输入列举了上个交易的输出索引,因此details数组中的多个条目可能具有相同的输出索引。
>>>fee[number(bitcoins),optional,0 or 1]->如果发送支付,支付费用为负数。可能为0.如果接收一个支付,没有返回值。
>>>confirmations[number(int),required,1]->该交易接收的确认数量。0为未确认交易,-1表示有冲突。
>>>generated[bool,optional,0 or 1]->为true时,该交易是一个coinbase。正常交易不返回。
>>>blockhash[string(hex),optional,0 or 1]->以hex编码的在本地最佳区块链中包含该交易的区块哈希值。仅在确认交易返回。
>>>blockindex[number(int),optional,0 or 1]->在包含该交易的区块的索引。仅返回确认过的交易。
>>>blocktime[number(int),optional,0 or 1]->包含此交易的本地最佳区块链的  区块头时间。仅返回确认过的交易。
>>>txid[string(hex),required,1]->以hex编码的交易TXID。
>>>walletconflicts[array,required,1]->一个包含TXID的数组,数组中每个条目 为花费同样输入的其它交易数组。
>>>>TXID[string(hex),optional,0 or More]->以hex编码的有冲突的交易的TXID。
  >>>time[number(int),required,1]->交易添加到钱包的时间(Unix)。
>>>timereceived[number(int),required,1]->本地节点检测到的交易时间(Unix),或者包含该交易的本地最佳区块链的区块时间。
>>>bip125-replaceable[string,required,1]->在BIP125协议中,表示交易是否可替换。
>>>comment[string,optional,0 or 1]->由钱包发出的交易且存储在本地的注释。只有有添加注释时才返回。
>>>to[string,optional,0 or 1]->由钱包发出的交易,一个存储在本地的注释将被添加到交易中以识别交易将要发送给谁。只有在在有注释时才返回。
>lastblock[string(hex),required,1]->以hex编码的区块头哈希值与目标确认参数中指定的确认数量。
bitcoin-cli -testnet listsinceblock \00000000688633a503f69818a70eac281302e9189b1bb57a76a05c329fcda718 \6 true {
"transactions" : [
{
"account" : "doc test",
"address" : "mmXgiR6KAhZCyQ8ndr2BCfEq1wNG2UnyG6",
"category" : "receive",
"amount" : 0.10000000,
"vout" : 0,
"confirmations" : 76478,
"blockhash" : "000000000017c84015f254498c62a7c884a51ccd75d4dd6dbdcb6434aa3bd44d",
"blockindex" : 1,
"blocktime" : 1399294967,
"txid" : "85a98fdf1529f7d5156483ad020a51b7f3340e47448cf932f470b72ff01a6821",
"walletconflicts" : [
],
"time" : 1399294967,
"timereceived" : 1418924714,
"bip125-replaceable": "no"
},
{
"involvesWatchonly" : true,
"account" : "someone else's address2",
"address" : "n3GNqMveyvaPvUbH469vDRadqpJMPc84JA",
"category" : "receive",
"amount" : 0.00050000,
"vout" : 0,
"confirmations" : 34714,
"blockhash" : "00000000bd0ed80435fc9fe3269da69bb0730ebb454d0a29128a870ea1a37929",
"blockindex" : 11,
"blocktime" : 1411051649,
"txid" : "99845fd840ad2cc4d6f93fafb8b072d188821f55d9298772415175c456f3077d",
"walletconflicts" : [
],
"time" : 1418695703,
"timereceived" : 1418925580,
"bip125-replaceable": "no"
}
],
"lastblock" : "0000000000984add1a686d513e66d25686572c7276ec3e358a7e3e9f7eb88619"
}

ListTransactions

返回影响钱包的最近交易。
@Account[string,optional,0 or 1]->将被移除。获取交易的帐户名称。空字符串表示使用默认帐户名。默认值为*,可获取所有帐户的交易。
@Count[number(int),optional,0 or 1]->要列举的最近交易数量。
@Skip[number(int),optional,0 or 1]->不应返回的最近交易的数量,用于结果分页。默认为0。
@IncludeWatchOnly[bool,optional,0 or 1]->为true时,包括仅监听地址的详情,并把它们当成属于钱包普通的地址计算。为false(默认)时,认为仅监听地址当成不属于钱包。
@result[array,required,1]->一个描述一笔支付或内部帐户条目的对象数组。此数组中的多个对象可能来自单个事务。数组可能是空值。
>Payment[object,optinal,0 or More]->一笔支付或内部帐户条目。
>>account[string,required,1]->将会被移除。支付记录或扣除的帐户。为空字符串时使用默认帐户。
>>address[string(base58),optional,0 or 1]->此支付的地址,可以是其它人不属于这个钱包的地址。如果地址未知则为空值(像支付到一个非标准公钥脚本时)。
>>category[string,required,1]->有以下选项:
*send->如果用于发送支付。
*receive->如果钱包接到一个正常交易支付。
*generate->如果是一个成熟且可花费的coinbase。
*immature->如果是一个未花费的coinbase。
*orphan->如果一个区块的coinbase不在本地最佳区块链中。
*move-> if an off-block-chain move made with the move RPC。
>>amount[number(bitcoins),required,1]->如果是发送支付则为负数;如果接收支付(包括coinbase)则为正数。
>>label[string,optional,0 or 1]->地址或交易的注释。
>>vcout[number(int),required,1]->对于一个输出,该值为交易的输出索引。对于一个输入,该值为花费在这个交易的输出的输出索引。由于输入列举了上个交易的输出索引,因此details数组中的多个条目可能具有相同的输出索引。
>>fee[number(bitcoins),optional,0 or 1]->如果发送支付,支付费用为负数。可能为0。如果接收一个支付,没有返回值。
>>confirmations[number(int),required,1]->该交易接收的确认数量。0为未确认交易,-1表示有冲突。
>>trusted[bool,optional,0 or 1]->表明我们是否认为这种未经证实的交易的输出可以安全消费。仅在返回未确认交易时。
>>generated[bool,optional,0 or 1]->为true时,该交易是一个coinbase。正常交易不返回。
>>blockhash[string(hex),optional,0 or 1]->以hex编码的在本地最佳区块链中包含该交易的区块哈希值。仅在确认交易返回。
>>blockindex[number(int),optional,0 or 1]->在包含该交易的区块的索引。仅返回确认过的交易。
>>blocktime[number(int),optional,0 or 1]->包含此交易的本地最佳区块链的  区块头时间。仅返回确认过的交易。
>>txid[string(hex),required,1]->以hex编码的交易TXID。
>>walletconflicts[array,required,1]->一个包含TXID的数组,数组中每个条目 为花费同样输入的其它交易数组。
>>>TXID[string(hex),optional,0 or More]->以hex编码的有冲突的交易的TXID。
 >>time[number(int),required,1]->交易添加到钱包的时间(Unix)。
>>timereceived[number(int),required,1]->本地节点检测到的交易时间(Unix),或者包含该交易的本地最佳区块链的区块时间。
>>comment[string,optional,0 or 1]->
>>>bip125-replaceable[string,required,1]->在BIP125协议中,表示交易是否可替换。
>>>comment[string,optional,0 or 1]->由钱包发出的交易且存储在本地的注释。只有有添加注释时才返回。
>>>to[string,optional,0 or 1]->由钱包发出的交易,一个存储在本地的注释将被添加到交易中以识别交易将要发送给谁。只有在在有注释时才返回。
bitcoin-cli listtransactions "*" 1 0 true
[
{
"involvesWatchonly" : true,
"account" : "",
"address" : "1GeDA9rRpqaCdsdkTzGtbajt6jPvn3pg2N",
"category" : "send",
"amount" : -3.45902877,
"vout" : 0,
"fee" : -0.00032890,
"confirmations" : 29710,
"blockhash" : "0000000000000000008b9cb38cd3105e75af94b3af79d0a59cbe4edb618fb814",
"blockindex" : 1705,
"blocktime" : 1463173519,
"txid" : "9b32d4315ac4c5e0d3a5fb947b9a198d3641698badc820643a7df23081f99695e",
"walletconflicts" : [
],
"time" : 1418695703,
"timereceived" : 1418925580,
"bip125-replaceable" : "no",
"abandoned": false
}
]

ListUnspent

需要启用钱包支持。
返回一个属于钱包的所有未花费交易输出的数组。注意,在BitcoinCore 0.10.0版本中,影响仅监听地址的输出将被返回; 参考下面介绍的结果中的spendable字段。
@MinimumConfirmations[number(int),optional,0 or 1]->返回的输出中要求的最少确认数量。使用0返回未确认的交易输出。默认为1。
@MaximumConfirmations[number(int),optional, 0 or 1]->返回的输出中要求的最多确认数量。默认为9999999。
@Addresses[array,optional,0 or 1]->如果提供该参数,将返回支付给该地址数组的输出。
>address[string(base58),required,1 or More]->以P2PKH或P2SH编码的地址。
@result[array,required,1]->一个描述未花费输出的数组对象。可能为空值。
>UnspentOutput[object,optional,0 or More]->一个属于该钱包的描述指定未花费输出的对象。
>>txid[string(hex),required,1]->以hex编码的包含输出的交易TXID。
>>vout[number(int),required,1]->输出在交易中的索引。
>>address[string(base58),optional,0 or 1]->以P2PKH或P2SH编码的输出支付地址。仅在P2PKH或P2SH输出脚本中返回。
>>account[string,optional,0 or 1]->该字段将会在后续版本中移除。如果地址属于一个帐户,该值为对应帐户名。否则不返回。
>>scriptPubKey[string(hex),required,1]->以hex编码的支付输出脚本。
>>redeemScript[string(hex),optional,0 or 1]->如果输出是一个P2SH编码的属于钱包的脚本,该值为兑换脚本。
>>amount[number(int),required,1]->支付到输出的数额。
>>confirmations[number(int),required,1]->包含输出的交易的确认数量。
>>spendable[bool,required,1]->为true时,花费这个输出的私钥或密钥是钱包的一部分;为false时则不是(比如仅监听地址)。
>>solvable[bool,required,1]->钱包知道如何花费这个输出为true,否则为false。私钥可能时忽略该字段。
bitcoin-cli -testnet listunspent 6 99999999 '''
[
"mgnucj8nYqdrPFh2JfZSB1NmUThUGnmsqe"
]
'''
[
{
"txid" : "d54994ece1d11b19785c7248868696250ab195605b469632b7bd68130e880c9a",
"vout" : 1,
"address" : "mgnucj8nYqdrPFh2JfZSB1NmUThUGnmsqe",
"account" : "test label",
"scriptPubKey" : "76a9140dfc8bafc8419853b34d5e072ad37d1a5159f58488ac",
"amount" : 0.00010000,
"confirmations" : 6210,
"spendable" : true,
"sovable" : true
}
]

LockUnspent

需要启用钱包支持。
临时锁定或解锁指定的交易输出。花费比特币时,不会通过自动选币功能选择锁定的交易输出。锁仅存储在内存中,因此节点以零锁定输出开始,并且锁定的输出列表总是在节点停止或失败时清除。
@Unlock[bool,required,1]->为false时,锁定由@Outputs指定的输出;为true时,解锁由@Outputs指定的输出。如果这是唯一指定的参数并且为true,所有遥输出将会被解锁。如果这是唯一指定的参数并且为false,不会有任何修改。
@Outputs[array,optional,0 or 1]->锁定或解锁的输出数组。
>Output[object,required,1 or More]->一个描述特定输出的对象。
>>txid[string,required,1]->以hex编码的包含待锁定/解锁输出的交易的TXID。
>>vout[number(int),required,1]->待锁定/解锁的输出索引。交易的第一个输出索引为0。
@result[bool,required,1]->如果输出已经被锁定/解锁,返回true。
bitcoin-cli -testnet lockunspent false '''
[
{
"txid": "5a7d24cd665108c66b2d56146f244932edae4e2376b561b3d396d5ae017b9589",
"vout": 0
},
{
"txid": "6c5edd41a33f9839257358ba6ddece67df9db7f09c0db6bbea00d0372e8fe5cd",
"vout": 0
}
]
'''
true
bitcoin-cli -testnet listlockunspent
[
{
"txid": "5a7d24cd665108c66b2d56146f244932edae4e2376b561b3d396d5ae017b9589",
"vout": 0
},
{
"txid": "6c5edd41a33f9839257358ba6ddece67df9db7f09c0db6bbea00d0372e8fe5cd",
"vout": 0
}
]
bitcoin-cli -testnet lockunspent true '''
[
{
"txid": "5a7d24cd665108c66b2d56146f244932edae4e2376b561b3d396d5ae017b9589",
"vout": 0
}
]
'''
true
bitcoin-cli -testnet listlockunspent
[
{
"txid": "6c5edd41a33f9839257358ba6ddece67df9db7f09c0db6bbea00d0372e8fe5cd",
"vout": 0
}
]

Move

需要启用钱包支持。
从一个你钱包中的帐户移动到另外一个使用离线区块链交易的帐户中。
警告:这个接口将在后续版本中移除。请参考ListAccounts、SendFrom、SendToAddress接口。
警告:允许移动比帐户更多的资金,给发送账户一个负值余额并且给接收账户一个可能超过钱包比特币数量(或者比特币存在数量)的余额。
@FromAccoun[string,required,1]->从中移动资金的帐户的名称。
@ToAccount[string,required,1]->将资金转移到的帐户的名称。
@Amount[number(bitcoins),required,1]->要移动的比特币数量。
@Unused[number(int),optional,0 or 1]->#参数不再使用。如果@Comment必须指定,可以是任意数。
@Comment[string,optional,0 or 1]->这笔移动支付的注释。
@result[bool,required,1]->成功移动时设置为true。
bitcoin-cli -testnet move "doc test" "test1" 0.1 0 "Example move"
true

Ping

发送一个P2P ping消息到所有连接的节点以测量ping时间。返回值由getpeerinfo的pingtime和pingwait字段(秒为单位)。P2P ping消息与所有其他命令一起在队列中处理,因此它测量处理backlog,而不仅仅是网络ping。
@result[null,required]->返回空值。
bitcoin-cli -testnet ping
bitcoin-cli -testnet getpeerinfo | grep ping
"pingtime" : 0.11790800,
"pingtime" : 0.22673400,
"pingtime" : 0.16451900,
"pingtime" : 0.12465200,
"pingtime" : 0.13267900,
"pingtime" : 0.23983300,
"pingtime" : 0.16764700,
"pingtime" : 0.11337300,

PreciousBlock

将一个区块视为在同样工作量下比其它区块更早地被接收。稍后的preciousblock调用可以覆盖较早的效果。 在重新启动时,不会保留preciousblock的影响。
@HeaderHash[string(hex),required,1]->区块标记为珍贵的。
@result[null,required,1]->如果传入一个非法的区块哈希值,会设置JOSN-RPC的error字段。否则返回空值。
bitcoin-cli preciousblock 000000000000000001517a0bac70b8cd6f27ee\1b50a8f12bf606ea6fb6d561cd

PrioritiseTransaction

为事务添加虚拟优先级或费用,使其可以被接收到由此节点挖掘的块中(或使用此节点的矿工),但优先级费用较低。(它也可以移队虚拟优先级或费用,要求交易具有优先级或费用才能被接纳到本地开采的区块中)。
@TXID[string,required,1]->以hex编码的需要修改的虚拟优先级或交易费的交易TXID。
@Priority[number(real),required,1]->如果是正数,除了计算出的优先级之外,还要添加到交易中的优先级; 如果是负数,则优先从交易的计算优先级中减去。计算优先级是每个输入的时间,自从它作为输出(coinage)次数乘以satoshis(value)中的输入的值除以序列化事务(size)的大小,即 coinage * value / size。
@Fee[number(int),required,1]->该值单位是satoshis,不是bitcoins。如果是正数,虚拟交易费加上交易支付的实际费用;如果是负数,虚拟交易费从交易支付的实际费用中扣除。交易支付的实际费用没有变化
@result[bool(true only),required,1]->如果填充了以上三个参数,返回true。如果TXID不在内存池中,则不会返回错误。如果提供的参数少于或多于三个,或者如果出现错误,将被设置为空值。
bitcoin-cli -testnet prioritisetransaction \ fe0165147da737e16f5096ab6c1709825217377a95a882023ed089a89af4cff9 \1234 456789 true

PruneBlockChain

将区块链裁剪到指定的高度或时间戳。需要启用-prune选项(默认禁用)。
@Height[number(int),required1,]->要剪裁的区块链高度。可以将其设置为指定高度,或一个时间戳(Unix),用于修剪区块时间比提供的时间戳至少早2小时的块。
@result[number(int),required,1]->区块剪裁后的最终高度值。
bitcoin-cli pruneblockchain 413555
413555

RemovePrunedFunds

从钱包中移除指定的交易。这意味着使用一个裁剪过的钱包,并且作为一个导入私有资金的伙伴。这将会影响钱包的余额。
@TXID[string(hex),required,1]->以hex编码的待移除交易。
@result[null,required,1]->如果资金已经从钱包移出,返回空值。
bitcoin-cli removeprunedfunds a8d0c0184dde994a09ec054286f1ce581b\ebf46446a512166eae7628734ea0a5

SendFrom

需要钱包支持。需要一个未上锁钱包或未加密钱包。
产生一笔从本地帐户到一个比特币地址的花费。
该接口将会被移除。可参考SendToAddress、SendMany接口。
@FromAccount[string,required,1]->要花费的帐户。空字符串使用默认帐户。
@ToAddress[string,required,1]->要接收比特币的以P2PKH或P2SH编码的地址。
@Amount[number(bitcoins),required,1]->要花费的数量。比特币核心将确保账户有足够的比特币来支付这笔款项(但交易费不计算在其中,因此一个帐户能花费的数额是它的余额加上交易费用)。
@Confirmations[number(int),optional,0 or 1]->外部生成的交易在计入余额之前必须具有的最少确认数量。该节点生成的交易会立即计数。外部生成的交易是对该钱包的支付。该节点生成的交易是对其它钱包的支付。该值为0表示计算未确认的交易。默认为1。
(如果帐户1收到一个未确认交易并且调用move转到帐户2,帐户2可以花费这些比特币,即使该参数为1或更高)。
@Comment[string,optional,0 or 1]->一个存储在本地(非广播)的交易注释。默认为空值。
@CommentTo[string,optional,0 or 1]->一个存储在本地(非广播)的交易注释。意味着可以用来描述支付给谁。默认为空值。
@result[string,required,1]->以hex编码的发送交易的TXID。
bitcoin-cli -testnet sendfrom "test" \mgnucj8nYqdrPFh2JfZSB1NmUThUGnmsqe \0.1 \6 \"Example spend" \"Example.com" f14ee5368c339644d3037d929bbe1f1544a532f8826c7b7288cb994b0b0ff5d8

SendMany

@FromAccount[string,required,1]->将会被移除。产生花费的帐户名称。空字符串表示使用默认帐户。BitcoinCore将确保该账户有足够的比特币来支付下面描述的@Outputs字段中的总金额(但交易费用不包含在计算中,因此一个帐户能花费的数额是它的余额加上交易费用)。
@Outputs[object,required,1]->一个包含地址:要支付数额(address:amount)的键值对。
>Address/Amount[string(base58):number(bitcoins),required,1 or More]->以base58check编码的包含P2PKH或P2SH的地址为key,待支付比特币数量的value的键值对。
@Confirmations[number(int),optional,0 or 1]->外部生成的交易在计入余额之前必须具有的最少确认数量。该节点生成的交易会立即计数。外部生成的交易是对该钱包的支付。该节点生成的交易是对其它钱包的支付。该值为0表示计算未确认的交易。默认为1。
(如果帐户1收到一个未确认交易并且调用move转到帐户2,帐户2可以花费这些比特币,即使该参数为1或更高)。
@Comment[string,optional,0 or 1]->一个存储在本地(非广播)的交易注释。默认为空值。
@SubtractFreeFromAmount[array,optional,0 or 1]->地址数组。费用将会按照该数组长度平分,并从每个地址中扣除。如果数组是空值或未提供,该费用会支付给发送者。
>Address[string(base58),optional,0 or More]->此前列为收件人之一的地址。
@result[string,required,1]->以hex编码的发送交易的TXID。
bitcoin-cli -testnet sendmany \ "test1" \
'''
{
"mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN": 0.1,
"mgnucj8nYqdrPFh2JfZSB1NmUThUGnmsqe": 0.2
} ''' \
6 \"Example Transaction"
ec259ab74ddff199e61caa67a26e29b13b5688dc60f509ce0df4d044e8f4d63d

SendRawTransaction

验证一笔交易并将其广播到P2P网络中。
@Transaction[string(hex),required,1]->以hex编码的序列化交易数据。
@AllowHighFees[bool,optional,0 o 1]->为true时,允许交易支付一笔高交易费用。为false(默认),如果包含一笔高交易费用则阻止它被广播出去。交易费用为输入的总和减输出的总和,因此这个高交易费用检查有助于确保用户(包括找零地址)将大部分差额返回给自己。
@result[null/string(hex),required,1]->如果交易通过节点广播被接受,该值是以hex编码的交易TXID。如果交易被节点拒绝,返回空值,JSON-RPC字段会有一个错误码,JSON-RPC的message字段可能包含一个错误信息。
bitcoin-cli -testnet sendrawtransaction 01000000011da9283b4ddf8d\ 89eb996988b89ead56cecdc44041ab38bf787f1206cd90b51e000000006a4730\ 4402200ebea9f630f3ee35fa467ffc234592c79538ecd6eb1c9199eb23c4a16a\ 0485a20220172ecaf6975902584987d295b8dddf8f46ec32ca19122510e22405\ ba52d1f13201210256d16d76a49e6c8e2edc1c265d600ec1a64a45153d45c29a\ 2fd0228c24c3a524ffffffff01405dc600000000001976a9140dfc8bafc84198\ 53b34d5e072ad37d1a5159f58488ac00000000 f5a5ce5988cc72b9b90e8d1d6c910cda53c88d2175177357cc2f2cf0899fbaad

SendToAddress

花费一定的比特币到一个给定的地址。
@ToAddress[string,required,1]->要发送的以P2PKH或P2SH编码的地址。
@Amount[number(bitcoins),required,1]->花费比特币的数量。
@Comment[string,optional,0 or 1]->一个存储在本地(非广播)的交易注释。默认为空值。
@SubtractFeeFromAmount[bool,optional,0 or 1]->将从发送的金额中扣除交易费用。收款人将收到比@Amount字段更少的比特币。默认为false。
@result[string,required,1]->以hex编码的发送交易TXID。
bitcoin-cli -testnet sendtoaddress mmXgiR6KAhZCyQ8ndr2BCfEq1wNG2UnyG6 \0.1 "sendtoaddress example" "Nemo From Example.com" a2a2eb18cb051b5fe896a32b1cb20b179d981554b6bd7c5a956e56a0eecb04f0

SetAccount

将指定地址存放到给定的帐户中。
@Address[string(base58),required,1]->要存放的以P2PKH或P2SH地址。必须已经属于钱包。
@Account[string,required,1]->待存放的目标帐户名。默认帐户使用空字符串。
@result[null,required,1]->地址数组成功放到帐户中。
bitcoin-cli -testnet setaccount \ mmXgiR6KAhZCyQ8ndr2BCfEq1wNG2UnyG6 "doc test"

SetBan

从禁止列表中添加或移除一个IP/子网。
@IP/Netmask[string,required,1]->待添加或移除的IP(可以是通过DNS解析的hostname,或IPv4、IPv6、 IPv4-as-IPv6地址)。
@Command[string,required,1]->对于IP/子网有以下操作选项:
*add->往addnode列表添加一个节点。
*remove->从addnode列表移除一个节点。如果当前是连接的,将会马上断开连接。
@Bantime[numeric(int),optional,0 or 1]->以秒为单位表示的禁止时间(或者当@Absolute为true时使用绝对时间)。默认为24小时,可以通过在程序启动时设置-bantime参数修改)。
@Absolute[bool,optional,0 or 1]->以秒为单位的解除禁止绝对时间(Unix)。
@result[null,required,1]->一直为空值。
bitcoin-cli -testnet setban 192.0.2.113:18333 add 2592000

SetGenerate

该调用已经从BitcoinCore 0.13.0中移除。如果你拥有一个旧版本的BitcoinCore,使用help setgenerate获取帮助。作为测试,该生成调用仍然可以作为挖矿使用,并且generatetoaddress调用将会被添加到特定地址的矿中。这个接口在没有钱包支持下仍能工作。

SetNetworkActive

禁用/启用所有活动的P2P网络。
@Activate[bool,required,1]->为true时,启用所有活动的P2P网络;为false时,禁用所有活动的P2P网络。
@result[null,required,1]->返回空值。如果输入参数不合法,将会填充JSON-RPC的错误字段。
bitcoin-cli setnetworkactive true

SetTxFee

设置这个钱包的交易的每千字节交易费用。
@TransactionFeePerKilobyte[number(bitcoins),required,1]->每千字节要支付的交易费用(单位:bitcoins)。如果交易费用设置太低,你的交易可能不会被转发或包含在区块中。
@result[bool(true only),required,1]->设置成功返回true。
bitcoin-cli -testnet settxfee 0.00100000
true

SignMessage

使用地址对应的私钥为一个消息签名。
@Address[string(base58),required,1]->属于当前钱包的P2PKH的地址。
@Message[string,required,1]->待签名的消息。
@result[string(base640,required,1]->以base64编码的签名后的消息。注意在BitcoinCore 0.10.0之前,会通过随机k个值创建签名,因此每次同样的消息会产生不同的签名。
bitcoin-cli signmessage 17fshh33qUze2yifiJ2sXgijSMzJ2KNEwu "Hello, World!"
ILypRih424AWRYXK1goB6mskx99aelWcVCTEKolaW7U4VPnwj6Khf+vJSED7pMtPQd3KnXuqq1JvavrQdPMFFB0=

SendMessageWithPrivKey

用给定的私钥为一个消息签名。
@PrivatKey[string(base58),required,1]->以base58check编码使用钱包导入格式(WIF)的私钥。
@Message[string,required,1]->待签名的消息。
@result[string(base640,required,1]->以base64编码的签名后的消息。注意在BitcoinCore 0.10.0之前,会通过随机k个值创建签名,因此每次同样的消息会产生不同的签名。
bitcoin-cli signmessagewithprivkey 5HpHagT65TZzG1PH3CSu63k8DbpvD\8s5ip4nEB3kEsreKamq6aB "Hello, World!" G+ZauMFgQExAJRKZSldbAVEaZo4i0p2AVivbFASo50PkUnynAMDUiNMVdXDlpYMWvatxCmYmLn8C9zygPRn3Y1c=

SetRawTransaction

使用存储在钱包中或调用参数提供的私钥为一笔序列化交易数据签名。
@Transaction[string(hex),required,1]->待签名的序列化交易数据。
@Dependencies[array,optional,0 or 1]->当前交易的花费消耗的输出。
>Output[object,optional,0 or More]->一笔将要花费的输出。
>>txid[string(hex),required,1]->以hex编码的输出显示的交易的TXID。
>>vout[number(int),required,1]->输出在交易中的索引,第一个输出索引为0。
>>scriptPubKey[string(hex),required,1]->以hex编码的输出公钥脚本。
>>redeemScript[string(hex),optional,0 or 1]->如果公钥脚本是一个脚本哈希值,该值一定是对应到兑换脚本。
@PrivateKeys[array,optional,0 or 1]->一个存放私钥的数组。如果提供了任何密钥,则只有它们将用于签署交易(即使钱包拥有其它匹配的密钥)。如果该数组为空值或没有使用且启用钱包支持,则会使用钱包中的密钥。
@SigHash[string,optional,0 or 1]->用于执行所有签名的签名哈希类型(如果你要为不同的签名使用不同的签名哈希类型,你必须对signrawtransaction使用不同的调用)。允许的类型有:ALL,NONE,SINGLE,ALL|ANYONECANPAY,NONE|ANYONECANPAY,SINGLE|ANYONECANPAY。
@result[object,required,1]->签名结果。
>hex[string(hex),required,1]->以hex编码的序列化交易数据,并插入任何签名。如果没有执行签名,返回跟@Transaction一样的值。
>complete[bool,requried,1]->为true时,交易完全被签名;为false时,需要更多的签名。
bitcoin-cli -testnet signrawtransaction 01000000011da9283b4ddf8d\ 89eb996988b89ead56cecdc44041ab38bf787f1206cd90b51e0000000000ffff\ ffff01405dc600000000001976a9140dfc8bafc8419853b34d5e072ad37d1a51\ 59f58488ac00000000 {
"hex" :
"01000000011da9283b4ddf8d89eb996988b89ead56cecdc44041ab38bf787f1206cd90b51e000000006a47304402200ebea9f630f3ee35fa467ffc234592c79538ecd6eb1c9199eb23c4a16a0485a20220172ecaf6975902584987d295b8dddf8f46ec32ca19122510e22405ba52d1f13201210256d16d76a49e6c8e2edc1c265d600ec1a64a45153d45c29a2fd0228c24c3a524ffffffff01405dc600000000001976a9140dfc8bafc8419853b34d5e072ad37d1a5159f58488ac00000000",
"complete" : true
}

Stop

安全关闭 BitcoinCoreServer。
@result[string,required,1]->返回”Bitcoin server stopping”。
bitcoin-cli -testnet stop
Bitcoin server stopping

SubmitBlock

接受一个区块,验证它是否能合法添加到区块链中,并把它广播到网络中。额外的参数在BitcoinCore中会被忽略,但在矿池或其它程序中可能有用。
@Block[string(hex),required,1]->待提交的以hex编码的完整区块。
@Parameters[object,optional,0 or 1]->包含额外参数的JSON对象。不会被BitcoinCore直接使用,并且也不会广播到网络中。该字段可应用于对于矿池及其它软件。一个常用参数是一个workid字符串。
@result[null/string,required,1]->如果区块成功提交,返回空值。如果失败,设置为以下的一个字符串:duplicate,duplicate-invalid,inconclusive,rejected,且会设置JSON-RPC的error字段。
bitcoin-cli -testnet submitblock 02000000df11c014a8d798395b5059c\ 722ebdf3171a4217ead71bf6e0e99f4c7000000004a6f6a2db225c81e77773f6\ f0457bcb05865a94900ed11356d0b75228efb38c7785d6053ffff001d005d437\ 0010100000001000000000000000000000000000000000000000000000000000\ 0000000000000ffffffff0d03b477030164062f503253482fffffffff0100f90\ 29500000000232103adb7d8ef6b63de74313e0cd4e07670d09a169b13e4eda2d\ 650f529332c47646dac00000000 \'{ "workid": "test" }' duplicate

ValidateAddress

根据给定的比特币地址信息。
@Address[string(base58),requried,1]->待验证的以base58check编码的P2PKH或P2SH地址。
@result[object,requried,1]->地址信息。
>isvalid[bool,required,1]->如果地址是一个有效的P2PKH或P2SH地址,该值为true;否则为false。
>address[string(base58),optional,0 or 1]->作为参数给定的比特币地址。
>scriptPubKey[string(hex),optional,0 or 1]->以hex编码的用地址生成的脚本公钥。
>ismine[bool,optional,0 or 1]->如果地址属于钱包,设置为true;否则为false。仅在启用钱包支持时返回。
>iswatchonly[bool,optional,0 or 1]->仅监听地址为true,否则为false。仅地址在钱包中才返回。
>isscript[bool,optional,0 or 1]->如果是一个P2SH地址则为true,否则为false。仅地址在钱包中才返回。
>script[string,optional,0 or 1]->只有属于钱包的P2SH地址才返回。有以下脚本类型:
*pubkey->用于P2SH内的P2PK脚本。
*pubkeyhash->用于P2SH内的P2PKH脚本。
*multisig->用于P2SH内的多重签名脚本。
*nonstandard->用于未知脚本。
>hex[string(hex),optional,0 or 1]->只有属于钱包的P2SH地址才返回。这里一个以 hex编码的兑换脚本。
>addresses[array,optional,0 or 1]->只有属于钱包的P2SH地址才返回。脚本中使用一个P2PKH地址,或由该脚本任何公钥计算出的P2PKH地址。如果脚本类型是nonstandard脚本类型,该数组为空值。
>>Address[string,optional,0 or More]->一个P2PKH地址。
>sigrequired[number(int),optional,0 or 1]->仅在属于钱包的多重签名P2SH地址才返回。该脚本需要的签名数量。
>pubkey[string(hex),optional,0 or 1]->地址对应的公钥。仅在属于钱包的P2PKH地址才返回。
>iscompressed[bool,optional,0 or 1]->如果是压缩的公钥为true,否则为false。仅在属于钱包的P2PKH地址才返回。
>account[string,optional,0 or 1]->该字段将会被移除。地址对应的帐户。默认帐户返回空字符串。仅在地址属于钱包时才返回。
>hdkeypath[string,optional,0 or 1]->The HD keypath if the key is HD and available。
>hdmasterkeyid[string(hash160),optional,0 or 1]->The Hash160 of the HD master public key。
bitcoin-cli validateaddress 17fshh33qUze2yifiJ2sXgijSMzJ2KNEwu
{
"isvalid": true,
"address": "17fshh33qUze2yifiJ2sXgijSMzJ2KNEwu",
"scriptPubKey": "76a914492ae280d70af33acf0ae7cd329b961e65e9cbd888ac",
"ismine": true,
"iswatchonly": false,
"isscript": false,
"pubkey": "0312eeb9ae5f14c3cf43cece11134af860c2ef7d775060e3a578ceec888acada31",
"iscompressed": true,
"account": "Test"
}
bitcoin-cli -testnet validateaddress 2MyVxxgNBk5zHRPRY2iVjGRJHYZEp1pMCSq
{
"isvalid" : true,
"address" : "2MyVxxgNBk5zHRPRY2iVjGRJHYZEp1pMCSq",
"ismine" : true,
"iswatchonly" : false,
"isscript" : true,
"script" : "multisig",
"hex" : "522103ede722780d27b05f0b1169efc90fa15a601a32fc6c3295114500c586831b6aaf2102ecd2d250a76d204011de6bc365a56033b9b3a149f679b c17205555d3c2b2854f21022d609d2f0d359e5bc0e5d0ea20ff9f5d3396cb5b1906aa9c56a0e7b5edc0c5d553ae",
"addresses" : [
"mjbLRSidW1MY8oubvs4SMEnHNFXxCcoehQ",
"mo1vzGwCzWqteip29vGWWW6MsEBREuzW94",
"mt17cV37fBqZsnMmrHnGCm9pM28R1kQdMG"
],
"sigsrequired" : 2,
"account" : "test account"
}

VerifyChain

验证本地区块链数据库的每个条目。
@CheckLevel[number(int),optional,0 or 1]->从0到4如何彻底检查每个区块。默认是使用-checklevel命令行参数设置level。如果未设置,默认值为3。每个更高级别包括较低级别的测试。有以下等级:
*0->确保从磁盘读取的文件可访问。
*1->确保每个区块有效。
*2->确保撤消文件可从磁盘读取并且格式有效。
*3->测试每个区块撤销,以确保其结果处于正确的状态。
*4->在撤消区块后,重连它们以确保它们可以正确地重连。
@NumberOfBlocks[number(int),optional,0 or 1]->要验证的区块数量。0表示测试所有区块。可通过命令行参数-checkblocks设置该值。如果未设置,默认为288。
@result[bool,required,1]->验证通过为true,失败为false。
bitcoin-cli -testnet verifychain 4 10000
true

VerifyMessage

验证一个签名的消息。
@Address[string(base58),required,1]->签名需要的私钥对应的P2PKH地址。P2PKH地址是一个私钥对应的公钥的哈希值。当检查ECDSA签名时,将从签名中重建最多四个可能的ECDSA公钥。每个密钥将被散列并与提供的P2PKH地址进行比较,以查看它们中的任何一个是否匹配。如果没有匹配,签名验证将失败。
@Signature[string(base64),required,1]->以base64编码的签名(同signmessage调用输出的格式)。
@Message[string,required,1]->完全按照签名的消息(例如,没有额外的空格)。
@result[bool/null,required,1]->如果消息由与提供的P2PKH地址对应的密钥签名,则设置为true; 如果它没有被该密钥签名,则设置为false; 如果发生错误,则设置为JSON null。
bitcoin-cli -testnet verifymessage \ mgnucj8nYqdrPFh2JfZSB1NmUThUGnmsqe \ IL98ziCmwYi5pL+dqKp4Ux+zCa4hP/xbjHmWh+Mk/lefV/0pWV1p/gQ94jgExSmgH2/+PDcCCrOHAady2IEySSI= \ 'Hello, World!' true

VerifyTxOutProof

验证指向块中的一个或多个交易的凭证点,返回凭证提交的交易。如果不在最佳区块链中时抛出RPC错误。
@proof[string,required]->以hex编码的凭证。
@result[string,required,1]->凭证的一个或多个TXID。如果凭证不可用,返回空数组。
bitcoin-cli verifytxoutproof \ 03000000394ab3f08f712aa0f1d26c5daa4040b50e96d31d4e8e3c130000000000000000\ ca89aaa0bbbfcd5d1210c7888501431256135736817100d8c2cf7e4ab9c02b168115d455\ 04dd1418836b20a6cb0800000d3a61beb3859abf1b773d54796c83b0b937968cc4ce3c0f\ 71f981b2407a3241cb8908f2a88ac90a2844596e6019450f507e7efb8542cbe54ea55634\ c87bee474ee48aced68179564290d476e16cff01b483edcd2004d555c617dfc08200c083\ 08ba511250e459b49d6a465e1ab1d5d8005e0778359c2993236c85ec66bac4bfd974131a\ dc1ee0ad8b645f459164eb38325ac88f98c9607752bc1b637e16814f0d9d8c2775ac3f20\ f85260947929ceef16ead56fcbfd77d9dc6126cce1b5aacd9f834690f7508ee2db2ab67d\ 382c5e738b1b6fe3fb079511952d33ec18c8440ef291eb8d3546a971ee4aa5e574b7be7f\ 5aff0b1c989b2059ae5a611c8ce5c58e8e8476246c5e7c6b70e0065f2a6654e2e6cf4efb\ 6ae19bf2548a7d9febf5b0aceaff28610922e1b9e23e52f650a4a11d2986c9c2b09bb168\ a70a7d4ac16e4d389bc2868ee91da1837d2cd79288bdc680e9c35ebb3ddfd045d69d767b\ 164ec69d5db9f995c045d10af5bd90cd9d1116c3732e14796ef9d1a57fa7bb718c07989e\ d06ff359bf2009eaf1b9e000c054b87230567991b447757bc6ca8e1bb6e9816ad604dbd6\ 0600 [
"f20e44c818ec332d95119507fbe36f1b8b735e2c387db62adbe28e50f7904683"
]

WalletLock

从内存移除钱包加密密钥,锁定钱包。调用完成后,您需要再次调用walletpassphrase才能调用任何需要解锁钱包的方法。
@result[null,required,1]->返回空值。
bitcoin-cli -testnet walletlock

WalletPassphrase

按指定的秒数在内存中存储钱包解密密钥。 在钱包已解锁的情况下发出walletpassphrase命令将设置一个覆盖旧的解锁时间的新解锁时间。
警告:如果在命令行使用该接口,请记住shell可能会保存你的命令行(包括密码参数的值)。
@Passphrase[string,required,1]->解锁钱包的密码。
@Seconds[number(int),required,1]->内存中的解密密钥自动删除的秒数。
@result[null,Required,1]->返回空值。
bitcoin-cli -testnet walletpassphrase test 600

WalletPassphraseChange

修改钱包的密码。
警告:如果在命令行使用该接口,请记住shell可能会保存你的命令行(包括密码参数的值)。
@CurrentPassphrase[string,required,1]->当前钱包密码。
@NewPassphrase[string,required,1]->新的钱包密码。
@result[null,required,1]->返回空值。
bitcoin-cli -testnet walletpassphrasechange test example

PublishContract

根据本地合约文件路径发布合约。
@FileName[string(hex),required,1]->要发布的合约文件路径。
@result[object,required,1]->对象。如果合约文件不存在,会设置 JSON 的 error 和字段。
>contractaddress[string(hex),required,1]->以 hex 编码的合约地址。
>senderaddress[string(hex),required,1]->以 hex 编码的发送者地址。
>code[string,required,1]->合约的数据。
bitcoin-cli -testnet walletpassphrasechange -publish /contract.lua
{
"contractaddress": "XFYPxdbtXA9dwT2wrDpXyXf7wP4J1WMLVN",
"senderaddress": "XHjsJMKszz171wXeDTpaw92DG8uNWdenKB",
"code":
"1b4c75615100010404040801000000000000000000000000000002021400000024000000070000002440000064800000000000004740000064c0000000000000478000006400010047c000006440010047000100648001004740010064c00100478001006400020047c001001e008000080000000405000000696e69740004090000007472616e7366657200040d0000007472616e7366657246726f6d000408000000617070726f76650004050000006275726e0004090000006275726e46726f6d00040a000000746f6b656e696e666f00040d00000067657442616c616e63654f66000900000000000000020000000c00000000000005200000000a00000007000000050000000980c080050000000900c181050000000980c18201c00100450000008540020086804201c1c0020005010000064141029c8080018e80000049800084450000008a00000049800086450000004600c3008540030086804301c5000000c600c20149c00001450000008a000000498080871e00800010000000040f00000050657273697374656e74446174610004050000006e616d6500040b000000746f6b656e5f6e616d6500040700000073796d626f6c00040200000024000409000000646563696d616c730003080000000000000003406f400100000000040c000000746f74616c537570706c790004050000006d617468000404000000706f7700030a00000000000000040a00000062616c616e63654f660004040000006d736700040700000073656e64657200040a000000616c6c6f77616e63650000000000200000000300000003000000040000000400000005000000050000000600000006000000070000000800000008000000080000000800000008000000080000000800000008000000080000000900000009000000090000000a0000000a0000000a0000000a0000000a0000000a0000000a0000000b0000000b0000000b0000000c000000010000000e000000696e697469616c537570706c7900090000001f00000000000000000000000e0000001e000000000300083d000000c5000000c640c0010581000017c0c0001600008042410000420180001c41000105010100400100011c81000180000002060180011a4100001600008001c10000c9000100064180011a4100001600008001c10000c90081000581000046018001594001011600008042410000420180001c41000105810000464180014c81800286418001584001031600008042410000420180001c41000106018001464180010c410102460180014d818002c9400100464180014c818002c94081004581000086018001c64180018cc10103570001031600008082410000820180005c4100014601800117c0c00216000080c94041001e00800006000000040f00000050657273697374656e744461746100040a00000062616c616e63654f66000407000000617373657274000300000000000000000409000000746f6e756d6265720000000000003d0000000f0000000f0000001000000010000000100000001000000010000000100000001100000011000000110000001100000013000000130000001300000013000000130000001400000014000000140000001400000014000000150000001500000015000000150000001500000015000000150000001600000016000000160000001600000016000000160000001600000016000000160000001700000017000000170000001800000018000000180000001900000019000000190000001a0000001a0000001a0000001a0000001a0000001a0000001a0000001a0000001a0000001b0000001b0000001b0000001c0000001e00000005000000060000005f66726f6d00000000003c000000040000005f746f00000000003c000000070000005f76616c756500000000003c0000000a00000062616c616e63654f6600020000003c0000001100000070726576696f757342616c616e63657300290000003c0000000000000000000000260000002b000000010200071000000084000000c5000000c640c00100010000400180009c40000285800000c1c00000050100000641400240010000800180009c408002820080009e0000011e0080000400000004040000006d736700040700000073656e6465720004060000007072696e740004090000007472616e73666572000000000010000000280000002800000028000000280000002800000028000000290000002900000029000000290000002900000029000000290000002a0000002a0000002b00000002000000040000005f746f00000000000f000000070000005f76616c756500000000000f000000010000000a0000005f7472616e736665720000000000340000003b000000010300081d000000c5000000c640c001058100004601800185c100008601410346818102594001011600008042410000420180001c4100010601800145c100004601c10286018001c5c10000c601c10386c101038d81000309818102040100004001000080018000c00100011c410002020180001e0100011e00800005000000040f00000050657273697374656e744461746100040a000000616c6c6f77616e63650004070000006173736572740004040000006d736700040700000073656e64657200000000001d00000036000000360000003700000037000000370000003700000037000000370000003700000037000000370000003700000038000000380000003800000038000000380000003800000038000000380000003800000039000000390000003900000039000000390000003a0000003a0000003b00000004000000060000005f66726f6d00000000001c000000040000005f746f00000000001c000000070000005f76616c756500000000001c0000000a000000616c6c6f77616e636500020000001c000000010000000a0000005f7472616e736665720000000000430000004900000000020005120000008500000086404001c5800000c6c0c0010581000006c14002060101011a410000160000800a01000089008101c5800000c6c0c001c6c00001c9400000c2008000de0000011e00800004000000040f00000050657273697374656e744461746100040a000000616c6c6f77616e63650004040000006d736700040700000073656e64657200000000001200000045000000450000004600000046000000460000004600000046000000460000004600000046000000460000004700000047000000470000004700000048000000480000004900000003000000090000005f7370656e646572000000000011000000070000005f76616c75650000000000110000000a000000616c6c6f77616e636500020000001100000000000000000000006100000069000000000100041e00000045000000800000005c80000100008000454000004680c00085c00000c5000100c640c101c6c0800059c0000016000080c2400000c20080009c4000018500010086404101c5000100c640c101c6c08000cd00800149c0000185400000c5400000c680c101cd00800189c00083820080009e0000011e008000070000000409000000746f6e756d62657200040f00000050657273697374656e744461746100040a00000062616c616e63654f660004070000006173736572740004040000006d736700040700000073656e64657200040c000000746f74616c537570706c7900000000001e00000063000000630000006300000063000000640000006400000065000000650000006500000065000000650000006500000065000000650000006500000066000000660000006600000066000000660000006600000066000000670000006700000067000000670000006700000068000000680000006900000002000000070000005f76616c756500000000001d0000000a00000062616c616e63654f6600060000001d0000000000000000000000710000007e000000000200083200000085000000c00080009c800001400000018540000086804001c5400000c6c0c001060100011a4100001600008001010100890001000541010046010001594081001600008042410000420180001c41000105410100460180018581010086c1410346818102594081001600008042410000420180001c410001060100010d41000289000100060180014581010046c1c10286018001c5810100c6c1c10386c101038d4100030981810205410000454100004601c2024d41800209410184020180001e0100011e008000090000000409000000746f6e756d62657200040f00000050657273697374656e744461746100040a00000062616c616e63654f6600040a000000616c6c6f77616e63650003000000000000000004070000006173736572740004040000006d736700040700000073656e64657200040c000000746f74616c537570706c790000000000320000007200000072000000720000007200000073000000730000007400000074000000760000007600000076000000760000007600000078000000780000007800000078000000780000007800000078000000790000007900000079000000790000007900000079000000790000007900000079000000790000007a0000007a0000007a0000007b0000007b0000007b0000007b0000007b0000007b0000007b0000007b0000007b0000007c0000007c0000007c0000007c0000007c0000007d0000007d0000007e00000004000000060000005f66726f6d000000000031000000070000005f76616c75650000000000310000000a00000062616c616e63654f660006000000310000000a000000616c6c6f77616e636500080000003100000000000000000000008000000085000000000000040a0000000500000006404000450000004680c0008500000086c04001c5000000c600c1011e0080021e00800005000000040f00000050657273697374656e74446174610004050000006e616d6500040700000073796d626f6c000409000000646563696d616c7300040c000000746f74616c537570706c7900000000000a00000081000000810000008200000082000000830000008300000084000000840000008400000085000000000000000000000000000000870000008d000000000100060e0000005b40000016400080450000004640c0008580000086c04001c6400001da40000016000080c100010000018000400180011e0180011e0080000500000004040000006d736700040700000073656e64657200040f00000050657273697374656e744461746100040a00000062616c616e63654f6600030000000000000000000000000e000000880000008800000088000000880000008a0000008a0000008b0000008b0000008b0000008b0000008c0000008c0000008c0000008d00000004000000090000005f77686f6164647200000000000d000000050000006164647200040000000d0000000a00000062616c616e63654f6600060000000d0000000800000062616c616e6365000a0000000d00000000000000140000000c000000020000001e0000002b0000002b000000260000003b0000003b00000034000000490000004300000069000000610000007e0000007100000085000000800000008d000000870000008d000000010000000a0000005f7472616e7366657200030000001300000000000000"
}

PublishContractCode

远程发布合约call 查询式调用。
@codehex[string(hex),required,1]->以hex编码的合约数据。
@result[object,required,1]->返回与示例与PublicContract的内容相同。

Call

查询式调用,不会产生智能合约调用交易,不会对区块链数据做修改。
@ContractAddress[string(hex),required,1]->以hex编码的合同地址,也是PublicContract和PublicContractCode返回值的contractaddress字段。
@SenderAddress[string(hex),required,1]->以hex编码的发送者地址,也是PublicContract和PublicContractCode返回值的senderaddress字段。
@FunctionName[string,required,1]->要调用的智能合约上的接口函数名。
@result[bool,required,1]->根据智能合约上的接口的返回值返回。
bitcoin-cli -testnet call "XVBjHmCPKg1EuYffgEGnQYjAZF7R4LxMmb" "XYcGmQE7pETw3FksH8Q9c4cfGAk6z7uHih" transfer "XDFxh2DTuzpuEGECNL12xKz8MEVDP4btT1" 20 [
true
]

SendCall

修改式调用,会产生智能合约调用交易,可能会对区块数据做修改。
@ContractAddress[string(hex),required,1]->以hex编码的合同地址,也是PublicContract和PublicContractCode返回值的contractaddress字段。
@SenderAddress[string(hex),required,1]->以hex编码的发送者地址,也是PublicContract和PublicContractCode返回值的senderaddress字段。
@FunctionName[string,required,1]->要调用的智能合约上的接口函数名。
@result[bool,required,1]->根据智能合约上的接口的返回值返回。
\ bitcoin-cli -testnet sendcall "XVBjHmCPKg1EuYffgEGnQYjAZF7R4LxMmb" "XYcGmQE7pETw3FksH8Q9c4cfGAk6z7uHih" transfer "XDFxh2DTuzpuEGECNL12xKz8MEVDP4btT1" 20 [
true
]

MagnaChain CreateBranchChainManual

1.Startup main chain

./magnachaind -daemon
-rpcuser=magnachain
[email protected]
-datadir=/home/magnachain/L1_1

2.create branch chain on the main chain

1) get new address:
rpc command:
./magnachain-cli
-rpcuser=magnachain
[email protected]
-datadir=/home/magnachain/L1_1 getnewaddress
return:
XRUMn1xfYEE7WHUgXwKNNZRAUqoxKCZVLb
2) create branch chain:
rpc command:
./magnachain-cli
-rpcuser=magnachain
[email protected]
-datadir=/home/magnachain/L1_1
createbranchchain
clvseeds.com
00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:3b:80:8333
XRUMn1xfYEE7WHUgXwKNNZRAUqoxKCZVLb
return:
{
"txid": "d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a",
"branchid": "d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a"
}

3.Add branch node to main chain

rpc command:
./magnachain-cli
-rpcuser=magnachain
[email protected]
-datadir=/home/magnachain/L1_1
addbranchnode
d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a
127.0.0.1 9201 magnachain [email protected]
return:
ok

4.Modify branch chain configure

L2_1/cellllink.conf
port=9101
rpcport=9201
branchid=d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a
mainchaincfg={"ip":"127.0.0.1","port":8201,"usrname":"magnachain","password":"[email protected]"}
vseeds=clvseeds.com
seedspec6=00:00:00:00:00:00:00:00:00:00:ff:ff:c0:a8:3b:80:8333

5.startup branch chain

./magnachaind -daemon
-rpcuser=magnachain
[email protected]
-datadir=/home/magnachain/L2_1

6.Modify main chain configure and add branchid information

L1_1/magnachain.conf
port=8101
rpcport=8201
branchcfg={
"branchid":"d880f0a6ef40696e5c01edc06e5bab58593de761090d24203bbc2aef6ab2c18a", "ip":"127.0.0.1", "port":9201, "usrname":"magnachain", "password":"[email protected]"
}

MagnaChain smart contract manual

1. Smart Contract Overview

  • a. MagnaChain's smart contract is written in Lua language, and is modified in the official 5.1 version. All syntax is reserved. The number type changed to long long, and no other data types have been modified. Removed security-related basic libraries, such as io, os, etc. Removed floating-point related operation function, retained math.pow, math.max, math, min.
  • b. Contract interface visibility. Global functions are available for external calls, and local functions can only be called internally in contracts.
  • c. Data persistence and initialization. The data that needs to be stored in the contract is added to the global variable PersistentData.
  • d. The cost of the contract. Publishing and invoking contracts require a small fee. The fee is calculated based on the number of instructions executed and the size of the data that needs to be stored.
  • e. Caller and block related data. In the contract can get the following data through the global table msg:

2. Writing Smart Contracts

  • a. Overview:The contract is written using the Lua language script UTF8 (NOBOM) encoding format.
  • b. Limitations: In order to prevent excessive execution of some scripts and infinite loops, the contract limits the number of executable instructions. Users can add the data that needs to be saved to the global variable PersistentData. The data will be packaged and stored. The data size is limited to prevent excessive use of computer resources.
  • c. Initialize: Users can choose whether or not to add the initialization interface init() according to their needs. The interface will be called once only when the contract is released and the corresponding fee will be calculated.

3. Publish Smart Contract

  • a. The publisher publishes the written Lua file locally. Lua's virtual machine built into MagnaChain parses it into bytecodes, stores it in the transaction data, and calculates the relevant fees, then returns the address of the contract.
  • b. Command line format:
  • publish ${ContractFilePath}
  • parameters:
  • @ContractFilePath[string,required,1]-> The absolute path of the contract file to publish.
  • return value:
  • @contractaddress[string(hex),required,1]->The hex-encoded contract address.
  • @senderaddress[string(hex),required,1]-> The hex encoded sender address.
  • If the execution fails, the related string information is returned.
  • eg:
  • publishcontractcode ${ContractHexData}
  • parameters:
  • @ContractHexData[string(hex),required,1]-> The hex encoded contract file data.
  • return value:
  • Returns an object when successful, including the following fields:
  • @contractaddress[string(hex),required,1]-> The hex-encoded contract address.
  • @senderaddress[string(hex),required,1]-> the hex encoded sender address.
  • If the execution fails, the related string information is returned.

4. Call Smart Contract

  • a. The publisher or other user can find the bytecode corresponding to the contract through the returned contract address, load it into the Lua virtual machine, and call the interface on the contract to complete the transaction with relevant parameters. After the transaction is completed, the relevant fees will be deducted based on the number of execution instructions and the size of the data.
  • b. Command line format: There are two formats. The difference is that sendcall will broadcast transaction data, and call will not broadcast transaction data.
  • sendcall ${ContractAddress} $(amountCell) ${SenderAddress}
  • ${FunctionName} ${Params}
  • or
  • call ${ContractAddress} ${SenderAddress} ${FunctionName} ${Params}
  • parameters:
  • @ContractAddress[string(hex),required,1]-> he hex-encoded contract address, the contractaddress field of the Public and PublicContractCode return values.
  • @ amountCell[number,required,1] Coins sent to smart contracts.
  • @SenderAddress[string(hex),required,1]-> The hex-encoded sender address is also the senderaddress field of the Public and PublicContractCode return values.
  • @FunctionName[string,required,1]-> The name of the interface function on the calling smart contract.
  • @Params[string or number,optional,0 or More]-> The corresponding parameters passed to the smart contract interface.
  • return value:
  • he execution is successful and returns based on the return value of the interface on the smart contract.
  • if the execution fails, the related string information is returned.
  • eg:

5.Start Node

  • a. Connect the main network (now test network)
  • Linux:
  • magnachaind -daemon
  • windows:
  • celld.exe
  • b. Data path
  • Default:
  • Linux: ~/.magnachain
  • Window: C:\Users\$username$\AppData\Roaming\MagnaChain
  • c. Common startup parameters
  • -daemon background process
  • -printtoconsole log output to the console
  • -datadir=your_dir specify data directory, use the default path if not specified
  • -regtest=1 regression test network, not connected to external network nodes
  • d. Test whether it is connected to the main network (test network)
  • Linux:
  • magnachain-cli getinfo
  • window:
  • cell-cli.exe getinfo
  • return value
  • On success, connections are non-zero and blocks are updated.

MagnaChain manual

1、windows system deployment

  • Execution procedure description
    magnachain.exe:The core program that runs is commonly known as the magnachain core. It is also the execution program that must be started first.
    magnachain-cli.exe:A full-featured RPC client, including query blocks, transaction information, and more.

  • Create a new configuration file magnachain.conf
    Create a new magnachain.conf in a custom directory (eg D:\data\), as shown below:

    port=8099 # Listening port, the default (not set) : 8833
    rpcport=9201 # rpc call port
    rpcuser=user # rpc user name
    rpcpassword=pwd # rpc password
  • Start the MagnaChain local node
    In the cmd life mode, enter the MagnaChain project directory
    Execute the following command:
    magnachain.exe -datadir=D:\data\ -regtest=1 -daemon
  • magnachain-cli calls RPC command
    Check whether the node is successful by using the getinfo command:
    magnachain-cli.exe -datadir=D:\data\ -regtest=1 getinfo

     Note: If running magnachain.exe fails, please run vc_redist.x86.exe

2、centos(ubuntu) system deployment

  • Execution procedure description
    magnachaind:The core program that runs is commonly known as the magnachain core. It is also the execution program that must be started first.
    magnachain-cli:A full-featured RPC client, including query blocks, transaction information, and more.
  • Load the running dependent library
    Execute the file directory download execution in MagnaChain:
    chmod +x loadlib.sh
    ./loadlib.sh
  • Create a new configuration file magnachain.conf
    Create a new magnachain.conf in a custom directory (eg: /Users/jerry/data), as shown below:

    Common parameter description
    port=8099 # Listening port, the default (not set) : 8833
    rpcport=9201 # rpc call port
    rpcuser=user # rpc user name
    rpcpassword=pwd # rpc password
  • Start the MagnaChain local node
    In the cmd life mode, enter the MagnaChain project directory
    Execute the following command:
    ./magnachaind -datadir=/Users/jerry/data -regtest=1 -daemon
  • magnachain-cli calls RPC command
    Check whether the node is successful by using the getinfo command:
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 getinfo

3、Common rpc commands

  • getinfo: Returns an object containing various state info
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 getinfo

  • getnewaddress: Returns a new Bitcoin address for receiving payments
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 getnewaddress (“account”)

  • listaccounts: List account balances where there at least 1 confirmatio
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 listaccounts

  • listwallets: Returns a list of currently loaded wallets
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 listwallets

  • getwalletinfo: Returns an object containing various wallet state info
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 getwalletinfo

  • generate/generateforbigboom: Mine up to nblocks blocks immediately (before the RPC call returns) to an address in the wallet
    ./magnachain-cli -datadir=/Users/jerry/data -regtest=1 generateforbigboom 1

4、smart contract

  • publish
    a. The publisher publishes the written Lua file locally. Lua's virtualmachine built into MagnaChain parses it into bytecodes, stores it in thetransaction data, and calculates the relevant fees, then returns theaddress of the contract.
    b. Command line format:
    publish ${ContractFilePath} parameters:
    @ContractFilePath[string,required,1]-> The absolute path of the contract file
    to publish.
    return value:
    @contractaddress[string(hex),required,1]->The hex-encoded contract address.
    @senderaddress[string(hex),required,1]-> The hex encoded sender address.
    If the execution fails, the related string information is returned.
    eg:

    publishcontractcode ${ContractHexData}
    parameters:
    @ContractHexData[string(hex),required,1]-> The hex encoded contract file data.
    return value:
    Returns an object when successful, including the following fields:
    @contractaddress[string(hex),required,1]-> The hex-encoded contract address.
    @senderaddress[string(hex),required,1]-> the hex encoded sender address.
    If the execution fails, the related string information is returned.
  • call
    a. The publisher or other user can find the bytecode corresponding to the contract through the returned contract address, load it into the Lua virtual machine, and call the interface on the contract to complete the transaction with relevant parameters. After the transaction is completed, the relevant fees will be deducted based on the number of execution instructions and the size of the data.
    b. Command line format: There are two formats. The difference is that sendcall will broadcast transaction data, and call will not broadcast transaction data.
    sendcall ${ContractAddress} $(amountCell) ${SenderAddress} ${FunctionName} ${Params}
    or
    call ${ContractAddress} ${SenderAddress} ${FunctionName} ${Params}
    parameters: @ContractAddress[string(hex),required,1]-> he hex-encoded contract address,
    the contractaddress field of the Public and PublicContractCode return values.
    @ amountCell[number,required,1] Coins sent to smart contracts.
    @SenderAddress[string(hex),required,1]-> The hex-encoded sender address
    is also the senderaddress field of the Public and PublicContractCode return values.
    @FunctionName[string,required,1]-> The name of the interface function on the calling
    smart contract. @Params[string or number,optional,0 or More]-> The corresponding parameters
    passed to the smart contract interface.
    return value:
    he execution is successful and returns based on the return value
    of the interface on the smart contract.。 if the execution fails, the related string information is returned.
    eg: