书名| Absolute Essentialsof
Ethereum
作者| Paul Dylan-Ennis
翻译| LXDAO 烟波
1. 本书概述
本书为 Absolute Essentialsof Ethereum(以太坊指南),作者:Paul Dylan-Ennis,共分为八章内容。
本书目录:
赠言
前言与致谢
第一章 介绍以太坊
第二章 以太坊 · 执行层
第二章 以太坊 · 共识层
第四章 以太坊治理和文化
第五章 去中心化自治组织(DAO)
第六章 DeFi去中心金融
第七章 非同质化代币(NFTs)
第八章 以太坊二层网络和路线图
收尾
术语
2 以太坊 · 共识层
因为以太坊是去中心化的,所以没有中心化机构可以决定世界计算机的现状,即所谓的世界状态。世界状态映射被称为外部账户(EOA)的用户账户地址,以及被称为合约账户的应用程序账户。为了跟踪世界状态,以太坊使用了区块链——一种安全的记录保存系统,实现了互不认识且互不信任的用户间的去中心化协调。以太坊的区块链被称为信标链(Beacon Chain),它有自己的状态,即也必须进行转换的信标状态(Becon State)。与通过可信第三方实现状态转换相比,区块链有共识机制。共识机制(Consensus Mechanism)是区块链使用的激励协议,以对事态达成一致。在以太坊中,共识机制被称为权益证明(Proof of Stake, PoS)或质押。非正式地讲,验证者需要质押 32 个以太币,以获得参与共识的权利。在每 12 秒的时隙中,某个验证者会被选中以提出一个代表状态转换(世界状态、灯塔状态)的区块。然后由一个验证者委员会去投票/证明区块的正当性。验证者因参与质押而获得奖励,但不当的行为会致其失去质押的以太币。因此验证者受到激励以去诚实地更新以太坊,同时不诚实的行为也受到抑制。一切运行良好时,每个时隙都会最终产生一个被记录在区块数据结构中的转换。一旦某个区块最终确定,它就会成为以太坊区块链正统历史的一部分,不能被改变。
区块和区块链
让我们从区块和区块链的高层次视角开始了解区块链,稍后再关注以太坊区块链中究竟包含了什么。以太坊区块链包含哪些内容?区块(Blocks)是包含区块链上下文信息的数据结构。一个区块是以太坊在某个时间点的快照,它可以成为区块链中的最新区块(图 3.1)。
在增设这个区块之前,之前的一个区块已被区块链接受,并成为最新的区块。在那个区块之前,又有另一个区块。这些区块相互堆叠,一直可以追溯到 2015 年 7 月 30 日以太坊最初的创世区块 0。累计起来,所有这些区块都是以太坊上活动的永久记录。区块链分布在所有全节点参与者之中,而不是位于单一的地点。请记住,我们没有一个可以更新世界计算机的中央权威机构,这意味着没有单一的实体能添加下一个区块。相反,共识机制确保所有全节点都拥有相同的区块链历史记录,并让新的区块扩展区块链。因为没有中心化机构,区块链还具有防篡改性,这意味着任何人都不能单方面更改历史记录。一旦事态被接受,就不能回滚。现在,我们将会看到人们可能怎样攻击一个区块链,并尝试改变它。但正确运行时,区块链是不可变的。最后,区块链是透明的,这意味着在区块链上发生的所有活动都是完全公开的。这是去中心化网络的副作用。每个全节点都需要一份区块链副本,因为我们都在密切关注彼此,确保每个人都遵循共识机制协议,不滥用系统。
这一点最初可能有点难以理解,但并不存在被存储在世界某个角落的单一的区块链。相反,每个以太坊网络中的全节点都会保存一份区块链。在以太坊中,主要有三种类型的节点:全节点、存档节点和轻节点。我们称运行全节点的用户为节点操作员。
全节点由软件执行客户端和共识客户端组成。执行客户端的选项包括 Geth, Nethermind, Besu 和 Erigon。共识客户端选项包括 Prysm,Teku,Lighthouse,Nimbus 和 Lodestar。多重选项被称为客户端多样性(Client Diversity),其目的是确保在一个客户端发现的任何问题不会影响整个网络。全节点可以独立验证交易、世界状态和区块链。这是因为他们拥有区块链的“完整”副本。我说"完整"是因为大多数完整节点软件会对区块链进行修剪。随着修剪会保留一定深度的区块,但只保留历史区块的快照,这些区块可以根据需要(很少)再生。许多独立用户、公司和服务选择运行全节点,以拥有最完整的区块链信息。存档节点(Achieve Node)是包含区块链完整历史记录且不进行修剪的全节点。存档节点对存储资源的要求很高,因此实际上只适合原教旨主义者。最后,在光谱另一端是轻节点(Light Nodes,有时也被称为轻客户端),它们依赖于全节点,以获取有关区块链的信息。还有一个被称为验证者的实体,负责通过质押共识机制以更新区块链。
权益证明(PoS)或质押
在接下来的七年时间里(2015 年至 2022 年),以太坊使用了与比特币相同的工作量证明(PoW)或者挖矿共识机制,但是也有一些变化 [1]。挖矿让用户竞相更新区块链,通过参与计算竞赛,找出谜题的解决方案。这种设计导致了一场意想不到的军备竞赛,使得采矿业变得越来越专业化,普通用户无法参与,而只有专家和工业企业才能参与。这是因为采矿需要使用定制的机器,这些机器被称为专用集成电路(ASIC)。ASIC 对能源的需求量非常大,而比特币因此在主流社会中获得了“环境问题”的名声。不过,我鼓励读者自己研究采矿问题并做出自己的判断,特别是比特币社区的许多人一直在努力解决这个问题。无论如何,以太坊社区更偏向权益证明机制,因为(a)对环境的影响小得多,以及(b)不需要定制的机器,因此更容易参与共识。在 2022 年 9 月,通过一项名为“合并(The Merge)”的事件,以太坊从挖矿转向质押,能源消耗降低了 99.95%,令人瞠目。合并是一项重大工程,需要从挖矿实时切换到权益证明,而因为开发人员的巨大功劳,一切顺利完成。
验证者
为了解质押,我们将从质押者的角度入手。当我们泛泛地谈论参与质押的个人时,我们称他们为质押者。例如,superphiz.eth 就是以太坊社区中一个众所周知的质押者。质押者通过运行验证者参与共识机制。验证者(Validator)是一个账户,它将 32 个以太币作为抵押(质押)存入存款合约。要成为验证者,质押者需要成为全节点操作员(执行、共识),然后短暂地使用验证者客户端(Validator Client)选择质押。存款合约(Deposit Contract)是参与的验证者的合约账户列表。有一个验证者队列来确保网络不会超载。32 个以太币的质押非常重要,因为它确保了对女巫攻击的抵抗。在区块链背景下,我们不希望恶意实体能够无成本地建立验证节点,即女巫。攻击者必须以真实的以太币作为质押,并可能在以太坊的自我防御机制下遭受损失。
一旦某个验证者不再在队列中,它就会加入验证者集合(Validator Set)。作为该集合的一部分,验证者的工作是决定当前区块链的头块并使区块被最终确定。第一个任务(链头)是使用“最新信息驱动的、贪婪的、最重的被观察子树(Latest Message Driven Greedy Heaviest-Observed Sub-Tree, LMD GHOST)投票决定的。这实现了活性(Liveness)属性,即快速添加区块。第二个任务(使区块最终确定)是使用友好的最终确定性小工具 Casper(Casper-FFG)投票决定的。Casper-FFG 投票有两部分(合理化和最终确定),最终确定区块链历史中的某个点。这实现了最终确定性(Finality)属性,我们可以确信某个点之前的区块是永久不变的。因此,总共有三种投票:链头、合理化和最终确定。当被看作一个整体时,LMD GHOST 和 Casper FFG 被统称为 Gasper。验证者在一个由时隙(Slots)和时段(Epochs)划分的时间框架内工作。LMD GHOST 投票发生在时隙内,而 Casper FFG 投票跨时段进行(见图 3.2)。
时隙:12 秒。
Epoch:32 个时段长或大约 6.4 分钟。
时隙和 LMD GHOST
首先,让我们关注一下时隙。时隙(Slots)是一个持续 12 秒的时间窗口,在这期间,一个区块可以被提议作为最新的区块链头。在每个时隙中,会随机选择一个区块提议者作为领导者。一个时段只有一个验证者被指定为区块提议者。区块提议者是通过一种名为 RANDAO 的伪随机算法提前选出的。如果区块提出者没有提议区块(例如他们离线了),则有可能出现空时隙,但一般来说,大多数时隙都会被填充。被选中去提议区块是相对罕见的情况。区块提议者的工作包括四个方面。首先,要回顾上一个时隙,找到拥有最多认证的上一个区块,即“最重的(Heaviest)”区块。其次,要构建一个新的包含背景信息的信标区块——如验证者的进入和退出、对行为不端验证者的惩罚等——将以太坊转换到新的信标状态。第三,在执行客户端中,提议者从内存池中收集交易,在 EVM 中执行这些交易,并以执行区块的形式生成执行有效载荷,从而转换世界状态。第四,签署执行区块,然后提交给验证者进行认证。不过,他们不会将其提交给整个验证者集。
我们有一个区块提议者,但其他验证者在这个时隙中做什么?大多数时候,验证者都在参与认证。在质押背景中,认证(Attestations)与投票类似并根据验证者的余额进行加权(稍后详述)。第一个认证是对链头的最新提议区块进行 LMD GHOST 投票。该投票与作为委员会成员(也用 RANDAO 选择)的验证者被分配到的特定时隙有关。委员会(Committees)是由进行认证的验证者组成的小组,负责验证某个时隙中所提议的区块。委员会由在存款合约中质押的一组验证者组成。在一个时段中,验证者被随机分配到 32 个时隙之一的委员会中。例如,在我写这篇文章的时候,大约有 703000 名活跃验证者。这些验证者被分配到时段 219146 中。这意味着每个时隙中大约有 22000 名委员会成员。如果我们看一下这个时段中的一个时隙:时隙 7012687,我们会发现其中有 21908 名验证者。该时隙委员会中的验证者们签署了区块提议者提出的区块。实际上,他们是在认证所提议的转换的有效性。下个时隙的区块提议者将以这个区块为基础,因为它拥有最多的认证。
如果该时隙是空的,可能是因为分配的区块提议者离线了,那么委员会将投票支持上一个区块是最新的区块。还有同步委员会(Sync Committee),它们是一组被选出来为轻客户端服务的验证者。参与同步委员会的情况相当罕见(见图 3.3)。
时段和 Casper-FFG
验证者进行的第二项认证,即 Casper-FFG 投票,更为普遍,且实际上是两项投票。通过 Casper-FFG,验证者对两个检查点进行验证。检查点(Checkpoints)是一个时段开始时最先被填充的时隙。如果这个时隙没有区块,那么它之前的区块就会成为检查点。第一个检查点是目标(Target),指的是当前时段开始时的检查点。第二个检查点是来源(Source),指的是在上一个时段中的检查点。如果对目标检查点的投票达到 2/3 的绝对多数,那么目标检查点就是合理的。如果来源,即上一时段中的合理检查点获得 2/3 的绝对多数票,它就会被最终确定。一旦区块被最终确定,它们就被视为以太坊区块链的永久组成部分,不能被回滚。我将在“恶意分叉和攻击”一节中详述 2/3 绝对多数的重要性,但当下让我们继续讨论大多数验证者都是诚实的情况(见图 3.4)。
聚合
为了提高认证的效率,验证者们使用 Boneh-Lynn-Shacham(BLS)数字签名方案,与我们在外部账户(EOA)中使用的 ECDSA 签名方案类似。不过,BLS 签名有一个有趣的特性,那就是它们可以被聚合验证,几乎像验证单个签名一样快。为了真正加快速度,委员会本身被细分为 64 个子网。在每个子网中,选择一个验证者作为聚合者。聚合者收集所有与区块、目标和来源一致的已签名的证明,并将其作为单一的聚合签名提交给区块提议者。区块提议者将把来自子网的汇总签名纳入信标区块。
奖惩
验证者参与质押会得到什么?质押是一项激励协议。我们希望尽可能多的人参与这一过程,以确保广泛的去中心化。但我们也希望有一些机制来惩罚不良行为。这可以通过奖惩制度来实现。
· 区块提议:提出一个新区块。包括优先费用和
MEV。
· 认证:对区块和检查点进行认证。
· 同步委员会:参与同步委员会的工作。
· 对罚没的奖励:举报恶意行为。
区块提议可能很有价值,因为它包括任意的优先费用和最大可提取价值(MEV)(这是稍后的主题),但这不常见。
不过,所有验证者都会在每个时段进行认证,并因此获得较少的认证奖励。对于表现稳定的验证者,奖励会有小幅提升。参与服务轻节点的同步委员会或罚没奖励的情况相对较少。
现在让我们来看看惩罚系统。以下惩罚通常是验证者离线的后果。如果偶尔发生,惩罚也相对较小。
· 错过提议:无处罚。
· 错过认证:未认证。
· 错过委员会:未能参与同步委员会。
除上述情况外,验证者还可能因恶意行为而受到惩罚。这种惩罚更为严重,被称为罚没。罚没(Slashing)是对验证者模棱两可(Equivocation)行为的惩罚,即以相互矛盾的方式进行提议或认证。在 LMD GHOST 中,区块提议者如果提议两个及以上区块,就会被罚没。验证者如果将两个区块认证为链头,也会被罚没。在 Casper-FFG 中,验证者如果认证了不止一个目标检查点,就会被罚没。如果出现模棱两可的行为,验证者将立即被扣除它们的以太币数量的 1/32 (最大惩罚为 1 个以太币),然后进入 36 天的退出期。退出过程过半时,即第 18 天,会根据网络中被罚没的以太币数量进行相关性惩罚。如果被罚没的验证者很少,相关性惩罚就会很小,但如果被罚没的验证者很多,相关性惩罚就会很高,甚至可能是验证者的全部质押。
信标区块
你不需要知道区块中真正包含了什么也能活着,但我知道你们中有些人对此有着强烈的好奇心,渴望遭受这一“惩罚”。以太坊的“主要”区块是信标区块。它包含与共识机制相关的所有信息,如当前时隙、区块提议者是谁、上一个区块是哪个、谁被罚没、存款合约中的任何新验证者以及签名等等。它还包括验证者委员会在该时隙中收集的所有认证。这些认证认可该区块具有正当性,下一个区块的提议者将把这个区块视为最重的(Heaviest)区块,也就是说,它拥有最多的认证,然后在此基础上扩展自己的新区块。我之所以说信标区块是“主要区块”,是因为它将执行有效负载作为执行区块而嵌套在自己的内部。当区块提议者提议一个区块时,他们会向执行客户端发送交易,以生成执行有效负载,并将其格式化为执行区块 [2] 。然后,执行区块被传输到共识客户端,并纳入信标区块(图 3.5)。
你还会注意到,图中区块的某些字段是根(Roots)。这些是加密哈希值。它们是通过哈希函数(Hash Functions)产生的,哈希函数接受任意大小数据的输入,并产生固定长度的输出。使用哈希函数,我们可以为数据(即使是大量数据)提供彻底唯一的标识符。以太坊将这些哈希值称为根,并使用它们来高效、安全地验证大量数据。这些根由根所总结的状态或列表中包含的子项的哈希值构建而成。例如,执行区块中的状态根(State Root)就是世界状态中每个子项的摘要:外部账户、合约账户和合约账户存储。它们都被赋予哈希身份,然后存储在所谓的默克尔帕特里夏字典树(Merkle Patricia Tree)中。摘要根位于树的顶端,然后所有子项从中分支。我们可以看到,信标区块的交易(Transactions)、收据(Receipts)和提款(Withdrawal)也被归纳为哈希根。这是有道理的,因为它们都是我们可能需要去进行安全和有效的验证的大量数据。
哈希根为什么有用?当区块提议者提出一个新区块时,我们可以看到他们引用了上一个区块的父母根(Parent Root),也就是它的哈希摘要。在认证区块时,验证者希望看到与他们自己的区块链副本相同的父母根。如果出现了不同的父母根,我们就立即知道,区块中的某些内容发生了变化。世界状态的状态根也是如此。状态根捕捉了状态转换函数期间世界状态发生的所有变化。当区块提议者在其执行客户端创建状态根时,他们会将其报告给验证者。验证者重新执行交易,以查看它们是否到达相同的状态根。换句话说,“根”是一种高效、安全的技术,可以确定我们使用的是同一个区块/区块链,并识别任何形式的暗中更改。一般来说,区块中的所有信息都是如此。你不需要掌握区块中具体包括哪些内容的所有细节,而只需要获得一个核心观点,即区块捕获了使执行层和共识层能够转换状态的所有相关信息。随着水平的提高,你可以回过头来研究区块结构,或许可以在区块浏览器(如 Etherscan)上检视真实的区块(图 3.6)。
进阶的质押话题
质押池
质押池(Staking Pools)将较小数量的以太币组合起来,创建共享验证者。池不是以太坊协议的原生协议,而是作为一种服务出现的,以满足较小的以太币持有者参与质押的愿望。质押池主要有两种类型。中心化质押池由中心化交易所运营。在交易所存入以太币的用户可以将其质押,然后交易所会将以太币汇集起来创建验证者,将奖励分配给用户。去中心化池是智能合约协议。用户存入以太币,并收到流动性质押衍生品(Liquid Staking Derivative,LSD)代币,从而与质押池的智能合约互动。LSD 代币代表他们的质押和累积的奖励。用户可以用 LSD 代币换回原来的以太币存款和累积的质押奖励,从而取消质押。质押池是一个有用的工具,使得没有 32 个以太币的能够参与质押,但也存在一个相关问题。大多数质押池用户倾向于使用少数中心化(如 Binance)和去中心化(Lido、Rocket Pool)的质押池,这使得这些质押池在整个质押分布中占很大比例。换句话说,质押池会导致质押共识机制的中心化。
最大可提取价值(Maximum Extractable Value,MEV)
最大可提取价值(MEV)是指通过操纵区块内的交易排序来提取价值。之所以能做到这一点,是因为交易在纳入链上之前就存在于内存池中。内存池不是一个单独的地方。相反,当新的交易被发送时,它们会在全节点的网络中传播,并被全节点添加到各自本地的内存池中。每个人都能大致了解潜在被纳入的交易。这就为按特定顺序排列交易或甚至排除交易提供了机会(尽管别人最终会把你包括在内)。在这一组合中,出现了一个由 MEV 专业人员组成的复杂生态系统:搜索者、区块构建者和中继者。这些实体并非以太坊协议的一部分,而是围绕以太坊协议建立起来的。搜索者(Searchers)是观察内存池的用户,他们通常使用自动机器人来识别交易,以便将其转化为 MEV 机会。例如,常见的 MEV 策略是抢跑(Frontrunning)。抢跑是指搜索者从其他用户那里发现有利可图的交易,然后取代它。这可以通过复制交易,然后换入搜索者自己的详细信息来实现,但需要支付更高的燃料费。
围绕着 MEV,出现了一个围绕中间件技术 MEV-Boost 组成的生态系统。虽然区块提议者可以提议区块并构建自己的负载,但在实践中,这通常会外包给称为区块构建者(Block Builders)的实体。从技术上讲,以太坊协议一直打算将区块提议与区块构建分离开来,但事实证明,在合并(The Merge)时实现这一点太过复杂。最终,提案者与构建者分离(Proposer-Builder Separation, PBS)将被写入协议,但在当下这只是一种半正式的区分。区块构建者使用内存池构建执行有效负载,但它们也包括了来自搜索者的优化过的 MEV 交易。构建的区块将包括对区块提议者的付款。另一方(称为中继或中继者)将区块建构者生成的区块传递给提议者,提议者为其选择最有利可图的区块。
现在,要了解在 MEV 和 OFAC 合规时代如何构建区块,有一个非常重要的新近故事。2022 年,美国财政部外国资产控制办公室(OFAC)制裁了龙卷风现金(Tornado Cash)混合协议以及与之相关的一组地址。龙卷风现金是一种隐私工具,允许用户匿名化他们的以太币,但已与洗钱联系在一起。由于以太坊是一个去中心化的协议,因此没有中央机构可以强制执行 OFAC 要求。因此,网络中的参与者可以选择是否遵守。特别是,这一决定会影响中继者,因为通常是中继者将区块传递给提议者。有些中继者选择审查龙卷风现金,有些则不。这意味着交易将通过,但可能会有延迟,这取决于涉及到哪个中继者。
区块链分叉
根据具体情况,分叉有好有坏。从正面看,分叉是区块链协议引入新升级的方式。反之,如果区块链无意中出现分叉,那就有问题了。让我们来看看分叉的主要类型:
· 临时分叉(Temporary Chain Split):两个或多个区块被暂时视为区块链头。这种情况通常很快就会得到解决,因为节点会聚集在一个版本的链上,而不是另一个。在以太坊中,如果网络看到两个或两个以上的区块,那么 LMD GHOST 分叉选择规则将选择拥有最多认证的区块。
· 软分叉(Soft Fork):引入新的协议变更,但向后兼容。全节点可以选择运行旧的软件客户端,而不需要新的更改。在以太坊中,这种方法并不常见,但在比特币中,这是标准的方式。
· 硬分叉(Hard Fork):对协议进行新的修改,但不向后兼容。这些变化足够显著,足以改变协议的运行方式。这意味着旧的全节点客户端软件将无法处理或接受新区块,而无法参与网络。以太坊是一个定期引入重大变更的协议,因此需要硬分叉。你可能会听到比特币玩家将这看作一个问题,但在以太坊文化中,大家通常并不这样看。
· 有争议的硬分叉(Contentious Hard Fork):用户也有可能拒绝硬分叉,而继续跟随非分叉版本的区块链。在这种情况下,跟随硬分叉的用户和不跟随硬分叉的用户这两类用户自此分道扬镳。以太坊在 2016 年就遇到过这种情况,当时一个名为 The DAO 的重要项目遭遇了漏洞。该问题通过硬分叉得到了解决。大多数人继续遵循硬分叉链,也就是我们今天的以太坊,少数人继续遵循旧的非硬分叉链,并更名为以太坊经典(Ethereum Classic)。相反,有争议的硬分叉也可以在另一个方向发生。社区可能会因为协议的未来而分裂。为了解决争端,一方可以通过硬分叉创建一个版本的协议,并向自己的方向实现有效分支。2017 年,比特币内部的一种少数亚文化创建了一个名为比特币现金(
Bitcoin Cash)的硬分叉,改变了原始比特币的协议规则。然而,主流的比特币文化仍然保存在非硬分叉版本中,也就是今天的比特币。
· 恶意的硬分叉(Malicious Hard Fork):恶意的硬分叉是指单个实体或串通一气的同伙获得了共识机制的多数控制权。在这些情况下,攻击者将需要相当大比例的质押以太币。在“重组(Reorg)”攻击中,恶意行为者可以替换已被认证为区块链头的区块。实现这一攻击的方式是,故意在一个时隙中不进行认证,然后在下一个时隙中进行两次认证,使他们想要的区块成为拥有最多认证的区块,也就是最重的区块。这需要控制 34% 的 ETH。在最终确定性延迟攻击(Finality Delay Attack)中,拥有 34% 已质押的 ETH 的恶意攻击者是一个时段中第一个时隙的区块提议者。攻击者会稍有延迟。对于其他验证者来说,这个时隙似乎是空的,他们会把前一个区块当作认证的目标。这样,我们就会有两个相互冲突的目标,从而导致无法最终确定。不过,这种攻击最终会招致怠惰惩罚(Inactivity Leak),随着时间的推移重新确立诚实的绝对多数。这种惩罚会在没有最终确定的情况下持续四个时段后生效。如果验证者持有的 1/3 已抵押 ETH 处于不活动状态(例如离线)或恶意状态,就会被罚没,直到诚实的验证者恢复到 2/3 的绝对多数,从而实现最终确定。拥有 66% ETH 的攻击者将有效控制共识机制,因为他们形成了 2/3 的绝对多数。在这种情况下,协议是无能为力的,需要以太坊的社会层(Social Iayer)做出反应,最有可能的方式是硬分叉。总的来说,这些攻击因其所需的 ETH 质押数而得到缓解。在撰写本文时,23487763 个 ETH 被质押在存款合约中,而当你读到这篇文章时,几乎可以肯定的是存款会变得更多。
以太坊到底是什么?
这是最困难的一章。从这里开始,一切都会变得相对容易。不过,让我们总结一下目前所得。以太坊是一台世界计算机。这台计算机有一个中央处理器(CPU),称为以太坊虚拟机(EVM)。EVM 每 12 秒从一个世界状态转换到另一个世界状态。外部账户(EOA)可以相互发送交易、创建新的合约账户或调用合约账户中的功能,从而启动状态转换。在一个时隙内,会选出一个区块提议者来提议一个新的区块。提议者构建的信标区块会回顾上一个区块,并选择拥有最多认证的区块作为其父母区块。它将填入有关存款、罚没、提款等重要的新信息。提议者还需要转换世界状态。世界状态就像电脑上的随机存取存储器(Random Access Memory, RAM)。它是反映用户活动的所有“实时(Live)”内容。提议者在其执行客户端的 EVM 中处理交易,并输出带有新的世界状态的执行有效负载。我们将其捆绑到一个执行区块中,并将其嵌套到信标块中。然后,我们会在一个时段内将其发送给分配给我们所在时隙的委员会的验证者们。验证者会检查信标区块的信息是否正当,然后重新执行负载,得出世界状态。如果一切检查无误,他们就会对区块进行认证。这些认证将被汇总为单个签名。12 秒后,区块完成时隙,等待下一个区块提议者来选择它为最重的区块,即区块链头。验证者还对目标和来源检查点进行验证,并最终确定一个过去的区块是区块链永久历史的一部分。我们现在可以看到,区块链就像我们电脑的硬盘,是深层存储。因此,以太坊世界计算机是 CPU(EVM)加 RAM(世界状态)加硬盘驱动(区块链)。
3 注释
[1] 以太坊版本被称为 Ethash。它最显著的特点可能是其抗 ASIC 设计,这意味着普通用户更容易在家中使用图形处理器(GPU)挖矿。ASIC 是一种定制矿机,价格可能相当昂贵。
[2] 我想在这里强调一下执行区块中的燃料限制(Gas Limit)。以太坊区块以其燃料限制(令人困惑的是,与用户为交易而设置的燃料限制截然不同)来衡量。以太坊是图灵完备计算机,这意味着开发者可以创建循环和条件。这使得开发者在创建智能合约时有丰富的可能性,但其中也隐藏着一个问题,即停机问题(Halting Problem)。机问题指的是恶意开发者可以创建一个永久循环的智能合约。为了解决这个问题,区块有“燃料限制(Gas Limit)”,用于限制区块内的计算量。燃料限制是动态的,但目标大小为 1500 万燃料。如果有需求,上限可增加到 3000 万,但当出现这种情况时,燃料基础费用也会增加。增加基础费用的目的是将燃料限制恢复到 1500 万燃料的目标规模。
阅读原文