使用 Web3.js 将价值从 Solidity 合约转移到 Ganache 账户
Transfer Value From Solidity Contract To Ganache Account With Web3.js
我正在尝试将我的合同余额从 UI 转移到一个 ganache 帐户。
这是我的 solidity 函数,它在 remix 中运行良好:
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 表格。
当我点击绿色按钮并尝试将以太币发送到另一个帐户时,我的元掩码中出现了这个错误
有什么想法可以让它发挥作用吗?谢谢
web3 API 有时令人困惑,因为 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 以及。
我正在尝试将我的合同余额从 UI 转移到一个 ganache 帐户。
这是我的 solidity 函数,它在 remix 中运行良好:
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 表格。
当我点击绿色按钮并尝试将以太币发送到另一个帐户时,我的元掩码中出现了这个错误
有什么想法可以让它发挥作用吗?谢谢
web3 API 有时令人困惑,因为 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 以及。