读懂以太坊君士坦丁堡升级:到底是什么
2019-01-15 16:39

读懂以太坊君士坦丁堡升级:到底是什么

本文来自微信公众号:蓝狐笔记(ID:lanhubiji),作者:Mycrypto。


前言:以太坊君士坦丁堡升级即将到来,这次更新主要涉及五个提案:EIP145、EIP1014、EIP1052、EIP1283、EIP1234。这些改进利于让链上的特定操作更便宜更容易,同时也推迟了难度炸弹和调整了区块奖励。作者是Mycrypto,来源于medium.com,由“蓝狐笔记”公众号社群“Leo”翻译。


以太坊君士坦丁堡分叉即将到来,很多人都想了解这意味着什么,以及是否应该做些什么准备。(如果你只是ETH长期持有者,则无需为此更新做准备。)


什么是分叉?


简单来说,分叉是对网络的更新。它跟你更新你的计算机或应用类似,升级后可以变得更安全或拥有新功能。


你有没有遇到过这样的情况:打开一个Word文档或其他文件时,它看上去很怪异?因为它是在新版中创建的文档,可能会导致评论丢失,也可能显示出怪异字体。硬分叉也类似。如果人们同时运行新版和旧版软件,当它们尝试沟通时,事情就会变得不稳定,且可能导致信息丢失。


由于区块链是去中心化的,且同时在无数的计算机上运行。每个人都可以同时运行最新版本,而不是像Word文档一样,从一个人发送到另外一个人。


因此,为了确保事情顺利,每个区块链的软件(节点)必须升级更新。这样,每个参与者都有相同的新功能和安全,遵循相同的规则。



来源:https://cryptographics.info/cryptographics/blockchain/hard-soft-forks/


为什么叫分叉?


它之所为被称为分叉,是因为跟道路上的分叉类似,单条链的区块分裂成为两条链的独立区块。一条链上还是按旧规则运行,第二条链按新规则运行。


如果是没有争议的硬分叉,大多数人都停止运行旧版软件。没有人会在这条旧链上添加新区块。这样,该链条自然减速然后死亡。旧链上的代币也就没有价值。


然而,如果升级分叉是有争议的,这意味着有些人不赞同要更新的内容。这样,分叉后的两条“路”可能会继续存在,价值也会持续。正如ETC从ETH分叉出来,BCH从BTC中分叉出来一样。



什么是君士坦丁堡?


君士坦丁堡只是这次以太坊网络更新的名称。这次升级没有争议,预计每人都同意采用新版本。


由此,就像之前以太坊的无争议升级一样(2016年的Homestead和2017的Byzantium),这次硬分叉产生两条链,旧链死掉,而新链持续。此外,跟之前的更新一样,普通人不会注意到任何变化或不同路径的分叉。


这次新的ETH区块链包括一些新以太坊改进提案(EIP)的实施,目的是优化以太坊。



我是否必须对这个新的以太坊区块链做点什么,或者移走我的ETH?


不用。你的ETH将会同时存在于新的ETH区块链和旧的ETH区块链上。所有的交易所、服务钱包或节点提供商都会升级它们的节点,因此,你只需使用更新的节点/软件,而不会有什么影响。


如果你运行节点(例如,你为Infura工作,或用家用计算机运行Geth或Parity),则需要升级到最新最好的软件。而对于普通用户来说,你无需做什么事情,这会是平稳的过渡。


如果硬分叉有争议,那么,这会是不同的故事。


君士坦丁堡包括哪些EIP?


EIP145:EVM中的按位移位指令


提供原生的按位移位,其成本与其他算术运算相当。


l EVM缺少按位移位运算符,但支持其他逻辑和算术运算符。移位操作可以通过算术运算符实现,但是它成本更高,且需要更多来自主机的处理时间。


l 使用算术运算实施SHL和SHR,每个花费35gas,而所提议的指令仅花费3gas。


l TL;DR:向协议添加本地功能,以便在链上执行某些操作更便宜且更简单。


EIP1014: Skinny CREATE2


l 在0xf5中添加新的操作码,它需要4个堆栈参数:endowment,memory_start,memory_length,salt。行为与CREATE相同,除了使用keccak256( 0xff ++ address ++ salt ++ keccak256(init_code)))[12:],而不是通常的sender-and-nonce-hash作为初始化合约的地址。


l 允许与链上还不存在但可依赖的地址进行交互,但最终可能只包含由特定init代码创建的代码。


l 对涉及与合约反事实交互的状态通道的用例很重要。


l TL;DR:可让你与由于状态通道而尚未创建的地址交互。


EIP 1052:EXTCODEHASH 操作码


l EIP 1052指定一个新的操作码,它返回合约代码的keccak256哈希值。


l 很多合约需要对合约的字节码执行检查,但不一定需要字节码本身。例如,合约可能想要检查另外一个合约的字节码是否是一组允许的实现之一,或者它可对代码执行分析,并且如果分析通过,它可将与字节码相匹配的任何合约列入白名单。


l 合约目前通过使用EXTCODECOPY操作码来执行此操作,但这很贵,特别是对于大型合约,这种情况下只需哈希值。由此,提出一个新操作码EXTCODEHASH,它返回合约字节码的keccak256哈希值。


l TL;DR:使得链上执行某些操作更便宜(需要更少gas)


EIP 1283: SSTORE的净gas计量(无dirty maps)


l EIP 1283 提议对SSTORE操作码进行净gas计量变更,这样可以为合约存储提供新的用途,同时在它不符合大多数实施工作时减少过多的gas成本。


l TL;DR:使得在链上执行某些操作更便宜(需要更少的gas),特别是对于目前费用“太贵”的操作。


EIP1234:君士坦丁堡难度炸弹延迟和区块奖励调整


l 由于难度炸弹(也称为“冰河时代”)缓慢加速,平均出块时间在增加。EIP1234提议将难度炸弹推迟大约12个月,并在君士坦丁堡分叉时减少区块回报(Metropolis 分叉第二部分)


l TL;DR:确保在PoS准备好并实施之前不冻结区块链。


这会影响交易/确认时间吗?


出块时间会保持在15秒左右。未来的全PoS可能会有所改变,但有PoW时会存在一些延迟,且更快的交易速度可能会产生不可靠交易的区块。ETH目前使用叔父区块来解决这个问题。


这会影响交易费用吗?


费用取决于交易数量。一些EIP会优化智能合约交互,因此,智能合约的交易费用可能会降低。但是,我们不清楚如果有类似于加密猫这样的DApp出现,这会让堵塞网络并增加费用。


这会影响每秒的交易次数吗?


会有相同的平均每秒交易次数,但考虑EIP1024(译注:应该是EIP1014,这里估计是作者笔误)将如何优化状态通道,我们可以看到一些layer 2 解决方案开始走向舞台(想想OmiseGo、LoomNetwork、Raiden等)


这是PoS的更新吗?


还不是。在这之前还有很多测试需要进行。EIP-1234的理由之一减少区块奖励以延迟难度炸弹。最终来说,未来会有beacon链和分片链。


这里是君士坦丁堡的进度跟踪https://github.com/ethereum/pm/wiki/Constantinople-Progress-Tracker。如果你希望从技术层面了解EIP,这还不错。


附录:



(以太坊EIP部分进度图,截止到2019.1.14)


本文来自微信公众号:蓝狐笔记(ID:lanhubiji),作者:Mycrypto。

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系hezuo@huxiu.com
如对本稿件有异议或投诉,请联系tougao@huxiu.com
正在改变与想要改变世界的人,都在 虎嗅APP
赞赏
关闭赞赏 开启赞赏

支持一下   修改

确定