官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
在区块链上面,唯一移除一个合约的办法就是自毁。如果在合约里面调用:selfdestruct 函数即可自毁合约。存在合约中的以太坊将会发送到设计好的地址里。剩下的代码和存储变量将会在状态机中被移除。其实合约销毁这个动作理论上听上去是个好主义,但实际上是很危险的。如果有人给这个合约发送了以太坊,合约销毁以后,这些以太坊再也没有机会可以拿出来。
警告:从以太坊上面自毁这些合约不等于是把合约数据从区块链上面删除了。它只是成为了一个历史数据,会被大部分以太坊节点所遗留下来。
注意:如果一个以太坊合约里没有selfdestruct函数可供调用的话,还有一种可行的办法,就是看下合约里面是否有delegatecall或者callcode之类的函数。这些函数可以间接的调用外部函数。
如果你也有这样的想法,想不激活自己的合约。最好的办法是设置一个变量,这个变量可以让外部的调用者全部逆转退回。这样外部是不太可能用到这个函数的。并且可以迅速的退回用户之前已经转入的eth gas。