Тестирование трюфелей — Попытка использовать web3 для тестирования EIP712, есть ли какие-либо альтернативы?

#testing #ethereum #solidity #web3js #truffle

Вопрос:

Я изучал EIP712 и попытался провести некоторое тестирование с использованием трюфеля и Web3js. Однако я заметил, что web3.eth.accounts.sign() соответствует EIP191, поэтому я не могу правильно получить адрес подписавшего с помощью ECDSA.recover из репозитория OZ.

В этой связи мой вопрос заключается в следующем: какие альтернативы можно использовать для разработки некоторых тестов для этого нового стандарта криптографической подписи? Я заметил, что в Metamask есть этот метод signTypedData_V4, который соответствует текущей версии подписи проекта 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