5个版本 (3个破坏性更新)

0.4.0 2024年7月4日
0.3.0 2024年5月15日
0.2.1 2024年4月27日
0.2.0 2024年4月12日
0.1.0 2024年3月11日

#25 in #miden

Download history 17/week @ 2024-04-14 102/week @ 2024-04-21 40/week @ 2024-04-28 1/week @ 2024-05-05 171/week @ 2024-05-12 22/week @ 2024-05-19 1/week @ 2024-06-02 4/week @ 2024-06-09 2/week @ 2024-06-16 151/week @ 2024-06-30 5/week @ 2024-07-07 1/week @ 2024-07-14 36/week @ 2024-07-28

81 每月下载次数
用于 miden-node

MIT 许可证

505KB
10K SLoC

Miden节点RPC

RPC 是一个对外组件,客户端可以通过它与节点交互。它接收客户端请求(例如,与链的最新状态同步或提交交易),执行基本验证,并将请求转发到适当的组件。RPCMiden节点 的组件之一。

架构

待办事项

使用方法

安装RPC

RPC可以作为 Miden节点 的一部分进行安装和运行。

API

RPC 使用在先前提到的配置文件中设置的端口号上的 gRPC协议 来服务连接。以下是支持方法的简要描述。

CheckNullifiers

获取给定nullifier哈希的证明列表,每个证明作为稀疏Merkle树

参数

  • nullifiers: [Digest] – nullifier哈希数组。

返回

  • proofs: [NullifierProof] – nullifier证明数组,位置对应于请求中的位置。

GetBlockHeaderByNumber

通过给定的块号检索块头,可选地附带Merkle路径和当前链长度以验证其包含。

参数

  • block_num: uint32 (可选) – 目标块的块号。如果未提供,将返回最新的已知块。

返回

  • block_header: BlockHeader – 区块头。

GetBlockByNumber

根据给定的区块编号检索区块数据。

参数

  • block_num: uint32 – 目标块的区块编号。

返回

  • block: Block – 以 Miden 原生格式编码的区块数据。

GetNotesById

返回与提供的笔记 ID 匹配的笔记列表。

参数

  • note_ids: [NoteId] - 我们要查询的笔记 ID 列表。

返回

  • notes: [Note] - 与请求的 NoteIds 列表匹配的笔记列表。

GetAccountDetails

返回指定 ID 的账户的最新状态。

参数

  • account_id: AccountId – 账户 ID。

返回

  • account: AccountInfo – 账户的最新状态。对于公共账户,这将包括描述当前账户状态的完整细节。对于私人账户,只返回最新状态的哈希和最后更新时间。

SyncState

返回客户端可以用来同步到最新链状态的链对象(账户、笔记、nullifiers)的信息。

此请求返回包含请求数据的下一个块。它还返回 chain_tip,即链中的最新区块编号。客户端应重复这些请求,直到 response.block_header.block_num == response.chain_tip,此时客户端已完全同步到链。

每个请求还返回有关创建的新笔记、nullifiers 等的信息。它还返回链 MMR delta,可用于更新链 MMR 的状态。这包括链 MMR 顶峰和链 MMR 节点。

为了保护一定的隐私,笔记标签和 nullifiers 过滤器仅包含哈希的高部分。因此,返回的数据包含过多的笔记和 nullifiers,客户端可以在其端对其进行额外的过滤。

参数

  • block_num: uint32 – 从此块开始向客户端发送更新。
  • account_ids: [AccountId] – 账户过滤器。
  • note_tags: [uint32] – 笔记标签过滤器。对应于真实值的最高 16 位。
  • nullifiers: [uint32] – nullifiers 过滤器。对应于真实值的最高 16 位。

返回

  • chain_tip: uint32 – 链中最新块的编号。
  • block_header: BlockHeader – 第一个符合指定标准的笔记所在的块的区块头。
  • mmr_delta: MmrDelta – 更新从 request.block_num + 1response.block_header.block_num 的部分 MMR 所需的数据。
  • accounts: [AccountSummary] – 自 request.block_num + 1 以来更新但不在 response.block_header.block_num 之后的账户摘要。
  • transactions: [TransactionSummary] – 包含在 request.block_num + 1 之后但不在 response.block_header.block_num 之后的交易摘要。
    • 每个 TransactionSummary 包含交易标识符 transaction_id,执行该交易的账户的 account_id,以及交易所在的 block_num 区块号。
  • notes: [NoteSyncRecord] – 所有笔记以及从 response.block_header.note_root 到的 Merkle 路径列表。
  • nullifiers: [NullifierUpdate] – 在 request.block_num + 1response.block_header.block_num 之间创建的 nullifiers 列表。
    • 每个 NullifierUpdate 包含 nullifier 和 block_num,即与该 nullifier 对应的笔记被消耗的区块号。

SubmitProvenTransaction

将证明交易提交到 Miden 网络。

参数

  • transaction: bytes - 使用 Miden 的原生格式编码的交易。

返回

此方法不返回任何数据。

许可证

本项目遵循 MIT 许可

依赖项

~60MB
~1M SLoC