我一直在研究EIP712,并试图使用松露和Web3js实现一些测试。但是,我注意到web3.eth.accounts.sign()与EIP191兼容,因此我无法通过使用ECDSA正确检索签名者地址。从OZ存储库中恢复。
在这方面,我的问题是:可以使用哪些替代方案来为这种新的加密签名标准开发一些测试?我注意到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
提前感谢大家。
您可以使用@metamask/eth-sig-util
中的signTypedData
方法。
https://github.com/MetaMask/eth-sig-util/blob/main/src/sign-typed-data.ts L521
您的签名需要使用@truffle/hdwallet-provider
才能通过测试