【问题标题】:Error encoding arguments: Error: types/values length mismatch错误编码参数:错误:类型/值长度不匹配
【发布时间】:2021-04-25 17:52:32
【问题描述】:

似乎无法理解此错误的原因。我有以下结构:

enum RecordType {ONE, TWO, THREE}

struct Record {
        address recordmaker;
        uint256[] recordIds;
        RecordType recordType;
    }

struct Book {
        Record[] records;
        address bookmaker;
        uint256 salt;
    }

基本上,有一个Book 结构可以容纳多个Record 结构。现在,我需要创建一个新的 Book 哈希,为此我使用以下代码:

bytes32 constant BOOK_TYPEHASH = keccak256(
        "Book(Record[] records,address bookmaker,uint256 salt)"
    );

function hashBook(Book calldata book) external pure returns (bytes32) {
    return keccak256(abi.encode(
        BOOK_TYPEHASH,
        book.records,
        book.bookmaker,
        book.salt
    ));
}

为了测试散列,我将以下内容传递给函数:

([0xD7ACd2a9FD159E69Bb102A1ca21C9a3e3A5F771B, [5, 55, 125], 0], 0xd9145CCE52D386f254917e481eB44e9943F39138, 123456)

或预览:

    (
        [
            0xD7ACd2a9FD159E69Bb102A1ca21C9a3e3A5F771B, 
            [
                5, 
                55, 
                125
            ],
            0
        ], 
        0xd9145CCE52D386f254917e481eB44e9943F39138, 
        123456
    )

调用函数时,我得到:transact to BookContract.hashBook errored. Error encoding arguments: Error: types/values length mismatch (count={"types":1,"values":3}, value={"types":["tuple(tuple(address,uint256[],uint8)[],address,uint256)"],"values":["([0xD7ACd2a9FD159E69Bb102A1ca21C9a3e3A5F771B, [5,",", 125], 0],",", 123456)"]}, code=INVALID_ARGUMENT, version=abi/5.0.7)

我在这里做错了什么?

【问题讨论】:

    标签: solidity


    【解决方案1】:

    您的表达式中几乎没有语法错误。你应该:

    • 使用方括号 [ 而不是常规括号 ( 来包装结构
    • 也将Record 结构体包装在方括号[
    • 将地址用引号括起来"
    [[["0xD7ACd2a9FD159E69Bb102A1ca21C9a3e3A5F771B", [5, 55, 125], 0]], "0xd9145CCE52D386f254917e481eB44e9943F39138", 123456]
    

    预览:

    [  // start of `Book` struct
        [  // start of `records[]` array
            [  // start of `Record` struct
                "0xD7ACd2a9FD159E69Bb102A1ca21C9a3e3A5F771B",
                [
                    5,
                    55,
                    125
                ],
                0
            ]
        ],
        "0xd9145CCE52D386f254917e481eB44e9943F39138",
        123456
    ]
    

    【讨论】:

      猜你喜欢
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-03-03
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      相关资源
      最近更新 更多