使用 Solana CLI 进行链下消息签名

链下消息签名是一种使用Solana钱包签署非交易消息的方法。此功能可用于验证用户身份或提供钱包所有权证明。签署链下消息要签署任意链下消息,请运行以下命令:solanasign-offchain-message<MESSAGE>该消息将使用CLI的默认私钥进行编码和签名,并将签

<!--StartFragment-->

链下消息签名是一种使用 Solana 钱包签署非交易消息的方法。此功能可用于验证用户身份或提供钱包所有权证明。

签署链下消息

要签署任意链下消息,请运行以下命令:

solana sign-offchain-message &lt;MESSAGE>

该消息将使用 CLI 的默认私钥进行编码和签名,并将签名打印到输出中。如果您想使用另一个密钥对其进行签名,只需使用以下-k/--keypair选项:

solana sign-offchain-message -k &lt;KEYPAIR> &lt;MESSAGE>

默认情况下,构建的消息是版本 0,这是当前唯一支持的版本。当其他版本可用时,您可以使用以下--version选项覆盖默认值:

solana sign-offchain-message -k &lt;KEYPAIR> --version &lt;VERSION> &lt;MESSAGE>

消息格式根据消息的版本和文本自动确定。

版本0标头指定了三种消息格式,允许在兼容性和消息组成之间进行权衡:

ID 编码 最大长度 硬件钱包支持
0 受限 ASCII * 1212 是的
1 UTF-8 1212 仅盲签
2 UTF-8 65515

*那些返回 true 的字符isprint(3) 。即,0x20..=0x7e

格式01受到硬件钱包支持的推动,其中存储有效负载的 RAM 和字体字符支持都受到限制。

要使用 Ledger 签署链下消息,请确保您的 Ledger 运行的是最新固件和 Solana Ledger App 版本 1.3.0 或更高版本。解锁 Ledger 并打开 Solana Ledger App 后,运行:

solana sign-offchain-message -k usb://ledger &lt;MESSAGE>

请注意,UTF-8 编码消息需要Allow blind sign在 Solana Ledger App 中启用选项。此外,由于 Ledger 设备缺乏 UTF-8 支持,因此在这种情况下只会显示消息的哈希值。

如果Display mode设置为Expert,Ledger 将显示有关要签名的消息的技术信息。

验证链下消息签名

要验证链下消息签名,请运行以下命令:

solana verify-offchain-signature &lt;MESSAGE> &lt;SIGNATURE>

将使用默认 CLI 签名者的公钥。您可以使用以下--signer选项指定另一个密钥:

solana verify-offchain-signature --signer &lt;PUBKEY> &lt;MESSAGE> &lt;SIGNATURE>

如果签名消息的版本与默认版本不同,则需要明确指定匹配的版本:

solana verify-offchain-signature --version &lt;VERSION> &lt;MESSAGE> &lt;SIGNATURE>

协议规范

为了确保链下消息不是有效交易,它们使用固定前缀进行编码:\xffsolana offchain,其中第一个字节的选择使得它作为 MessageHeader当前交易中的第一个字节是隐含非法的。

<!--EndFragment-->

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

0 条评论

请先 登录 后评论
加密女士
加密女士
无代码发币平台