清空智能合约中用于银行应用程序的所有帐户

时间:2019-05-06 18:09:44

标签: solidity contract banking remix

我正在努力地编写示例银行代码。我想使用一个所谓的“ TakeAllTheMoney”并运行函数(只是为了让您对函数的作用有所了解)。 此功能只能由合同的部署者执行,并应使他有可能将所有款项存入银行并将其转入他的帐户。

问题:如何同时清空银行另一用户的帐户?这意味着当使用“ TakeAllTheMoney”功能后,其他用户(而不是合同和功能的部署者)使用合同时,他的帐户上还会看到0。

非常感谢

function TakeTheMoneyAndRun() public{
    require (msg.sender==Owner);
    balance[msg.sender] -= balance[msg.sender];
    (msg.sender).transfer( address(this).balance );

使用此功能后的预期结果: 余额银行= 0 雇用合同和职能的平衡人= 0(因为它已进入其Metamask帐户或类似帐户) 每个其他用户的余额= 0

再次,谢谢!

1 个答案:

答案 0 :(得分:-1)

您正在混合两件事。在您的案例中,元掩码中的用户金额和向银行发送的用户金额为智能合约,并存储在某些变量中。因此,在元掩码中看到的金额是用户拥有的金额,并且除非您将钱汇入智能合约,否则与智能合约没有链接。

在您的案例“银行”中,智能合约将用户发送的钱存储在智能合约中,并将对收到的钱的跟踪存储在数组中。智能合约本身不保存上一次交易的记录。因此,如果要删除用户的智能合约余额跟踪,则必须清空该特定数组。如果您想实现它并想使智能合约中的用户帐户为零,这听起来很麻烦。