Проблемы с вызовом функции с двумерным массивом

Заранее извиняюсь за мой английский, но я все еще учусь :)

Я делаю несколько тестов с контрактом, который имеет эту конкретную функцию

function createBuyOrder(
    address token, 
    uint tokensTotal,
    uint8[] exchanges,
    address[5][] orderAddresses,
    uint[6][] orderValues,
    uint[] exchangeFees,
    uint8[] v,
    bytes32[] r,
    bytes32[] s
  ) 

как видите, мне нужно передать в функцию 2 вложенных массива, но когда я делаю это в ремиксе, я получаю эту ошибку: "Ошибка кодирования аргументов".

Аргументы, которые я передаю:

токен: "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"

жетоновВсего: 1233

обмены: [1]

адрес заказа :

[["0x0004e79c978b95974dca16f56b516be0c50cc652"], ["0x0000000000000000000000000000000000000000"],["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"],["0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"],["0xa258b39954cef5cb142fd567a46cddb31a670124"]]

значения заказа :

[[20000000000000000000]

Комиссия за обмен: [0]

v: [27]

р:["0xde7ff8f42676ba3bb5986f869ac00b6aa061f41a281b943f9e8c88c3c17cd4fa"]

s:["0x2628b4330c1cb3e3ee6be748cc5c55ed19374a016063ebd9a0b1c77fd91e8024"]

Ответы (1)

Хорошо, я немного поиграл с двумерными массивами после прочтения вашего вопроса, и оказалось, что когда вы ожидаете аргумент в этой форме:

uint[6][] orderValues

ваш внешний «массив» может иметь любой размер, но каждый «внутренний» должен содержать ровно шесть элементов.

Так, например, вместо предоставления такого аргумента

[[1],[1],[1],[1],[1],[1]]

вы должны предоставить это так:

[[1,1,1,1,1,1]]

Если он не подходит к вашей модели, вы должны как-то его переставить.

Изменить: я также заметил, что при попытке указать очень большое число в качестве аргумента uint, например 2000000000000000000000 в вашем примере, вы также можете получить некоторую ошибку. Чтобы решить эту проблему, вы можете попробовать поместить это значение в двойные кавычки, даже если это uint, а не строка, например: "200000000000000000000"