Truffle testing - 尝试使用 web3 测试 EIP712,有没有其他选择?

Posted

技术标签:

【中文标题】Truffle testing - 尝试使用 web3 测试 EIP712,有没有其他选择?【英文标题】:Truffle testing - Trying to use web3 to test EIP712, are there any alternatives? 【发布时间】:2021-12-03 18:21:05 【问题描述】:

我一直在研究 EIP712 并尝试使用 truffle 和 Web3js 进行一些测试。但是,我注意到 web3.eth.accounts.sign() 符合 EIP191,因此我无法使用 OZ 存储库中的 ECDSA.recover 正确检索签名者地址。

在这方面,我的问题是:哪些替代方案可用于为这个新的加密签名标准开发一些测试?我注意到 Metamask 有这个方法 signTypedData_V4,它坚持 OZ 草案的当前签名版本。我想知道我是否可以在没有 Metamask 帮助的情况下按此标准进行哈希和签名。

来自 OZ 的 ECDSA 和 EIP712(草案)合同链接:

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/ECDSA.sol

https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/draft-EIP712.sol

提前感谢大家。

【问题讨论】:

【参考方案1】:

您可以使用signTypedData 中的方法@metamask/eth-sig-util

https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-typed-data.ts#L521

【讨论】:

以上是关于Truffle testing - 尝试使用 web3 测试 EIP712,有没有其他选择?的主要内容,如果未能解决你的问题,请参考以下文章

区块链开发以太坊系统下truffle构建智能合约

验证使用 Truffle 部署的智能合约代码

无法使用 Ganache GUI 连接到 Truffle 或 testrpc

Truffle 合约验证无法在 BSC 测试网上运行

如何使用 web3.js 在 Truffle 测试中进行基本算术运算

使用 Trezor(硬件钱包)将签名交易发送到 Ropsten 或 Truffle 开发网络