Ошибка вызова метода Ethereum web3js - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть простой интеллектуальный контракт на солидность с методом, подобным:

function foo(uint a) public {
    b =  bytes32(1);
        emit Event(a, b);
        emit Event2(a, b);
    }

(полный код здесь: https://remix.ethereum.org/#optimize=false&version=soljson-v0.4.25+commit.59dbf8f1.js)

и вызовите его, используя код web3.js:

contract = testContract.at('xxxAddress')   

// contract.foo(6); // Failed, Why?

//Success
contract.foo.sendTransaction(6, {from: eth.accounts[1]},function(error, result) {
            console.log("Got err:", error, ", result: ", result) 
    }
);

но почему не удалось выполнить простой contract.foo (6)? Может ли какой-нибудь эксперт это объяснить?

1 Ответ

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

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

...