关于如何从以太坊合同中提取资金,我一直在寻找高低。 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);
}
答案 0 :(得分:1)
这会将合同中持有的所有以太币转移到所有者的地址。你的方式没有问题。
警告的原因是因为您正在拨打另一个地址。该地址本身可以是具有自定义transfer
或后备函数的合同(如果未定义transfer
方法)。由于Remix不知道该实现可能会做什么,因此无法估算燃气使用情况。这不是问题,因为transfer
电话仅限于2100燃气补贴。
您没有需要 SafeMath
该功能,因为您没有做任何可能导致溢出的事情。但是,一般来说,使用它是个好主意。