前言:随着 Nimbus、Prysmatic Labs 等团队陆续发布以太坊2.0信标链测试网,以太坊2.0的阶段0开发进展工作不断取得新的进展。这些测试网的意义绝不只是让人眼前一亮的“一则新闻”便可抛之脑后,它们对于以太坊这条保护着数十亿美元资产的区块链网络的未来发展来说有着重要的意义。对此,加密货币研究者 Mohamed Fouda 将基于 Prysmatic Labs 团队最新发布的 Sapphire 测试网来论述其在开启这场以太坊大变革中的重要意义。
本月初,Prysmatic Labs 团队为以太坊 2.0网络的阶段0 (即信标链阶段) 发布了最完整的公共测试网络 Sapphire,该测试网络使用 Prysm 客户端。
Sapphire 测试网的发布受到了以太坊社区的热烈欢迎。许多人立即开始运行该软件并向 Prysmatic Labs 团队报告相关问题。该以太坊2.0测试网上的验证者节点数量很快超过了800个。这表明了以太坊社区非常希望为向备受期待的以太坊 2.0网络升级做出贡献。
“Woo! 我刚刚成为了 ETH 2.0 测试网的验证者。@prylabs 太棒了!整个过程都很流畅,除了我遇到一个错误并重启了我的节点。你也可以通过下方说明参与进来: alpha.prylabs.net/participate”
在我们为之兴奋的同时,有必要让更广泛的以太坊社区了解有关以太坊2.0测试网的信息:为什么 Prysm 测试网的发布是一个重要的里程碑?为什么花了很长时间才实现这个里程碑?
本文将试图通过揭开相关技术细节的神秘面纱,并使用一种简单的语言加以阐明。我们将首先讨论以太坊 2.0与当前的以太坊协议的不同之处,然后对该测试网的功能进行深入的解释。
一、为何以太坊2.0升级需要很长的时间?
为了回答这个问题,让我们从一个简单但非常重要的事实开始:
以太坊 2.0并不是对当前以太坊网络的升级。相反,它是对以太坊的全面改革和重新设计。
许多人没有意识到这一事实,甚至可能不同意这种描述。所以澄清这点很重要。
1. 全新的以太坊 2.0网络不再使用 PoW 共识协议,而是使用一种全新的、创新性的 PoS 共识机制–Casper。[1]
2. 当前基于 PoW 共识的区块链 (包括当前的以太坊和比特币等网络) 使用一种简单的方法来选择区块链如何运行,以及在出现分歧 (分叉) 时应该遵循哪条链–即遵循最长的那条链。PoW 链建立在累积工作量最多的链的基础上,也就是使用了最多算力的链。相比之下,由于以太坊2.0使用 PoS 机制,它引入了一组分叉选择规则 LMD GHOST [2],该分叉选择规则将用于确定哪条链才是正确的链。
3. 当前的以太坊网络是一条由一个个区块 (DAG 数据结构) 组成的区块链,而以太坊2.0网络将使用 1024 条并行的分片链 (shard chains)。这是以太坊改善其扩展性的雄心计划的核心,该计划就是我们所说的 Sharding (分片)。这些不同的分片链将可以相互通信,所有这些分片链都将由一条称为信标链 (beacon chain) 的主链控制和验证。这条信标链就类似于一株植物的茎,上面长着1024条相同的分支 (分片链)。
4. 由于这些根本性的变化,ETH 持有者们将不能简单地在全新的以太坊2.0网络上使用他们的 ETH 代币了。相反,他们将必须先销毁当前的 ETH (通过将 ETH 发往当前以太坊1.0上的某个智能合约进行销毁),作为回报的是他们将在信标链上获得相同数量的 ETH。这种转移机制由当前的以太坊 1.0链上的一个智能合约来处理,该合约受到信标链的监控 (从而核实用户是否已经将 ETH 发往该合约中,并防止双花问题等等)。
以太坊 1.0和2.0之间有很多不同之处,上文讨论的只是其中的一些主要区别。这说明了交付以太坊 2.0将需要很大的工作量。
二、为何以太坊2.0测试网的发布很重要?
从上文讨论的不同之处可以看出,以太坊2.0的设计中有许多组成部件需要组合在一起并加以调整改进,以使整个全新网络正常运行。以太坊 2.0的许多概念都是全新的,以前从未在任何公共区块链中测试过,比如 Casper 共识机制就是如此。
其他试图实现类似目标的协议 (如 Cosmos 和 Polkadot) 需要两年以上的时间来完成运行设计,同时它们具备从零开始的灵活性。这些项目不必担心将 ETH 和其他 ERC20 代币从旧链转移至新链的问题,也不必担心需要去降低相关变更对 dApp 开发人员的影响。而以太坊社区需要看到以太坊从旧链迁移至新链的过程,以增加对这一发展路线图的信心。
三、在Sapphire测试网中实现了什么功能?
让我们回到前面提到的以太坊 1.0和2.0之间的四个主要不同之处,Sapphire 测试网实现了#1、#2和#4,部分实现了#3。具体来说,Sapphire 测试网使用新的分叉选择规则,实现了 Casper PoS 共识机制,实现了信标链,也实现了一种将 ETH 1.0 代币传输为将在该测试网上使用的 ETH 2.0 代币的机制。Sapphire 测试网尚未实现1024条分片,也没有实现跨分片通信机制。
Sapphire 测试网的另一个值得注意的缺失部分是以太坊智能合约功能的实现,该功能计划在路线图的阶段2实现。因为智能合约功能要求迁移以太坊虚拟机(EVM),或者在以太坊 2.0协议中实现WASM。[3]
四、该测试网如何运行?
以太坊 2.0是一个 PoS 网络,由参与质押 (staking) 的验证者 (validators) 来运行网络和生产区块。因此,第一个难题是为验证者分配代币,以激励他们来运行整个网络。
以太坊2.0网络最终将使用当前以太坊1.0链上发行的 ETH 代币,这些代币需要被传输至全新的以太坊2.0网络中。
为了实现和测试这种传输功能,Prysmatic Labs 团队的开发人员使用了一个称为 Goerli 的以太坊 1.0测试网 (在 Goerli 测试网中,任何人都可以获取任意数量的 ETH 测试代币),同时该团队也开发了一个用于测试的 Deposit Contract (存款合约[4]),该合约将无限期地存储任何发往并存储在其中的 ETH 测试代币。
用户将代币存储在这个 Deposit Contract 合约中之后,信标链就会发行相同数量的 ETH 2.0 测试代币。为简单起见,我们将把这些 ETH 2.0 代币称为:Beacon Chain ETH (bETH)。
将 ETH 测试代币从以太坊1.0测试网 (即 Goerli 测试网) 传输至以太坊2.0测试网的示意图
将 ETH 1.0 转移生成 bETH 的操作步骤如下:
1. 首先验证者安装针对以太坊2.0网络的 Prysm 软件并在以太坊2.0上创建一个账户 (验证者账户)。创建帐户将生成“存款数据 (Deposit Data)”,用于将以太坊 1.0钱包链接到生成的以太坊 2.0帐户。
2. 在以太坊1.0 Goerli 测试网上,用户将 3.2 ETH 测试代币发送至 Deposit Contract (存款合约) 并参与以太坊2.0测试网的验证。这一过程将会把这些 3.2 ETH 销毁掉。(备注:在未来正式的以太坊2.0网络中,用户需要发送 32 ETH 才能成为验证者。)
3. 接下来,以太坊2.0信标链会检查在 Deposit Contract 合约中的存款,并在新创建的验证者账户中发行相同数量的 bETH 代币。现在,验证者在等待一段安全性时间延迟之后,就可以参与到验证过程中了。这段延迟的时间是为了增强信标链的安全性。
4. 之后,验证者客户端就开始参与到共识机制中来了,并通过验证来获取奖励,当然也会因为不遵循协议规则而被罚没 (get slashed)。
五、验证者的任务究竟是什么?
在以太坊 2.0中,每6秒就会生成一个新的区块 (当前的以太坊 PoW 网络为15秒左右)。在每个区块中,验证者池中的一名验证者将提议一个区块,许多其他的验证者将查看被提议的区块并对其正确性进行证明 (attest)。在之后的每个区块中,将会由不同的验证者来提议区块,并由一组不同的验证者来证明被提议区块的正确性。
每生成64个区块 (称为一个 epoch),所有的验证者 (不管是信标链还是1024条分片链上的验证者) 都将被重新打乱,从而为下一个 epoch 分配新的区块提议者 (block proposers) 和证明者 (attesters)。区块提议者和证明者都可以称为验证者。在重新分配验证者时将借助于随机数生成技术,本质上是为了防止验证者串谋,从而增强协议的安全性。
验证者客户端需要保持在线才能执行分配给他们的任务。当验证者诚实地完成这些任务时,他们会获得新铸造的 bETH 代币的奖励;如果验证者采取恶意行为,串谋或者处于离线状态,那验证者之前质押的代币将被罚没。当某位验证者的余额减少到低于最低门槛值 (此测试网中是 3.2 bETH) 时,该验证者就会别驱逐出验证者池,无法继续参与验证。
六、接下来的工作是什么?
Sapphire 测试网只是抵达以太坊2.0目的地的第一步,它只是实现了以太坊2.0路线图的阶段0。在以太坊2.0完全正常运转之前,还有两个阶段需要完成:阶段1和阶段2。
但即便在阶段0方面,在阶段0在主网上启动之前还有大量工作要做。
首先,我们还处于该测试网的初期,该测试网还存在大量的问题、bug和优化有待解决。
其次,该测试网只是一个单一客户端测试网,即只有 Prysm 客户端可以在 Sapphire 测试网中使用。其他以太坊2.0客户端开发团队 (如 Nimbus [5] 和 Lighthouse [6]) 正致力于实现以太坊2.0网络的其他客户端,解决这些不同的客户端之间的兼容性是实现一个多客户端测试网的先决条件。
第三,阶段0的规范允许 bETH 在不同的账户之间转移,这项功能还不可用。
最后,以太坊基金会的研究团队依旧在对阶段0的规范进行小的更改。预计阶段0主网上线有望在2019年底实现,在这之前,这些规范需要敲定、完全实现并在多个以太坊2.0客户端中进行审核。
总之,Sapphire 测试网的启动是交付以太坊2.0路线图中的关键一步。其重要性源于以太坊社区的参与和测试,以明确问题和瓶颈,从而指导以太坊2.0开发人员解决这些问题。该测试网的启动在很大程度上增强了社区对以太坊2.0路线图的信心。此外,以太坊基金会也宣布了将拨出1,900万美元用于支持以太坊2.0和其他扩展性解决方案的研究和开发。这些资源将使开发和测试工作取得更快的进展。