Написать в ethereum без метамаски - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь записать некоторые данные в тестовую сеть Ethereum Rinkeby без использования мета-маски, но при вызове метода я получаю сообщение об ошибке ниже, но мой счетчик аргументов верен

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 246): Error: Invalid number of arguments to Solidity function

код узла

    var Web3        = require('web3')
    var contract    = require("truffle-contract")
    var quickBooks    = require('../build/contracts/quickBooks.json')

    Web3.providers.HttpProvider.prototype.sendAsync = Web3.providers.HttpProvider.prototype.send;

    var provider    = new Web3.providers.HttpProvider("https://rinkeby.infura.io/v3/KEY")
    var quickBooksContract = contract(quickBooks);
    quickBooksContract.setProvider(provider);


    var writeToEthereum = async function(_json){
        //console.log(_json)
        var instance = await quickBooksContract.at('ADDRESS')
        var result = await instance.write.call(_json,_json.txhash,_json.createdt,"1",_json.write_set[0].set,{
from : "ADDRESS"
})
        console.log(result);
    }

Твердость

Прагма экспериментальная ABIEncoderV2;

контракт quickBooks {

struct Tx{
    string txId;
    string timeStamp;
    string blockHash;
    string payLoad;
    string json;
}

mapping(string => Tx) private data;

function write(string _json,string _txId,string _timeStamp,string _blockHash,string _payLoad) public returns(bool success){
    data[_txId] = Tx(_txId,_timeStamp,_blockHash,_payLoad,_json);
    return true;
}

function read(string _txId)public returns(Tx){
    return data[_txId];
} 

}

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Ваша call функция контракта неверна, вы должны передать аргументы функции после имени функции.Как вы это делаете, вы передаете аргументы вместо call() параметров.

await instance.write(<params here>).call();

Подробнее об этом вы можете прочитать в документации: https://web3js.readthedocs.io/en/1.0/web3-eth-contract.html

0 голосов
/ 22 октября 2018

Это может быть связано с https://github.com/ethereum/web3.js/issues/1043

Проверьте обсуждение там.

Если вы используете трюфель, попробуйте:

Ребята, удалите вашу папку сборки, затем выполните команду.

npm run truffle migrate --reset --compile-all

Я считаю, что это работает лучше всего, когдазапуск трюфеля локально в папку, а не в глобальном масштабе, потому что бета-версия и различные версии быстро обновляются в последнее времяесли вы предпочитаете глобальный подход, попробуйте

truffle migrate --reset --compile-all

Если это не поможет, убедитесь, что вы указали правильные типы данных .Возможно, вы предоставляете строку вместо int.

Если это не поможет, мне потребуется дополнительная информация о том, какую версию web3 вы используете, и если вы используете трюфель, а какая версияit.

Если вы хотите узнать больше о Solidity и умных контрактах, ознакомьтесь с моим курсом, который я специально сделал для этого - Solidity Smart Contracts: создание Dapps в Ethereum Blockchain

Вот купон на скидку: QAUS8657

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...