19个稳定版本
1.3.17 | 2021年10月25日 |
---|---|
1.3.14 | 2021年8月23日 |
1.3.12 |
|
1.2.0 | 2021年2月28日 |
1.1.4 | 2020年8月27日 |
#2720 in 魔法豆
每月37次下载
2.5MB
13K SLoC
snarkos-rpc
在Aleo上,完整节点运行一个JSON-RPC服务器,以启用API调用以获取数据和与网络中连接的节点进行交互。
RPC端口
snarkos --rpc-port 3030
默认RPC端口为3030
。可以通过在启动节点时使用--rpc-port
标志来指定自定义RPC端口。
私有RPC端点的身份验证
snarkos --rpc-username {USERNAME} --rpc-password {PASSWORD}
RPC服务器公开受保护的RPC端点,用于执行特定于账户的操作,如创建账户、创建交易和获取记录承诺。可以向受保护的RPC端点的RPC请求中添加身份验证头。
要启用此身份验证层,请在启动完整节点时提供身份验证凭据到--rpc-username
和--rpc-password
标志。
decoderawtransaction
从序列化交易字节返回有关交易的信息。
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
transaction_bytes |
字符串 | 是 | 要解码的原始交易十六进制 |
响应
参数 | 类型 | 描述 |
---|---|---|
txid |
字符串 | 交易ID |
大小 |
数字 | 交易字节数 |
old_serial_numbers |
数组 | 旧记录序列号列表 |
new_commitments |
数组 | 新记录承诺列表 |
memo |
字符串 | 交易备注 |
network_id |
数字 | 交易网络ID |
digest |
字符串 | 梅克尔树摘要 |
transaction_proof |
字符串 | 交易零知识证明 |
程序提交承诺 |
字符串 | 程序验证密钥承诺 |
local_data_root |
字符串 | 本地数据根 |
value_balance |
数字 | 交易价值平衡 |
signatures |
数组 | 交易签名列表 |
encrypted_records |
数组 | 新加密记录列表 |
transaction_metadata |
object | 交易元数据 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "decoderawtransaction", "params": ["transaction_hexstring"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getbestblockhash
返回最佳有效链的头部块哈希。
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
result |
字符串 | 最新有效块的块哈希 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getbestblockhash", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getblock
根据块哈希返回有关块的信息。
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
block_hash |
字符串 | 是 | 请求块的块哈希 |
响应
参数 | 类型 | 描述 |
---|---|---|
confirmations |
数字 | 此块的确认次数 |
difficulty_target |
数字 | 块的难度 |
hash |
字符串 | 块哈希(与提供的相同) |
height |
数字 | 块高度 |
merkle_root |
数字 | 块中事务的Merkle根 |
nonce |
数字 | 解决PoSW谜题的nonce |
pedersen_merkle_root_hash |
数字 | 使用Pedersen哈希的块中事务的Merkle根 |
previous_block_hash |
字符串 | 父块的块哈希 |
proof |
字符串 | 简明工作证明 |
大小 |
数字 | 块的字节大小 |
time |
数字 | 块时间 |
transactions |
数组 | 包含在块中的事务ID列表 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getblock", "params": ["caf49293d36f0215cfb3296dbc871a0ef5e5dcfc61f91cd0c9ac2c730f84d853"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getblockcount
返回最佳有效链中的块数量。
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
result |
数字 | 最佳有效链中的块数量 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getblockcount", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getblockhash
返回最佳有效链中给定块高度的块哈希。
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
block_height |
数字 | 是 | 请求块哈希的块高度 |
响应
参数 | 类型 | 描述 |
---|---|---|
result |
字符串 | 给定块高度的块哈希 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getblockhash", "params": [100] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getblocktemplate
返回此节点所知的当前内存池和共识信息。
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
previous_block_hash |
字符串 | 当前最高块的哈希 |
block_height |
数字 | 下一个块的高度 |
time |
数字 | 当前时间戳 |
difficulty_target |
数字 | 块难度目标 |
transactions |
数组 | 要包含在块中的原始事务列表 |
coinbase_value |
数字 | coinbase交易可花费的金额 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getblocktemplate", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getconnectioncount
返回此节点连接的节点数。
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
result |
数字 | 连接的节点数 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getconnectioncount", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getnetworkgraph
返回此节点爬取的网络图(如果它是爬虫)。
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
node_count |
usize | 节点所知的节点数 |
connection_count |
usize | 节点所知的连接数 |
density |
f64 | 已知网络的密度 |
algebraic_connectivity |
f64 | 代数连通性,也称为已知网络的Fiedler特征值 |
degree_centrality_delta |
f64 | 网络中最大和最小对等体计数的差值 |
potential_tip |
Option | 爬虫对规范块高度和成员地址的最佳猜测 |
potential_forks |
数组 | 爬虫对网络中分叉的最佳猜测 |
edges |
数组 | 节点所知的连接列表 |
vertices |
数组 | 节点所知的节点列表 |
edges[i].source |
SocketAddr | 爬取连接的一侧 |
edges[i].target |
SocketAddr | 爬取连接的另一侧 |
vertices[i].addr |
SocketAddr | 记录的爬取节点的地址 |
vertices[i].is_beacon |
bool | 指示节点是否是信标 |
vertices[i].is_sync_provider |
bool | 指示节点是否是同步提供者 |
vertices[i].degree_centrality |
u16 | 节点的度中心性,即其连接计数 |
vertices[i].eigenvector_centrality |
f64 | 节点的特征向量中心性,表示其在网络中的相对重要性 |
vertices[i].菲德勒值 |
f64 | 节点的菲德勒值,可用于对网络图进行划分 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getnetworkgraph", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getnodeinfo
返回有关节点的信息。
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
node_type |
NodeType | 指示节点类型的标志 |
is_miner |
bool | 指示节点是否是矿工的标志 |
is_syncing |
bool | 指示节点是否正在同步的标志 |
launched |
timestamp | 节点启动的时间戳 |
listening_addr |
SocketAddr | 节点配置的监听地址 |
version |
字符串 | 客户端二进制文件的版本 |
min_peers |
数字 | 期望连接的最小节点数 |
max_peers |
数字 | 允许的最大连接节点数 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getnodeinfo", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getnodestats
返回与节点相关的统计信息。
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
blocks.height |
u32 | 节点当前的区块高度 |
blocks.mined |
u32 | 节点挖掘的区块数量 |
blocks.inbound_processing_time |
f64 | 接收区块的平均处理时间(秒) |
blocks.commit_time |
f64 | 区块验证和提交时间(秒) |
blocks.duplicates |
u64 | 接收到的重复区块数量 |
blocks.duplicates_sync |
u64 | 接收到的重复同步区块数量 |
connections.all_accepted |
u64 | 节点接收到的连接请求数量 |
connections.all_initiated |
u64 | 节点发出的连接请求数量 |
connections.all_rejected |
u64 | 节点拒绝的连接请求数量 |
connections.average_duration |
f64 | 平均连接持续时间(秒) |
connections.connected_peers |
u32 | 当前连接的节点数量 |
connections.connecting_peers |
u32 | 当前正在连接的节点数量 |
connections.disconnected_peers |
u32 | 已知的断开连接节点数量 |
handshakes.failures_init |
u64 | 作为发起者失败的握手次数 |
handshakes.failures_resp |
u64 | 作为响应者失败的握手次数 |
handshakes.successes_init |
u64 | 作为发起者成功的握手次数 |
handshakes.successes_resp |
u64 | 作为响应者成功的握手次数 |
handshakes.timeouts_init |
u64 | 作为发起者握手超时次数 |
handshakes.timeouts_resp |
u64 | 作为响应者握手超时次数 |
inbound.all_successes |
u64 | 成功处理的所有入站消息数量 |
inbound.all_failures |
u64 | 无法处理的入站消息数量 |
inbound.blocks |
u64 | 所有接收到的Block消息数量 |
inbound.getblocks |
u64 | 所有接收到的GetBlocks消息数量 |
inbound.getmemorypool |
u64 | 所有接收到的GetMemoryPool消息数量 |
inbound.getpeers |
u64 | 所有接收到的GetPeers消息数量 |
inbound.getsync |
u64 | 所有接收到的GetSync消息数量 |
inbound.memorypool |
u64 | 所有接收到的MemoryPool消息数量 |
inbound.peers |
u64 | 所有接收到的Peers消息数量 |
inbound.pings |
u64 | 所有接收到的Ping消息数量 |
inbound.pongs |
u64 | 所有接收到的Pong消息数量 |
inbound.syncs |
u64 | 所有接收到的Sync消息数量 |
inbound.syncblocks |
u64 | 所有接收到的SyncBlock消息数量 |
inbound.transactions |
u64 | Transaction |
inbound.所有接收到的Transaction消息数量 |
u64 | unknown |
所有接收到的未知消息数量.internal_rtt |
f64 | getpeer |
所有接收到的未知消息数量.getsync |
f64 | GetPeer消息的平均内部RTT(查询到响应)(秒) |
所有接收到的未知消息数量.getblocks |
f64 | GetSync消息的平均内部RTT(秒) |
所有接收到的未知消息数量.getmemorypool |
f64 | GetBlocks消息的平均内部RTT(秒) |
GetMemoryPool消息的平均内部RTT(秒).misc |
f64 | rpc_requests |
节点接收到的RPC请求数量.all_successes |
u64 | outbound |
节点接收到的RPC请求数量.all_failures |
u64 | 成功发送的消息数量 |
发送消息失败的数量.queues |
u64 | consensus |
发送消息失败的数量.inbound |
u64 | 排队中的共识请求数量 |
发送消息失败的数量.节点接收到的RPC请求数量 |
u64 | 在通用入站通道中排队的消息数量 |
发送消息失败的数量.在单独的出站通道中排队的消息数量 |
u64 | 队列中已排队的对等事件数量 |
发送消息失败的数量.存储 |
u64 | 队列中存储请求的数量 |
发送消息失败的数量.sync_items |
u64 | 队列中同步项的数量 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getnodestats", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getpeerinfo
返回节点已连接的对等节点。
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
peers |
数组 | 已连接对等节点IP列表 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getpeerinfo", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getrawtransaction
根据交易ID返回交易的十六进制编码的字节。
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
transaction_id |
字符串 | 是 | 请求的交易ID的十六进制表示 |
响应
参数 | 类型 | 描述 |
---|---|---|
result |
字符串 | 十六进制编码的交易字节 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getrawtransaction", "params": ["83fc73b8a104d7cdabe514ec4ddfeb7fd6284ff8e0a757d25d8479ed0ffe608b"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
gettransactioninfo
根据交易ID返回关于交易的详细信息。
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
transaction_id |
字符串 | 是 | 请求的交易信息的交易ID |
响应
参数 | 类型 | 描述 |
---|---|---|
txid |
字符串 | 交易ID |
大小 |
数字 | 交易字节数 |
old_serial_numbers |
数组 | 旧记录序列号列表 |
new_commitments |
数组 | 新记录承诺列表 |
memo |
字符串 | 交易备注 |
network_id |
数字 | 交易网络ID |
digest |
字符串 | 梅克尔树摘要 |
transaction_proof |
字符串 | 交易零知识证明 |
程序提交承诺 |
字符串 | 程序验证密钥承诺 |
local_data_root |
字符串 | 本地数据根 |
value_balance |
数字 | 交易价值平衡 |
signatures |
数组 | 交易签名列表 |
encrypted_records |
数组 | 新加密记录列表 |
transaction_metadata |
object | 交易元数据 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "gettransactioninfo", "params": ["83fc73b8a104d7cdabe514ec4ddfeb7fd6284ff8e0a757d25d8479ed0ffe608b"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
sendtransaction
将原始交易字节发送到该节点以将其添加到内存池。如果有效,交易将被存储并传播给所有对等节点。
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
transaction_bytes |
字符串 | 是 | 要广播的原始交易十六进制 |
响应
参数 | 类型 | 描述 |
---|---|---|
result |
字符串 | 发送交易的交易ID |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "sendtransaction", "params": ["transaction_hexstring"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
validaterawtransaction
验证交易并返回交易是否有效。
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
transaction_bytes |
字符串 | 是 | 要验证的原始交易十六进制 |
响应
参数 | 类型 | 描述 |
---|---|---|
result |
布尔值 | 检查交易是否有效 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "validaterawtransaction", "params": ["transaction_hexstring"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
connect
将给定的地址添加到节点的对等节点列表并尝试连接到它们。
受保护端点
是
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
addresses |
数组 | 是 | 以IP:端口号格式的连接地址 |
响应
null
示例
curl --user username:password --data-binary '{"jsonrpc": "2.0", "id":"1", "method": "connect", "params": ["127.0.0.1:4141", "127.0.0.1:4142"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
createaccount
创建新的账户私钥及其对应的账户地址。
受保护端点
是
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
private_key |
字符串 | Aleo账户私钥 |
view_key |
字符串 | Aleo账户视图密钥 |
address |
字符串 | Aleo账户地址 |
示例
curl --user username:password --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "createaccount", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
createrawtransaction
创建新的交易并返回编码的交易以及编码的记录。
受保护端点
是
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
old_records |
数组 | 是 | 要花费的十六进制编码记录数组 |
old_account_private_keys |
数组 | 是 | 授权花费记录的私钥数组 |
recipients |
数组 | 是 | 交易接收对象数组 |
memo |
字符串 | No | 交易备注 |
network_id |
数字 | 是 | 交易的网络ID |
Transaction Recipient Object
参数 | 类型 | 描述 |
---|---|---|
address |
字符串 | 接收者地址 |
value |
数字 | 发送给接收者的金额 |
响应
参数 | 类型 | 描述 |
---|---|---|
encoded_transaction |
字符串 | 生成的交易的十六进制编码 |
encoded_records |
数组 | 生成的记录的十六进制编码 |
示例
curl --user username:password --data-binary '{
"jsonrpc":"2.0",
"id": "1",
"method": "createrawtransaction",
"params": [
{
"old_records": ["record_hexstring"],
"old_account_private_keys": ["private_key_string"],
"recipients": [{
"address": "address_string",
"amount": amount
}],
"memo": "memo_hexstring",
"network_id": 0
}
]
}' -H 'content-type: application/json' http://127.0.0.1:3030/
createtransaction
从给定的交易内核创建新的交易,并返回编码的交易和新记录。
受保护端点
是
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
private_keys |
[string] | 是 | 私钥字符串数组 |
transaction_kernel |
字符串 | 是 | 十六进制编码的交易内核 |
响应
参数 | 类型 | 描述 |
---|---|---|
encoded_transaction |
字符串 | 生成的交易的十六进制编码 |
encoded_records |
数组 | 生成的记录的十六进制编码 |
示例
curl --user username:password --data-binary '{
"jsonrpc":"2.0",
"id": "1",
"method": "createtransaction",
"params": ["[private_key_0, private_key_1]", "transaction_kernel_hexstring"]
}' -H 'content-type: application/json' http://127.0.0.1:3030/
createtransactionkernel
创建新的交易内核。
受保护端点
是
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
old_records |
数组 | 是 | 要花费的十六进制编码记录数组 |
old_account_private_keys |
数组 | 是 | 授权花费记录的私钥数组 |
recipients |
数组 | 是 | 交易接收对象数组 |
memo |
字符串 | No | 交易备注 |
network_id |
数字 | 是 | 交易的网络ID |
Transaction Recipient Object
参数 | 类型 | 描述 |
---|---|---|
address |
字符串 | 接收者地址 |
value |
数字 | 发送给接收者的金额 |
响应
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
transaction_kernel |
字符串 | 是 | 十六进制编码的交易内核 |
示例
curl --user username:password --data-binary '{
"jsonrpc":"2.0",
"id": "1",
"method": "createtransactionkernel",
"params": [
{
"old_records": ["record_hexstring"],
"old_account_private_keys": ["private_key_string"],
"recipients": [{
"address": "address_string",
"amount": amount
}],
"memo": "memo_hexstring",
"network_id": 0
}
]
}' -H 'content-type: application/json' http://127.0.0.1:3030/
decoderecord
从序列化的记录十六进制中返回关于记录的信息。
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
record_bytes |
字符串 | 是 | 要解码的原始记录十六进制 |
响应
参数 | 类型 | 描述 |
---|---|---|
owner |
字符串 | 记录的所有者 |
is_dummy |
数字 | 下一个块的高度 |
value |
数字 | 当前时间戳 |
payload |
object | 记录有效载荷 |
birth_program_id |
字符串 | 出生程序表示 |
death_program_id |
字符串 | 死亡程序表示 |
serial_number_nonce |
字符串 | 序列号随机数 |
commitment |
字符串 | 记录承诺 |
commitment_randomness |
字符串 | 记录承诺随机数 |
示例
curl --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "decoderecord", "params": ["record_hexstring"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
decryptrecord
解密加密记录并返回记录的十六进制编码字节。
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
encrypted_record |
字符串 | 是 | 加密记录 |
account_view_key |
字符串 | 是 | 用于解密密文的账户视图密钥 |
响应
参数 | 类型 | 描述 |
---|---|---|
result |
字符串 | 记录十六进制编码字节 |
示例
curl --user username:password --data-binary '{
"jsonrpc":"2.0",
"id": "1",
"method": "decryptrecord",
"params": [
{
"encrypted_record": "encrypted_record_string",
"account_view_key": "account_view_key_string"
}
]
}' -H 'content-type: application/json' http://127.0.0.1:3030/
disconnect
从给定地址断开节点连接。
受保护端点
是
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
address |
字符串 | 是 | 以IP:端口号格式的断开连接地址 |
响应
null
示例
curl --user username:password --data-binary '{"jsonrpc": "2.0", "id":"1", "method": "disconnect", "params": ["127.0.0.1:4141"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getrawrecord
根据记录承诺返回记录的十六进制编码字节。
受保护端点
是
参数
参数 | 类型 | 是否必需 | 描述 |
---|---|---|---|
record_commitment |
字符串 | 是 | 记录承诺 |
响应
参数 | 类型 | 描述 |
---|---|---|
result |
字符串 | 记录十六进制编码字节 |
示例
curl --user username:password --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getrawrecord", "params": ["86be61d5f3bd795e31615d6834efefca01ad023d57c0383e2231e094bcabfc05"] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getrecordcommitmentcount
返回全节点上存储的记录承诺数量。
受保护端点
是
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
result |
数字 | 存储的记录承诺数量 |
示例
curl --user username:password --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getrecordcommitmentcount", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
getrecordcommitments
返回全节点上存储的记录承诺列表。
受保护端点
是
参数
None
响应
参数 | 类型 | 描述 |
---|---|---|
result |
数组 | 存储的记录承诺列表 |
示例
curl --user username:password --data-binary '{"jsonrpc": "2.0", "id":"documentation", "method": "getrecordcommitments", "params": [] }' -H 'content-type: application/json' http://127.0.0.1:3030/
贡献
如何更新此README
本README文件是在持续集成过程中自动生成的。要更新此README文件,请提交一个更新相应Markdown文件的pull request,该文件位于文档和配置文件中。
依赖项
~76MB
~863K SLoC