如何验证幻影solana中消息的签名?



我试图通过使用我在下面的代码中使用的消息签名来验证幻影钱包,它返回给我一个签名,我如何在后端验证该签名。

const encodedMessage = new TextEncoder().encode("Message to sign");
const signedMessage = await window.solana.request({
method: "signMessage",
params: {
message: encodedMessage,
display: "utf8", //hex,utf8
},
});

这里签名的消息响应这个带有publickey和签名的答案

{
"publicKey": "Gy4xSKsLHXScRMVZgKt5f6BvDawp1JW8PrenA3GbakCK",
"signature": "5BoNFSoV9WEafBnXon2ujPzH5zgjwZkXHL9vkHuUHEnc1AqLSN38LEx5XtAz68JFEt9RhvuhmPL3GkMPdMcQPuzN"
}
  • 在后台生成唯一的消息并将其保存在您的数据库
  • 从前端请求
  • 通过提供者
  • 签署消息
  • 将结果发送到后端
  • 从数据库中检索消息
  • 根据收到的签名验证

前端h1> 台h1> div class="one_answers">如果您想要验证签名,您还需要签名的数据,并使用底层验证器:

nacl.sign.detached.verify(signData, signature, publicKey.toBuffer())

通常,您可能希望直接验证已签名的事务,而不是通过在Transaction上使用verifySignatures方法要求用户对另一条消息进行签名:https://github.com/solana-labs/solana/blob/d4e7ebf4f8821dfa59a1f278898cf9a7ad70ebd9/web3.js/src/transaction.ts#L673

相关内容

  • 没有找到相关文章

最新更新