0

我遇到了一个困扰我好几天的问题。这一切都归结为:

我将 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但我得到了相同的结果。

4

2 回答 2

0

你能试试使​​用 transfer() 看看

代码看起来像这样

msg.sender.transfer(web3.utils.toWei('10', 'ether'));

msg.sender=> 在该时间点与合约交互的地址以及需要在该地址上调用 transfer() 时接收资金的地址(在这种情况下是您)

于 2018-01-24T06:37:39.017 回答
0

我看了你评论中的视频。这只是 Solidity 网站上的一个简单示例合约,写得不是很好。您必须更加关注代码。withdraw()使用pendingWithdrawals映射来确定允许调用者从合约中转出多少。只有becomeRichest()方法是设置该映射。构造函数不是。

在不发送任何以太币的情况下部署合约。然后调用becomeRichest(),这次发送以太。然后使用withdraw(或改进代码)。

于 2018-01-24T16:03:44.920 回答