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
Ошибка, которую вы получаете, скорее всего связана с тем, что вы пытаетесь передать массив адресов в качестве аргумента функции 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); }
Затем вызовите эту функцию, передавая адреса получателей в качестве аргументов:
Помните, что вы можете дополнить этот подход, чтобы поддерживать любое количество адресов получателей, добавив соответствующие аргументы в функцию и вызывая Transfer для каждого адреса.
Ошибка, которую вы получаете, скорее всего связана с тем, что вы пытаетесь передать массив адресов в качестве аргумента функции 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 для каждого адреса.