以太坊智能合约的两种数据分离模式(部署可升级式智能合约)

重要!做数据分离推荐使用2018年后的的Geth版本,即v1.8以上。在genesis.json创世文件的配置config里需添加拜占庭Block,如下:"config": {    "chainId": 1,    "homesteadBlock": 0,    "eip155Block": 0,    "eip158Block": 0,    "byzantiumBlock.
摘要由CSDN通过智能技术生成

重要!

做数据分离推荐使用2018年后的的Geth版本,即v1.8以上。在genesis.json创世文件的配置config里需添加拜占庭Block,如下:

"config": {
    "chainId": 1,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0
}

"byzantiumBlock": 0 为必添加项!

 

    以太坊智能合约的设计是部署后不允许修改的,所以智能合约修改后重新部署数据便会丢失,但是难免有业务需求的变更,这时候便出现了可升级式智能合约,其原理是将数据合约和业务合约进行分离,用业务合约去调用数据合约,这样当需求变更时,只需要重新部署业务合约即可,而在数据合约里存储的数据则不会丢失。目前智能合约的数据和业务分离有两种方式,第一种是通过合约的地址进行调用,另一种是通过一个Proxy代理合约进行代理调用。地址调用十分简单,代理调用相比稍复杂一些,国外使用代理调用稍多一些。个人没有对比过两种方式的差异,大家可以自己选择,两种方式都可以实现数据分离。

 

1 地址调用方式

数据合约如下

pragma solidity ^0.4.24;

contract MyCoinData {
    
    address private master;
    
    mapping (address=>uint256) private balances;
   
    constructor () public {
        master = msg.sender;
        balances[master] = 1000;
    }
    
    function getBalance(address who) view public returns (uint256 value) {
        return balances[who];
    }
    
    function setBa
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值