Walrus 链下消息格式解析

  • King
  • 更新于 13小时前
  • 阅读 74

在区块链技术领域,Walrus 链具有其独特的链下消息格式规范,这些规范对于保障链下信息交互的安全性、准确性和有效性起着至关重要的作用。本文将深入解读 Walrus 链下消息格式的各个关键组成部分,包括签名机制、消息头结构以及不同类型消息的详细格式定义。

在区块链技术领域,Walrus 链具有其独特的链下消息格式规范,这些规范对于保障链下信息交互的安全性、准确性和有效性起着至关重要的作用。本文将深入解读 Walrus 链下消息格式的各个关键组成部分,包括签名机制、消息头结构以及不同类型消息的详细格式定义。

一、签名机制

Walrus 链采用特定的签名方案对所有认证或签名消息进行处理,该方案为 “BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RONUL\”。这种签名方案基于先进的密码学原理,确保消息来源的可验证性与完整性。

在公私钥体系方面,公钥被定义为 48 字节的 vector<u8> 类型,而签名则是 96 字节的 vector<u8> 类型。公钥作为链上实体在网络中的公开身份标识,其固定的 48 字节格式如同一种标准化的身份凭证。签名则是在消息发送时,利用私钥基于特定签名方案生成的 96 字节数据,用于验证消息确实由对应公钥的持有者所发送,且在传输过程中未被篡改。

二、签名消息头

所有 Walrus 链下消息均以特定的消息头起始,消息头由 3 + 4 字节构成。

其中,前 3 字节分别为 Intent_typeu8 类型)、Intent_versionu8 类型)和 Intent_app_idu8 类型)。当前 Intent_version 设定为 0,Intent_app_id 为 3,而 Intent_type 具有明确的取值类型,如 PROOF_OF_POSSESSION_MSG_TYPE 值为 0,BLOB_CERT_MSG_TYPE 值为 1,INVALID_BLOB_ID_MSG_TYPE 值为 2。这些不同的 Intent_type 值用于区分后续不同类型的消息体内容与处理逻辑。

紧随其后的 4 字节为 epochu32 类型),它代表签名存储节点在签署消息时所处的存储 epochepoch 概念类似于时间戳或特定的存储阶段标记,通过它可以确定消息在整个存储时间轴上的位置,为消息的处理与验证提供了额外的时间相关的上下文信息。

消息头之后的剩余部分即为 body,它是无长度前缀的 vec<u8> 类型,其具体格式取决于消息的 Intent_type

三、不同类型消息格式

(一)PROOF_OF_POSSESSION 消息

这类消息的 body 部分包含关键信息。首先是 sui 地址,它在 Walrus 链的生态系统中类似于账户标识,用于唯一确定链上的一个主体。接着是签名者的 bls 公钥,其编码为 48 字节固定大小数组。此消息类型主要用于证明消息发送者对特定资源或操作的拥有权,例如在涉及资产交易或权限验证场景中,通过 sui 地址与公钥的组合,可以有效确认消息发送者的身份与权限范围。

(二)BLOB_CERT 消息

其 body 仅包含一个 blob 的 blob_idu256 类型,32 字节)。此消息表示存储节点已经完成了一系列重要操作,即在消息对应的 epoch 中,成功接收、检查并持久化存储了分配给它的所有分片。这对于维护整个 Walrus 链的存储数据完整性与一致性至关重要,就像在分布式存储系统中,各个存储节点需要向网络报告自身数据存储状态的正确性,以确保整个系统数据的可靠性。

(三)INVALID_BLOB_ID 消息

同样,body 部分也是一个 blob 的 blob_id(32 字节的 u256 类型)。该消息的意义在于存储节点经过验证发现了不一致性证明,并确认此 blob id 无效。这有助于及时发现并处理链下存储中可能出现的数据错误或不一致情况,保障整个 Walrus 链存储数据的质量与准确性。

总结

综上所述,Walrus 链下消息格式通过严谨的签名机制、结构化的消息头以及明确的不同类型消息体定义,构建了一套完整且高效的链下信息交互规范体系。无论是对于链上应用的开发人员、节点维护者还是区块链技术研究人员,深入理解这些消息格式规范都是进行相关工作的重要基础,有助于确保在 Walrus 链生态系统中信息的安全、准确与可靠传输与处理。

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
King
King
0x56af...a0dd
擅长Rust/Solidity/FunC/Move开发