第一:智能合约升级:
众所周知,以太坊是去中心化的网络,智能合约一旦创建就无法修改,那么这里谈的所谓升级其实就是在原有的合约不变的情况下,创建一个新的合约然后调用旧的合约数据,所以在创建合约之初,必须把合约的逻辑层和数据层分离,逻辑可以随时升级,但是数据就没办法升级了!
数据层:写入是需要消耗gas,读取是不需要gas,但是如何是被调用的话,读写都要gas,gas在读写数据中,还是蛮大的成本,所以要慎重考虑!
逻辑层:逻辑层没有数据的存储,哪怕合约地址改变了,也不会有太大的影响!
关于合约升级的问题,可以参考【玩过以太坊接口的就懂这个意思】:http://baijiahao.baidu.com/s?id=1598874502741898860&wfr=spider&for=pc
第二:合约销毁
合约销毁确保必须是管理员调用:
selfdestruct(address recipient)
:销毁当前合约,把余额发送到给定地址
注意:合约一旦销毁,就无法继续交互,数据读写都会失败,但是测试发现,合约依然可以接收以太币,所以是否要销毁合约自己决定,合约一定销毁了,你当前合约的余额是可以转出到你想要的地址,但是销毁之后,在接收的ETH就无法转出了!【销毁要慎重】
function is_admin(msg.sender) kill() external {
selfdestruct(youAddress);
}