Это чистый способ отказаться от договора в Солидности? - PullRequest
0 голосов
/ 28 апреля 2018

Я искал все выше и ниже о том, как вывести средства из контракта Ethereum без каких-либо преимуществ. Редактор Remix предупреждает, что эта функция может вызвать бесконечный цикл.

Gas requirement of function KOTH.cleanTheKingsChest() high: infinite. If the gas requirement of a function is higher than the block gas limit, it cannot be executed. Please avoid loops in your functions or actions that modify large areas of storage (this includes clearing or copying arrays in storage)

И ... Должен ли я использовать Open-Zeppelin's безопасную математику для этой функции?

function cleanTheKingsChest() public isOwner {
  uint bal = address(this).balance;
  address(owner).transfer(bal);
}

1 Ответ

0 голосов
/ 28 апреля 2018

При этом все эфиры, содержащиеся в контракте, будут переведены на адрес владельца. Нет проблем с тем, как вы это делаете.

Причина предупреждения в том, что вы звоните по другому адресу. Этот адрес сам по себе может быть контрактом с пользовательской transfer или резервной функцией (если метод transfer не определен). Поскольку Remix не знает, что может сделать эта реализация, он не может оценить потребление газа. Это не проблема, поскольку transfer звонки ограничены 2100 стипендией на газ.

Вам не нужно SafeMath для этой функции, поскольку вы не делаете ничего, что может вызвать переполнение. Тем не менее, в общем, это хорошая идея, чтобы использовать его.

...