学习
实践
活动
专区
工具
TVP
写文章

关于以太坊君士坦丁堡硬分叉 你知道这些就够了

预计将于2019年1月16日进行的以太坊君士坦丁堡硬分叉(当区块高度到达7,080,000时),即将对以太坊网络带来怎样的升级呢?我们一起来了解一下。

提醒一下:如果你只是一名普通的ETH持有者,你不需要对这次升级做任何准备。

先来了解一些背景知识。

什么是分叉?

简单来说,分叉就是对区块链网络进行升级,就类似于你将计算机或者手机应用进行更新,从而使这些设备更安全或者拥有更多新的功能。

你是否有过这样的经历:当你升级了Word版本之后,在新的Word中打开一篇文档或者其他文件,这篇文档的显示会出现一些小问题?比如之前的批注不见了,或者以一种奇怪的字体显示出来?硬分叉所带来的影响也类似如此,即如果运行旧软件的客户端与运行新软件的客户端进行互动,那就会出现有些数据丢失或者出现不稳定的情况。

这是因为区块链是去中心化的,并且在大量的计算机(节点)上同时运行。每个人都可以同时访问最新的“Word文档(即升级后的区块链)”,而不需要将这个文档挨个的发送给每个人。

因此,为了防止出现不稳定的情况,任何运行区块链软件的计算机(节点)都不许进行更新。如此一来,所有节点都具备了同样的新功能和更强的安全保障,并运行同样的规则(共识协议)。

之所以将区块链升级身为分叉,是因为这就像一条路出现岔路一样,一条链被分裂成两条独立的链,其中一条链上的节点和矿工运行旧规则,另一条链上运行新规则。

如果分叉不存在争议(即软分叉),那大多数节点和矿工将会停止运行旧软件,原来那条旧链就会慢慢消失。

但是如果分叉存在争议(即硬分叉,一些节点或矿工反对更改区块链共识规则),那此次分叉产生了两条链都将继续存在并都具有价值。2016年7月从以太坊(ETH)分叉出来的以太经典(ETC),2017年8月从比特币(BTC)分叉出来的比特币现金(BCH)就属于这种情况。

软分叉

在区块链中,软分叉是很常见的事情,因为每当有关规定区块规范的软件核心部分有所更新时,就会出现软分叉。由于软分叉会改变区块遵循的“规则”,因此更新之后会出现旧区块和新区块:当所有节点和矿工都进行了升级之后,这种情况就将不复存在,因为之后生成的区块都是新区块了。之所以称之为软分叉,是因为这种升级并不会分裂区块链,每个节点都会自愿进行更新(即节点对被提议的更新达成了共识)。

软分叉具有以下特点:

向后兼容,即运行旧版本的节点依旧能够处理更新至新版本的节点生成的区块,新的规则不违反旧规则;

通常会带来更为收紧的规则(比如减小区块大小)

大多数情况下不会分裂区块链

见下图:

上图中,表示 Majority consensus (大多数节点同意的共识机制);×表示 Minority (or no) consensus (少数节点或没有任何节点同意的共识机制)。中间的红色竖虚线表示对区块链从V0.1版本升级成V0.2版本的开始时间。升级后,旧节点(即运行V0.1版本的节点)将接受V0.2新版本之后生成的区块,这使得软分叉是向后兼容的。随着所有节点和矿工进行了更新,基于V0.1规则所挖出的区块将不复存在,因此原来的V0.1那条链最终将消失。

硬分叉

硬分叉之所以“硬”,是因为它将把一条区块链分裂成两条继续运行的独立区块链。当出现以下任一一种情况,便可能会发生硬分叉:

开发者、矿工和节点之间存在分歧,因为他们在对区块链的运行产生重大影响的变更方面不能达成共识。比如,矿工们可能希望增加区块大小,而开发者表示不同意。

在获得广泛支持的前提下,对区块链系统实现重大的变更,但旧节点不支持新挖出的区块,因为旧节点认为新区块违反了原本的‘规则集’(比如区块大小增加了)。

硬分叉具有以下特点:

向后不兼容,即旧版本节点将拒绝接受新版本节点生成的区块;

通常会带来更为宽松的规则(比如增加区块大小);

将把原有的区块链分裂成两条独立的区块链,这两条链在分叉之前的历史记录是一样的。

见下图:

上图中,V0.1表示基于旧版本,CoinX表示基于旧版本的已有的区块链;V0.1.1表示基于新版本,CoinY表示基于新版本形成一条区块链。中间的红色竖虚线表示对区块链进行分叉的时间。分叉后,CoinX链上的节点将不接受CoinY链上生成的区块,反之亦然,因此硬分叉是向后不兼容的。与软分叉不同,CoinX这条旧链将不会消失,因为依然有足够多的矿工和节点在使用CoinX这条链。硬分叉导致原本的一条链分裂成两条独立的链,但这两条链在分叉之前拥有相同的历史记录。

什么是以太坊君士坦丁堡?

君士坦丁堡(Constantinople)仅仅是针对这次以太坊网络升级的一个命名。此次升级并不存在争议,预计所有节点和矿工都将同意此次升级,以实现以太坊区块链走上新的台阶。

因此,就像以太坊网络此前经历的其他几次不存在争议的升级(比如2016年的“Homestead(家园)”和2017年的“Byzantium(拜占庭)”升级)。此次硬分叉升级之后会出现两条链,但旧链将很快被弃用。同时,与此前的升级类似,普通用户将不会注意到任何变化,也不会注意到出现了分叉。

此次升级包括了一些全新的以太坊改进提案(EIP),所有这些提案的实现都旨在对以太坊网络进行提升。

我们来看一下截至目前以太坊的发展历程:

此次升级包含哪些 EIP?

01. EIP145:EVM中的按位转移指令

此项提案的目的是为了提供与其他算术运算符成本一样的本机按位转移(native bitwise shifting)。

当前,EVM(以太坊虚拟机)缺少按位转移运算符,但支持其他的逻辑和算数运算符。移位操作可以通过算术运算符来实现,但是成本较高,且主机需要更长的处理时间。通过使用算术来实现SHL(左移)和SHR(右移)都需要消耗35gas,而EIP145提案所提议的指令将只需要消耗3gas。

新的指令将使gas的消耗在原来的基础上减少10倍,这意味着运行某些智能合约的成本将更少。

也就是说,增加协议的功能,从而使得在链上执行某些操作会更加便捷、更节省成本。

02. EIP1014:Skinny CREATE2

在0xf5上添加一个新的操作码,这将需要4个堆栈参数:endowment, memory_start, memory_length和salt。这将与CREATE表现一样,但将使用keccak256( 0xff ++ address ++ salt ++ keccak256(init_code)))[12:],而不使用往常的sender-and-nonce-hash作为初始化合约的地址。

这个EIP提案将状态通道(state channels)的概念引入到了以太坊网络。这将允许交易的结算在链下进行,类似于比特币的闪电网络。EIP 1014本身将对以太坊网络的吞吐量带来巨大的提升,因此以太坊网络每秒将能够处理更多的交易。

03. EIP1052 — EXTCODEHASH 操作码

智能合约通常都需要检查其他合约的字节码(bytecode),但在很多情况下,智能合约本身并不需要其他合约的字节码。检查其他合约的字节码主要是通过 EXTCODECOPY 操作符来执行,因此如果需要检查很多智能合约,则将会很昂贵。

因此,EIP1052提议使用一种新的操作符EXTCODEHASH,该操作符将返回合约字节码的keccak256哈希,从而更具效率和成本效益。

04. EIP1283:调整SSTORE操作码的净gas计量

这个提案提议了一种方式调整SSTORE操作码的净gas计量(代替之前的EIP-1087和EIP-1153),实际上就是对数据存储的变更引入更加公平的定价方式,这对于智能合约开发者来说是非常有益的

05. EIP 1234:减少区块奖励&延迟难度炸弹

这个议案引入了两个主要的提议,其中一个是将区块奖励从3 ETH 减少至 2 ETH,从而减少ETH的供应使其更加稀缺。这将能够减少ETH的通货膨胀,同时也使矿工们在保护以太坊网络的同时不会受到太大影响。

另一个就是延迟难度炸弹(difficulty bomb)。难度炸弹是由开发者引入的一种特殊机制,用于阻止矿工拒绝切换至以太坊网络(Casper)将启用的PoS(权益证明)机制,因为难度炸弹将会大大增加矿工们的挖矿难度,进而会打击矿工们挖矿的积极性。这也对以太坊开发者带来了很大压力,因为他们需要在难度炸弹造成的“冰河世纪”到来之前(随着难度炸弹向前推进,使得平均挖出区块的时间越来越长),对以太坊网络进行Casper升级。

但以太坊开发者们并不想快速地进行Casper升级,因为他们需要确保Casper在部署前是100%安全的。因此,EIP1234也将对难度炸弹延迟12个月

我们可以通过下方的视频来进一步了解 EIP145、EIP1014、EIP1052和EIP1234(本视频在EIP1283出来之前便已制作,因此视频中不包含EIP1283的讲解),视频链接:

https://www.youtube.com/watch?v=rfg408lSAj0

相关问题

01. 此次升级我需要做什么吗?需要移动我的ETH吗?

不需要的,你的ETH将会同时存在于新的以太坊区块链和旧以太坊区块链中。所有的主要交易所(如Coinbase, Kraken, ShapeShift)、服务商(如MyCrypto, MetaMask, Trust Wallet)和以太坊节点提供商(如Infura, Etherscan, Quiknode)都将升级他们的节点,因此你只需要使用他们升级之后的节点/软件就可以了。

如果你运行一个节点(比如你在Infura工作,或者在家里使用自己的电脑允许Geth或者Parity),那你就需要将节点升级至最新的软件版本。再次强调一下,普通用户将不需要为此次升级做任何事情,这次升级只是一次简单平稳的过渡。

当然,如果这次硬分叉升级存在争议,情况就完全不一样了。

02. 此次升级将影响交易/确认时间吗?

出块时间应该保持在约15秒左右,未来以太坊实现完全的PoS机制之后将可能改变出块时间,但由于PoW机制会涉及到一些延迟,且PoW机制带来的情况是更快的交易将可能创建出包含无效交易的区块。当前,以太坊通过使用叔块来解决这一问题。

03. 此次升级将影响交易成本吗?

交易的成本取决于交易的数量。这些EIP提案中有些提案将优化智能合约交互,因此很可能与智能合约进行交易的成本将会减少。但是,我们不确定是否会出现类似 CryptoKitties 的dapp并导致以太坊网络出现拥堵,进而增加交易费用。

04. 此次升级会影响网络每秒处理的交易量吗?

以太坊网络的Tx/s将基本保持不想变,但由于EIP1024将优化状态通道,我们应该能够看到某些第二层解决方案将开始起作用(比如OmiseGo、Loom Network、Raiden网络等)。

05. 此次升级是将以太坊网络升级为PoS机制吗?

· 没那么快,当前对于升级至PoS还在进行大量的测试。EIP1234提案的目的之一就是减少区块奖励,从而来延迟难度炸弹。最终,以太坊将在 Serenity 阶段运行一条信标链和许多分片链。

对于君士坦丁堡升级的进展,请参阅:

https://github.com/ethereum/pm/wiki/Constantinople-Progress-Tracker

原文作者:MyCrypto

编译:Jonny

原文链接:

https://medium.com/mycrypto/ethereum-constantinople-everything-you-need-to-know-a47f3a16f3d2

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190110A0PZEG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券