Передача значения из контракта на надежность в учетную запись Ganache с Web3.js - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь перевести остаток моего контракта на учетную запись ganache из пользовательского интерфейса.

Это моя функция солидности, которая отлично работает в ремиксе:

function tapGreen(address _receiverAddress) onlySwiper payable public {
    _receiverAddress.transfer(this.balance); 
}

Вот что у меня в файле js

swipeRight: function() {
    console.log(addressInput.value);
    App.contracts.HackathonDapp.deployed().then(function (instance) {
        return instance.tapGreen(addressInput.value).sendTransaction ({
            from: web3.eth.accounts[1],
            value: web3.eth.getBalance(contracts.address) 
});

addressInput.value происходит из HTML-формы.

Когда я нажимаю зеленую кнопку и пытаюсь отправить эфир на другую учетную запись, я получаю эту ошибку в своей метамаске enter image description here

Есть идеи, как мне заставить это работать? Спасибо.

1 Ответ

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

API web3 иногда сбивает с толку, потому что есть значительные изменения между 0.20.x и 1.0.Трудно сказать, какую версию вы используете.

Если вы используете 0.20.x, вызов должен быть

instance.tapGreen.sendTransaction(addressInput.value, {
    from: fromAccount,
    value: valueInWei 
});

Если вы используете 1.0, вызов будет

instance.methods.tapGreen(addressInput.value).send({
    from: fromAccount,
    value: valueInWei 
});

Обратите внимание, что я намеренно изменил значения в объекте транзакции на переменные, поскольку синхронные версии web3.eth.account и web3.eth.getBalance недоступны в 1.0, и рекомендуется использовать асинхронные версии (используяобратные вызовы) в 0.20.x также.

...