codecamp

以太坊 创建、停用和销毁

创造

合约甚至可以使用特殊的操作码创建其他合约(即它们不像交易那样简单地调用零地址)。这些创建调用和普通消息调用之间的唯一区别是执行有效负载数据并将结果存储为代码,调用者/创建者接收堆栈上新合约的地址。

停用和自毁

从区块链中删除代码的唯一方法是在该地址的合约执行selfdestruct操作时。存储在该地址的剩余以太币被发送到指定目标,然后从状态中删除存储和代码。理论上移除合约听起来是个好主意,但它有潜在的危险,就像有人将以太币发送给移除的合约一样,以太币将永远丢失。

警告
即使合约被删除selfdestruct,它仍然是区块链历史的一部分,并且可能被大多数以太坊节点保留。所以使用selfdestruct并不等同于从硬盘中删除数据。
笔记
即使合约的代码不包含对 的调用​selfdestruct​,它仍然可以使用​delegatecall​或者执行该操作​callcode​。


以太坊 日志
solidity 版本控制
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }