最新内容会更新在主站深入浅出区块链社区
原文链接:如何编写一个可升级的智能合约
区块链信任基础的数据不可修改的特性,让它传统应用程序有一个很大的不同的地方是一经发布于区块链上就无法修改(不能直接在原有的合约上直接修改再重新发布)。
写在前面
阅读本文前,你应该对以太坊、智能合约及Solidity语言有所了解,如果你还不了解,建议你先看以太坊是什么
当智能合约出现bug
一方面正式由于智能合约的不可修改的特性,因为只要规则确定之后,没人能够修改它,大家才能够信任它。但另一方面,如果规则的实现有Bug, 可能会造成代币被盗,或是调用消耗大量的gas。这时就需要我们去修复错误。
我们知道一个智能合约包含两部分: 代码逻辑和数据,而代码逻辑又是最容易出问题的部分, 如在实现如下合约时,由于手抖在写addTen()时,10写成了11。
pragma solidity ^0.4.18;
contract MyContract {
mapping (address => uint256) public balanceOf;
function setBlance(address _address,uint256 v) public {
balanceOf[_address] = v;
}
function addTen(address addr)