return signer == ecrecover(hashTransaction(transaction), v, r, s); }
在下一节中,我们将详细解释 如果你想详细了解如何在智能合约中实现 EIP 712,我建议你阅读 MetaMask 的这篇文章。遗憾的是,EIP 712 规范目前还是草案,还没有得到很多应用的支持。目前,Ledger 和 Trezor 都还没支持 EIP 712,可能会阻碍该规范的广泛采用。不过,Ledger 表示他们即将发布的更新版会支持 EIP 712。 通过智能合约来验证签名
消息签名更有趣的地方在于,我们可以使用智能合约来验证 ECDSA 签名。Solidity 有一个内置函数叫做 // SPDX-License-Identifier: MIT pragma solidity 0.7.0; contract SignatureVerifier { /** * @notice Recovers the address for an ECDSA signature and message hash, note that the hash is automatically prefixed with "Ethereum Signed Message: 32" * @return address The address that was used to sign the message */ function recoverAddress (bytes32 hash, uint8 v, bytes32 r, bytes32 s) public pure returns (address) { bytes memory prefix = "Ethereum Signed Message:n32"; bytes32 prefixedHash (责任编辑:admin1) |