小编eth*_*123的帖子

如何在 Solidity 中使用嵌套结构为 EIP712 类型数据签名定义 TYPEHASH?

我想知道为EIP-712 的嵌套结构数据结构定义 TYPEHASH 的正确方法是什么。我正在尝试这样做,因为我想使用 ECDSA 和哈希结构的 EIP-712 标准检索请求结构的签名者。

这是合同:

import "@openzeppelin/contracts/utils/cryptography/EIP712.sol";
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";

contract SignatureChecker is EIP712 {
    using ECDSA for bytes32;

    struct Fee {
        address recipient;
        uint256 value;
    }

    struct Request {
        address to;
        address from;
        Fee[] fees;
    }

    bytes32 public TYPEHASH = keccak256("Request(address to,address from, Fee[] fees)");

    constructor() EIP712("SignatureChecker", "1") {}

    function verify(
        Request calldata request,
        bytes calldata signature,
        address supposedSigner
    ) external view returns (bool) {
        return recoverAddress(request, signature) == supposedSigner;
    }

    function recoverAddress(
        Request calldata …
Run Code Online (Sandbox Code Playgroud)

ethereum solidity

3
推荐指数
1
解决办法
1202
查看次数

标签 统计

ethereum ×1

solidity ×1