Очистить все учетные записи в смартконтракте для банковского приложения - PullRequest
0 голосов
/ 06 мая 2019

Я работаю над примером банковского кода в солидности.Я хотел использовать так называемый «TakeAllTheMoney» и запустить функцию (просто чтобы дать вам представление о роли функции).Эта функция должна выполняться только исполнителем договора и должна давать ему возможность взять все деньги в банке и перевести их на свой счет.

Проблема: Как я могу также очистить счетдругой пользователь банка?Это означает, что когда другой пользователь - не тот, кто выполняет развертывание договора и функции - использует договор после использования функции TakeAllTheMoney, он также видит 0 в своей учетной записи.

Заранее большое спасибо

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

Ожидаемые результаты после использования этой функции: Баланс Банк = 0 Баланс лица, использовавшего контракт и функцию = 0 (так как он пошел на его счет в метамаске или аналогичный)Баланс каждого другого пользователя = 0

Опять же, спасибо!

1 Ответ

0 голосов
/ 07 мая 2019

Вы смешиваете две вещи. Сумма пользователя в метамаске и сумма, отправленная пользователем в Банк, в вашем случае - Smart Contract и хранятся в некоторой переменной. Таким образом, сумма, которую вы видите в метамаске, является суммой, принадлежащей Пользователю, и не имеет связи с Умным договором до тех пор, пока вы не отправите деньги на Умный договор.

Смарт-контракт в вашем случае «Банк», отправленные пользователем деньги хранятся в смарт-контракте, а отслеживание получения денег хранится в массиве. Смарт-контракт сам не хранит записи о предыдущей транзакции. Поэтому, если вы хотите удалить треки баланса смарт-контракта пользователя, вам нужно очистить этот конкретный массив. Хотя это звучит подозрительно, если вы хотите реализовать это и хотите, чтобы учетные записи пользователей были сведены к нулю в смарт-контракте.

...