186 个版本 (16 个重大变更)

0.17.6 2024 年 7 月 29 日
0.17.4 2024 年 6 月 4 日
0.16.1 2024 年 3 月 28 日
0.10.0 2023 年 12 月 28 日
0.4.1 2023 年 7 月 31 日

#25 in WebSocket

Download history 342/week @ 2024-04-16 340/week @ 2024-04-23 211/week @ 2024-04-30 576/week @ 2024-05-07 358/week @ 2024-05-14 535/week @ 2024-05-21 694/week @ 2024-05-28 1035/week @ 2024-06-04 347/week @ 2024-06-11 321/week @ 2024-06-18 375/week @ 2024-06-25 400/week @ 2024-07-02 323/week @ 2024-07-09 257/week @ 2024-07-16 406/week @ 2024-07-23 326/week @ 2024-07-30

1,451 每月下载量
13 个 Crates 中使用 (直接使用 9)

GPL-3.0 许可证

385KB
7K SLoC

sn_protocol

概览

sn_protocol 目录包含 Safe Network 的核心协议逻辑。它包括处理协议不同方面的各种模块,例如错误处理、消息和存储。

目录

错误处理

error.rs 文件包含协议中可能发生的各种错误的定义。

错误类型

  • ChunkNotFound(ChunkAddress):指示未找到数据块。
    • 示例:Result::Err(Error::ChunkNotFound(chunk_address))
  • ChunkNotStored(XorName):指示未存储数据块。
    • 示例: Result::Err(Error::ChunkNotStored(xor_name))
  • RegisterNotFound(Box<RegisterAddress>):表示未找到寄存器。
    • 示例: Result::Err(Error::RegisterNotFound(register_address))
  • SpendNotFound(SpendAddress):表示未找到支出。
    • 示例: Result::Err(Error::SpendNotFound(cash_note_address))
  • DoubleSpendAttempt(Box<SignedSpend>, Box<SignedSpend>):表示有双花尝试。
    • 示例: Result::Err(Error::DoubleSpendAttempt(spend1, spend2))

消息

messages》模块包含可以在协议内发送或接收的不同类型的消息。

命令消息

Cmd::Replicate

  • 描述:写入操作,通知对等方从持有者获取NetworkAddress列表。
  • 参数:
    • holder: NetworkAddress:复制密钥的持有者。
    • keys: Vec<NetworkAddress>:要复制的副本密钥。

查询消息

查询::GetStoreCost

  • 描述:检索在给定地址存储记录的成本。
  • 参数:
    • address: NetworkAddress:记录将被存储的地址。

响应消息

查询响应::GetStoreCost

  • 描述:存储下一个记录的存储成本(以纳诺为单位)。
  • 参数:
    • store_cost: Result<Token>:存储记录的成本。
    • payment_address: PublicAddress:支付存储成本的地址。

CmdResponse::Replicate

  • 描述:对复制命令的响应。
  • 参数:
    • Result<()>:复制命令的结果。

存储

storage》模块处理协议的存储方面。

API调用

  • ChunkAddress:网络中块的地址。
  • SpendAddress:网络中CashNote的支出的地址。
  • Header:存储项的标题信息。

Protobuf 定义

safenode_proto 目录包含 Safe Network 的 Protocol Buffers 定义。

文件

  • req_resp_types.proto:请求和响应类型的定义。
  • safenode.proto:Safe Network 的主要 Protocol Buffers 定义。

依赖

~27–41MB
~857K SLoC