风险提示:理性看待区块链,提高风险意识!

以太坊Constantinople硬分叉是什么意思?

2个回答

我们的乐章2星评价

2020-08-18 09:42:10

以太坊Constantinople硬分叉是什么意思?

以太坊网络在区块高度为 7,080,000 的区块上激活计划中的升级,被称为Constantinople(君士坦丁堡)硬分叉,此前还有像伪龙(Spurious Dragon)”和拜占庭(Byzantium)”这样的代号。

如果你在使用:

中心化的交易所(比如 Coinbase、Karken 或是币安)

网页端钱包服务(比如 Metamask、MyCrypto 或是 MyEtherWallet)

移动端钱包(比如 Coinbase Wallet、Status、im、Trust Wallet 或是 imToken)

硬件钱包(比如 Ledger、Trezor 或是 KeepKey)

你不需要做任何操作!除非你收到所用交易所或钱包的通知,提示您采取额外步骤(但这跟你用的服务有关,跟以太坊链无关)。

我在跑全节点/我在挖矿,我也躺着就行?

请下载最新的以太坊客户端:

最新的 geth 客户端 (v1.8.20)

最新的 Parity 客户端 (v2.1.11-stable)

最新的 Harmony 客户端 (v2.3 Build 72)

最新的 Pantheon 客户端 (v0.8.3)

最新的 Trinity 客户端 (v0.1.0-alpha.20)

最新的 Ethereum Wallet/Mist (v0.11.1)

我在跑全节点/我在挖矿,要是我不更新呢?

如果你没有更新到上述最新版本的客户端,升级激活之后,你的客户端会使用分叉前的共识规则与其它同样没有更新的节点同步并继续共识(如果还有矿工在那里出块的话)。由于共识规则已经发生变化并且互不兼容,没有更新的客户端将不能发送交易到更新后的以太坊网络上,只能发送交易到没有更新的网络中。

对以太坊来说,网络升级”是怎么一回事?

网络升级即对以太坊底层协议的更改,目的是增加一些能够增强系统功能的新规则。区块链系统的的去中心化属性,使得升级并不像你更新手机上的 App 那么简单。区块链中的网络升级需要整个社区的协调和沟通,包括多个以太坊客户端开发者们的交易,以使升级顺利进行。

网络升级过程是什么样的?

当社区对升级应当包含哪些更新达成一致意见之后,以太坊客户端(比如 geth、Parity 和 Harmony) 的开发者们会把相关更新的代码写到客户端软件里。这些协议更新会在指定的区块高度后激活。没有更新到最新规则的节点都会留在更新前的网络中,使用旧的共识规则继续运行。

君士坦丁堡分叉包含了哪些更新?

网络升级中包含的更新是用 EIP 来标记和指代的。以太坊升级提案(Ethereum Improvement Proposal,EIP)描述了为以太坊平台实施的一些标准,包括核心协议规范(core protocol specification)、客户端 API(client API)以及合约标准(contract standard)。下列 EIP 为君士坦丁堡升级中包含的更新:

EIP 145:EVM 中的按位移动(bitwise shifting)指令

提供与其它算术运算代价相当的原生按位移动指令

EVM 现在是没有按位移动指令的,但支持其他逻辑和算术运算。按位移动可以通过算术操作来实现,但这样会有更高的 Gas 消耗,也需要更多时间来处理。使用算术操作,实现 SHL 和 SHR 需要耗费 35 Gas,但这一提案提供的原生指令只需消耗 3 Gas。

一句话总结:该 EIP 为协议加入了一个原生的功能,使得 EVM 中的按位移动操作更便宜也更简单。

EIP 1014:Skinny CREATE2

加入新的操作码 0xf5 ,需要 4 个堆栈参数(stack argument): endowment 、 memory_start 、 memory_length 、 salt 。具体表现与 CREATE 相同,但使用keccak256( 0xff ++ sender_address ++ salt ++ keccak256(init_code)))[12:] ,而不是 keccak256(RLP(sender_address, nonce))[12:] ,作为合约初始化的地址。

拓宽我们的交互范围:有些合约在链上还不存在,但可以确定只可能包含由 init_code 特定部分创建出来的代码,有了该 EIP 之后我们就可以和这样的合约交互。

对包含与合约的 conterfactual 交互的状态通道来说非常重要。

一句话总结:这一 EIP 让你可以与还没有被创建出来的合约交互。

EIP 1052:EXTCODEHASH 操作码

该 EIP 指定了一个新的操作码,可以返回某合约代码的 keccak256 哈希值。

许多合约都需要检查某一合约的字节码,但并不需要那些字节码本身。比如,某个合约可能想检查另一合约的字节码是不是一组可行的实现之一;又或者它想分析另一合约的代码,把所有能通过分析的合约(即字节码匹配的合约)添加进白名单。

合约现在可以使用 EXTCODECOPY 操作码,但在那些只需要哈希值的情境下,这一操作码相对来说是比较贵的,尤其是对那些大型合约而言。新的操作码EXTCODEHASH 部署之后,就可以只返回某一合约字节码的 keccak256 哈希值。

一句话总结:该 EIP 会让相关操作变得更便宜(消耗更少的 Gas)。

EIP 1283:改变 SSTORE 操作码所用 Gas 的计算方式

该 EIP 建议改变 SSTORE 操作码的净 Gas 计量方式,以启用合约存储的新用法,并在计算方式与当前大多数实现不匹配的情形下减少无谓的 Gas 消耗(译者注:因为在当前的大多数实现中都不需要某些操作,但原来的计算方式会把这些操作所需的 Gas 也算进去)。

一句话总结:该 EIP 会让某些操作变得更便宜(只需更少的 Gas 即可完成操作),减少那些当前多余”而昂贵的 Gas 消耗。

EIP 1234:推迟难度炸弹爆炸的时间并调整区块奖励

平均出块时间会因为逐渐加速的难度炸弹(也叫做冰河时期”)而不断上升。该 EIP 提议推迟难度炸弹约 12 个月,并且(为适应冰河期推迟)而减少区块奖励。

一句话总结:该 EIP 保证了我们不会在 PoS 准备好并实现之前使以太坊停止出块。

梧桐树6667星评价

2020-08-15 09:43:17

据以太坊第 49 次开发会议协定,“君士坦丁堡”硬分叉于 2019 年 1 月 16 日在 7080000 区块高度激活,升级中包括五项改进方案:

EIP 145:由两位以太坊开发人员 Alex Beregszaszi 和 Pawel Bylica 撰写的技术升级,介绍及提供了一种更为有效的以太网信息处理方式,称为 Bitwise Shifting。

EIP 1052:由核心开发人员 Nick Johnson 和 Bylica 撰写,EIP 1052 提供了优化以太坊上大规模代码执行的方式。

EIP 1283:由 Johnson 撰写的 EIP 1087,该提案主要透过为数据存储的变更引入更公平的定价方法,使智能合约开发商受益。

EIP 1014:由以太坊的创始人 Vitalik Buterin 提出,此升级的目的是更良好的促进基于状态通道和链下交易的特定可扩展性解决方案,随着更多事物被转移到第二层,可以解决目前的很多性能问题。

EIP 1234:由主要以太坊全节点钱包 Parity 的发布经理 Afri Schoedon 主持,这也是该次升级中最有争议的改进方案,将块采矿奖励从 3 ETH 减少到 2 ETH,以及延迟以太坊的难度炸弹 12 个月。

升级后的以太坊,其网络更轻量,更快速,更安全。但一下几点值得注意:

1. EIP-1234 是最具争议的项目,该项目提议将 “拜占庭” 硬分叉后的出块奖励从 3 ETH 减少到 2 ETH,如此一来,矿工的收益将大大降低。

2. 当前,以太坊的 POW 属于工作量证明机制, 未来会逐步向POW+POS 混合机制、到纯粹 POS 平滑过渡。矿工收益减少,交易者手续费降低。

3. 由于 POW 机制在挖矿的过程中大部分是在寻找随机数,用来寻找随机数的能量和资源会永远消失。以太坊升级 POW+POS 机制后,将减少因挖矿造成的电力资源的浪费。

4.和 DAO 突发事件导致的硬分叉不同,“君士坦丁堡” 是基于 “拜占庭” 协议升级的结果,得到开发者内部的一致同意,所以不会有分裂,也不会有新币出现。

换言之,君士坦丁堡升级之后,损失最大的将是现有以太坊矿工。此事激起了一些矿工的意见,希望能把抵抗 ASIC 的算法 ProgPoW 也加入到本次升级之中。