【bg真人官网】以太坊智能合约版本升级的核心方法

本文摘要:本文主要阐述了以太网的注册契约、代理契约、继承存储可升级性和更好的可升级性方法。

bg真人官网

本文主要阐述了以太网的注册契约、代理契约、继承存储可升级性和更好的可升级性方法。在软件工程中,当发现新的bug和安全隐患时,一般不进行修复,动态启动修改后的版本。在智能合同的研发中,可扩展性不是那么简单的。

因此,我们必须采取不同的方法。Ethereum目前还处于追赶阶段,关于如何升级智能合同版本有很多争议,但今天我们会解释一些最糟糕的免费选择。注意:智能合同版本的可扩展性仍然是一个活跃的研究领域。

由于欺诈或新发现的漏洞,以下任一方法都可能导致智能合同终止。智能契约可伸缩性的基本方法在这里,我们将解释一些更容易接近但不合适的智能契约可伸缩性解决方案。虽然这些不是最好的方法,但它们是当今应用的核心。

注册合同注册合同可能是最简单的升级方法,但在这种方法中,简单性带来了一些严重的缺点。它用于两个智能合同的工作:注册合同和逻辑合同。

注册表协议仅用于将用户指向逻辑协议的当前版本。每当逻辑合同升级时,注册中心合同的所有者可以修改逻辑合同的升级地址。contract some register { address backend contract;address[]previousBackends;地址所有者;函数some register(){ owner=msg . sender;}修饰符only owner(){ require(msg . sender==owner)_;}函数change后端(地址newBackend) publiconlyOwner()返回(bool){if(newBackend!=backend contract){ previousbackends . push(backend contract);backendContract=newBackend返回true}返回false}}这个方法很有优势,因为当用户想用它签约时,首先要查询当前地址。

否则可能造成经济损失。将数据移入新合同也非常困难,所以必须仔细考虑这个过程,以防结束。代理契约用于发送数据和调用逻辑契约。对于代理契约,用户总是可以调用同一个契约地址,并非常简单地将其发送到当前的逻辑契约。

该方法通过DELEGATECALL操作码工作。DELEGATECALL是EVM获得的操作码,用作程序集。除了目标地址的代码继续在调用协议的上下文中执行之外,它的工作方式与普通调用类似。

这意味着像“msg.sender”和“msg.value”这样的值将被保留。本质上,DELEGATECALL允许目标协议代表被调用方启动调用。合同中继{公共地址当前版本;地址公共所有者;修饰符only OWNER(){ require(msg . sender==owner);_;}功能继电器(地址init addr){ current version=init addr;owner=msg.sender//此所有者可能是另一个具有multisig的合同,而不是单个合同所有者}函数change contract(address new version)public only owner(){ currentVersion=new version;} function(){ require(CurrentVersion . delegate call(msg . data));}}虽然这种方法防止了与注册合同相关的问题,但它也有自己的问题。比如管理不当,数据存储就更容易结束。

如果新合同的存储布局与以前的合同不同,数据可能会损坏。这个构建还防止您从函数中获取返回值,从而允许它的用例。保存合同和前面的方法一样,需要你的逻辑合同和辅助合同。

在这种情况下,辅助合同是永久存储合同。这项技术通过分离逻辑和数据来工作。逻辑契约可以随时升级,您的数据会得到维护,因为它存储在外部。

本文关键词:bg真人登录,bg真人官网

本文来源:bg真人登录-www.haiioween.com