(Solidity + JS) Uncaught Error: неверное количество аргументов для функции Solidity - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь вызвать функцию солидности и получаю сообщение об ошибке.Вот как я создаю свой контракт:

var EthProjContract = web3.eth.contract(my abi);
var EthProj = EthProjContract.at('0xcce478FDeF9F1DF933e31B1eeA48561e0095628A');

Я вызываю свою функцию следующим образом:

EthProj.setMessage.sendTransaction(shoco.compress(document.getElementById("MessageBox").value), {from: document.getElementById("add").value})

и получаю эту ошибку:

Uncaught Error: Invalid number of arguments to Solidity function

Если выинтересно, что такое shoco.compress, он сжал мои строки в uint8arrays.Например,

shoco.compress("Hello") возвращает Uint8Array(3) [72, 193, 77]

Если у меня есть Hello в моем поле MessageBox и вызову

EthProj.setMessage.sendTransaction(shoco.compress(document.getElementById("MessageBox").value), {from: document.getElementById("add").value})

, я получаю ошибку.Но когда я звоню

EthProj.setMessage.sendTransaction([72, 193, 77], {from: document.getElementById("add").value})

, это работает отлично.Это означает, что с моим текстом ничего не может быть.Так что же это может быть?Все, что я мог подумать, что это может быть, так это то, что Uint8Array(3) пребывание там может испортить это.Если так, как я могу это исправить?

1 Ответ

0 голосов
/ 28 мая 2018

Исправлена ​​моя ошибка.Вот как я это сделал.

 var message = [0, 0, 0];
        for(var i = 0; i < shoco.compress(document.getElementById("MessageBox").value).length; i++) {
            message.length = shoco.compress(document.getElementById("MessageBox").value).length;
            message[i] = shoco.compress(document.getElementById("MessageBox").value)[i];
        }

Я обнаружил, что он не работает, потому что он сказал uint8array в ответ shoco.compress.Я исправил это, создав новый массив и установив этот массив равным моему shoco.compress, избавившись от uint8array.

...