0

为了清楚起见,我将包括 Github 存储库链接:https ://github.com/Eikix/mumbai_ropsten_bridge

这是我的问题:我正在尝试按照此 youtube 视频中的说明重建散列消息: https ://www.youtube.com/watch?v=Si8YujWmTPo&t=528s以验证发件人的身份。我的程序总是恢复我的 require 调用: require(recoverSigner(message, signature) == sender);

这是有意的行为。您创建的消息具有:

  • 发件人地址(发件人)
  • 接收地址(到),
  • 金额(金额),
  • 一个随机数(nonce)

然后,您使用 Keccak256 对其进行哈希处理。

然后您使用 ethersjs 对其进行签名

您调用一个函数“入站”,并提供:(from、to、amount、nonce、signature)。然后,您想在上面打包的变量上使用 keccak256 重建消息的散列。如https://solidity-by-example.org/signature/中所述,您记得在整个哈希前面加上“\x19Ethereum ......” 。

该函数试图做的是:ecrecover(message, signature) 并验证恢复的地址是否等于发件人地址。

由于某种原因,我的测试失败了。要重现我的情况,请随意克隆 github 存储库,启动本地安全帽节点,运行编译并运行 yarn hardhat 测试。

谢谢您的帮助。

亲切的问候, 埃利亚斯

4

0 回答 0