Передача значения из контракта на надежность в учетную запись Ganache с Web3.js
Я пытаюсь перевести остаток своего контракта на аккаунт 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.
Когда я нажимаю зеленую кнопку и пытаюсь отправить эфир на другую учетную запись, я получаю эту ошибку в своей метамаске
Любые идеи, как я мог бы заставить это работать? Благодарю.
1 ответ
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.