Solidity, что не так с кодом? При выполнении функции massNotify вылезает ошибка "transact to TokenName.massNotify errored: Error encoding arguments: SyntaxError: Unexpected token x in JSON at position 1". Адрес ввожу вроде правильно:"0xdc8f20170c0946accf9627b3eb1513cfd1c0499f", "0xcE6D9f910a35d21b82ef0D86537E3dfd5EaDeb3A" Сама функция по идее должна отправлять одинаковое кол-во токенов на массив адресов.
Вот код massNotify:function massNotify (address [] _owners) {
require (msg.sender == owner);
uint256 count = _owners.length;
for (uint256 i = 0; i balanceOf (msg.sender)) return false;
else {
materializeBalanceIfNeeded (msg.sender, _value);
return AbstractToken.transfer (_to, _value);
}
}
Пробовал удалить все буквы, но выдает ошибку "transact to TokenName.massNotify errored: Error encoding arguments: TypeError: Cannot read property 'toArray' of undefined". Да и без букв не особо и смысл есть.
Код стащил с другого токена, вот и непонятно почему не работает. Тестил в Ropsten. Версия Solidity 0.4.16

21 Авг 2019 в 06:22
282 +1
0
Ответы
1

Ошибка, которую вы получаете, скорее всего связана с тем, что вы пытаетесь передать массив адресов в качестве аргумента функции massNotify. Solidity не поддерживает передачу массивов в качестве аргументов при вызове функции извне контракта.

Чтобы исправить это, вам нужно изменить реализацию функции massNotify таким образом, чтобы она принимала адрес каждого получателя в качестве отдельного аргумента. Например, вы можете изменить функцию так:

function massNotify (address _owner1, address _owner2) {
require (msg.sender == owner);
Transfer (address (0), _owner1, VIRTUAL_COUNT);
Transfer (address (0), _owner2, VIRTUAL_COUNT);
}

Затем вызовите эту функцию, передавая адреса получателей в качестве аргументов:

massNotify(0xdc8f20170c0946accf9627b3eb1513cfd1c0499f, 0xcE6D9f910a35d21b82ef0D86537E3dfd5EaDeb3A);

Помните, что вы можете дополнить этот подход, чтобы поддерживать любое количество адресов получателей, добавив соответствующие аргументы в функцию и вызывая Transfer для каждого адреса.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир