链下消息签名是一种使用Solana钱包签署非交易消息的方法。此功能可用于验证用户身份或提供钱包所有权证明。签署链下消息要签署任意链下消息,请运行以下命令:solanasign-offchain-message<MESSAGE>该消息将使用CLI的默认私钥进行编码和签名,并将签
<!--StartFragment-->
链下消息签名是一种使用 Solana 钱包签署非交易消息的方法。此功能可用于验证用户身份或提供钱包所有权证明。
要签署任意链下消息,请运行以下命令:
solana sign-offchain-message <MESSAGE>该消息将使用 CLI 的默认私钥进行编码和签名,并将签名打印到输出中。如果您想使用另一个密钥对其进行签名,只需使用以下-k/--keypair选项:
solana sign-offchain-message -k <KEYPAIR> <MESSAGE>默认情况下,构建的消息是版本 0,这是当前唯一支持的版本。当其他版本可用时,您可以使用以下--version选项覆盖默认值:
solana sign-offchain-message -k <KEYPAIR> --version <VERSION> <MESSAGE>消息格式根据消息的版本和文本自动确定。
版本0标头指定了三种消息格式,允许在兼容性和消息组成之间进行权衡:
| ID | 编码 | 最大长度 | 硬件钱包支持 | 
|---|---|---|---|
| 0 | 受限 ASCII * | 1212 | 是的 | 
| 1 | UTF-8 | 1212 | 仅盲签 | 
| 2 | UTF-8 | 65515 | 不 | 
*那些返回 true 的字符isprint(3) 。即,0x20..=0x7e。
格式0和1受到硬件钱包支持的推动,其中存储有效负载的 RAM 和字体字符支持都受到限制。
要使用 Ledger 签署链下消息,请确保您的 Ledger 运行的是最新固件和 Solana Ledger App 版本 1.3.0 或更高版本。解锁 Ledger 并打开 Solana Ledger App 后,运行:
solana sign-offchain-message -k usb://ledger <MESSAGE>请注意,UTF-8 编码消息需要Allow blind sign在 Solana Ledger App 中启用选项。此外,由于 Ledger 设备缺乏 UTF-8 支持,因此在这种情况下只会显示消息的哈希值。
如果Display mode设置为Expert,Ledger 将显示有关要签名的消息的技术信息。
要验证链下消息签名,请运行以下命令:
solana verify-offchain-signature <MESSAGE> <SIGNATURE>将使用默认 CLI 签名者的公钥。您可以使用以下--signer选项指定另一个密钥:
solana verify-offchain-signature --signer <PUBKEY> <MESSAGE> <SIGNATURE>如果签名消息的版本与默认版本不同,则需要明确指定匹配的版本:
solana verify-offchain-signature --version <VERSION> <MESSAGE> <SIGNATURE>为了确保链下消息不是有效交易,它们使用固定前缀进行编码:\xffsolana offchain,其中第一个字节的选择使得它作为 MessageHeader当前交易中的第一个字节是隐含非法的。
<!--EndFragment-->
 
                如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!