无法从以太坊本地区块链上的合同中提取金额
Can't withdraw amount from contract on Ethereum local blockchain
我有一个问题困扰了我好几天。这一切都归结为:
我正在为我的本地区块链使用 Ganache (TestRPC) 及其默认测试帐户。
我使用第一个测试帐户连接到 Metamask(在 Chrome)。 (余额 100ETH)。
我正在根据 solidity 文档创建 WithdrawalContract:
http://solidity.readthedocs.io/en/develop/common-patterns.html
使用 10ETH。
到现在为止一切都很好。合约创建成功,我的测试账户余额为90ETH,交易列表中合约显示为10ETH
现在我执行 withdraw()
应该会退还我 10ETH 的金额。
Metamask 显示交易成功。
但是我的测试账户没有收到这笔钱。账户余额仍为90ETH
我错过了什么?为什么提款对我不起作用?
PS:我使用 remix.ethereum.org
完成所有这些操作,使用同一个帐户创建和撤销合约。我也用 truffle
尝试过,但我得到了相同的结果。
你可以尝试使用 transfer() 看看
代码看起来像这样
msg.sender.transfer(web3.utils.toWei('10', 'ether'));
msg.sender
=> 在那个时间点与合约交互的地址,以及需要在该地址上调用 transfer() 时接收资金的地址(在这种情况下是你)
我看了你评论里的视频。这只是 Solidity 网站上的一个简单示例合约,写得不是很好。您必须更加注意代码。 withdraw()
使用 pendingWithdrawals
映射来确定允许调用者从合约中转出多少。只有 becomeRichest()
方法正在设置该映射。构造函数不是。
在不发送任何以太币的情况下部署合约。然后调用 becomeRichest()
,这次发送以太币。然后使用withdraw
(或者,改进代码)。
我有一个问题困扰了我好几天。这一切都归结为:
我正在为我的本地区块链使用 Ganache (TestRPC) 及其默认测试帐户。 我使用第一个测试帐户连接到 Metamask(在 Chrome)。 (余额 100ETH)。
我正在根据 solidity 文档创建 WithdrawalContract: http://solidity.readthedocs.io/en/develop/common-patterns.html 使用 10ETH。 到现在为止一切都很好。合约创建成功,我的测试账户余额为90ETH,交易列表中合约显示为10ETH
现在我执行 withdraw()
应该会退还我 10ETH 的金额。
Metamask 显示交易成功。
但是我的测试账户没有收到这笔钱。账户余额仍为90ETH
我错过了什么?为什么提款对我不起作用?
PS:我使用 remix.ethereum.org
完成所有这些操作,使用同一个帐户创建和撤销合约。我也用 truffle
尝试过,但我得到了相同的结果。
你可以尝试使用 transfer() 看看
代码看起来像这样
msg.sender.transfer(web3.utils.toWei('10', 'ether'));
msg.sender
=> 在那个时间点与合约交互的地址,以及需要在该地址上调用 transfer() 时接收资金的地址(在这种情况下是你)
我看了你评论里的视频。这只是 Solidity 网站上的一个简单示例合约,写得不是很好。您必须更加注意代码。 withdraw()
使用 pendingWithdrawals
映射来确定允许调用者从合约中转出多少。只有 becomeRichest()
方法正在设置该映射。构造函数不是。
在不发送任何以太币的情况下部署合约。然后调用 becomeRichest()
,这次发送以太币。然后使用withdraw
(或者,改进代码)。