19个稳定版本

1.3.17 2021年10月25日
1.3.14 2021年8月23日
1.3.12 2021年7月30日
1.2.0 2021年2月28日
1.1.4 2020年8月27日

#2720 in 魔法豆

每月37次下载

GPL-3.0 许可证

2.5MB
13K SLoC

snarkos-rpc

Crates.io Authors License: GPL v3

在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