主页 > imtoken1.0钱包下载 > 今日推荐 | 以太坊五周年:涅槃觉醒

今日推荐 | 以太坊五周年:涅槃觉醒

imtoken1.0钱包下载 2023-04-18 05:13:59

原标题:以太坊五年:涅槃觉醒

编者按:本文来自Unitimes(ID:Uni-times),星球日报授权发布。

《以太坊协议的史前史》,Vitalik Buterin,译者:Nabaier

《以太坊 5 岁了!》作者:以太坊基金会,翻译:Johnny

生日

当区块链再次走入普罗大众的视野,受到科技巨头前所未有的关注时,以太坊成为了区块链领域不可忽视的巨轮。 在资本肆无忌惮、野蛮生长的混乱时代,以太坊的开发者和社区一直用心呵护着这艘小船,坚定不移的航向,一路升级为一代巨轮。

2020 年 7 月 30 日,既是以太坊五周年,也是万众期待的一天:再过几天,以太坊 2.0 的测试网将正式上线,标志着以太坊离世界计算机又近了一步。 步幅。 截至目前,以太坊2.0测试网上线进度已完成92%以上。

灾难

自诞生以来,以太坊就从未远离过质疑和嘲笑。 作为逻辑极其复杂的世界信任机器,以太坊遭遇了大量的攻击和运营挑战。 最著名的是发生在 2016 年的 The DAO 事件。

2016年6月17日,以太坊创始人Vitalik在Reddit上发布紧急警告,通报“DAO遭到黑客攻击,要求所有交易平台立即暂停ETH/DAO交易和充提”。 这场为期一个月的攻守战,以以太坊区块链分裂为ETH(延续名称“以太坊”)和ETC(以太坊经典)而告终。 在经历了 The DAO 事件后,以太坊长期无法摆脱“中心化”的问题,被其他外部社区围攻。

人们今天的庆祝似乎忘记了昨天的教训。 未来,以太坊最大的敌人不是来自外部,而是来自内部本身。 确保航母的每一个细节模块正常运转,远比抵御外敌困难得多。

分别

以太坊诞生后,创始团队成员逐渐将重心转移到更广阔的领域,或致力于拓展以太坊生态,或致力于探索新技术,成为以太坊的竞争对手。 如今,除了Vitalik仍然专注于以太坊的发展,其他创始人都在致力于以太坊社交框架Akasha(Mihai Alisie)、Jaxx Wallet(离职,Anthony Dilorio)、公链Cardano(Charles Hoskinson)、Polkadot和Web3 基金会 Will (Gavin Wood)。

未完待续

2017年,Vitalik在个人网站上写了一篇回顾《以太坊是如何诞生的》的文章。 值此以太坊五岁生日之际,我们不妨回顾一下这本《以太坊协议史前史》。

本文节选自Vitalik Buterin撰写,灵台科技、独角兽时代翻译出版的《理想:以太坊区块链的起源》。 同时衷心感谢以太坊社区的每一位开发者、翻译者和布道者。 因为有你,区块链的世界不再单调。

以太坊协议的史前史

(2017 年 9 月 14 日)

编者按:本文是Vitalik对以太坊协议发展历程的回忆,讲述了以太坊协议从构思到初始发布和迭代的故事。

尽管当前以太坊协议背后的理念在过去两年中基本稳定下来,但以太坊当前的理念和完整的形态并不是一蹴而就的。 以太坊区块链推出后,其协议经历了一系列重大演变和决策。 本文旨在回顾以太坊协议从诞生到发布的演变过程。 至于Geth、cppethereum、pyethereum和EthereumJ在实现协议的过程中所做的大量工作,以及以太坊生态系统的应用和商业历史,将不在本文讨论范围之内。

同样超出范围的是 Casper 和分片研究的历史。 毫无疑问,我们可以写更多的文章来讨论 Vlad、Gavin、我自己和其他人提出和放弃的各种观点,包括工作量证明、轮询辅助多链、超立方体、影子链(可以说是是 Plamsa 的前身)、链式光纤和 Casper 的各种迭代版本,以及 Vlad 提出的共识协议参与者的激励机制及其性质。 推理思想的快速演变。 这些观点背后的故事本身就很复杂,值得再写一篇文章。 因此,我们暂时不讨论它们。

让我们从最早的版本开始。 这个版本最终变成了以太坊,但当时它甚至不叫以太坊。 当我在 2013 年 10 月访问以色列时,我花了很多时间与 Mastercoin 团队在一起,甚至建议他们添加某些功能。 在仔细考虑他们所做的事情之后,我向团队发送了一份提案,让他们的协议更加通用,能够支持更多类型的合约,而无需添加庞大而复杂的功能集:

需要注意的是以太坊今日,这个版本与后期更广泛的以太坊愿景有很大不同:它纯粹专注于Mastercoin当时试图突破的技术,即两方合约。 在这个合约中,甲乙双方共同投入资金,然后双方可以根据合约规定的某种公式提取资金(例如,赌注的内容是“如果X发生,把所有资金给A;否则, 将所有资金交给 B")。 实现这个合约的脚本语言不是图灵完备的。

Mastercoin 团队对此印象深刻,但他们并没有兴趣放弃他们为朝这个方向前进所做的一切,我越来越相信这是正确的选择。 因此,大约在 12 月,第二个版本问世:

在此版本中,您可以看到大量重构的结果。 11 月在旧金山的一次长途步行中,我想到了其中的大部分结果。 那时,我意识到智能合约具有完全通用的潜力。 与只能简单描述双方关系的脚本语言相比,合约本身就是一个成熟的账户,具有持有、发送和接收资产的能力,甚至可以保持永久存储(当时的永久存储被称为“内存”,唯一的临时“内存”是256个寄存器)。 只是语言从基于栈的虚拟机变成了基于寄存器的虚拟机更符合我的意愿。 我对此没有什么问题,只是它看起来更复杂。

“以太”字面意思是以太(即燃料,相当于气体)。 每个计算步骤完成后,一笔交易调用的合约余额会减少一些。 如果合约资金耗尽,则执行过程将停止。 请注意,此接收方支付机制意味着合约本身必须要求发送方向合约支付费用。 如果未收到费用,将立即撤回执行。 该版本的协议分配了 16 个免费执行步骤的限制,允许合约拒绝不支付费用的交易。

至此,以太坊协议完全是我一个人搭建的。 然而,从这时开始,新的玩家开始加入以太坊阵营。 迄今为止,在达成协议方面最突出的参与者是 Gavin,他于 2013 年 12 月开始通过 about.me 上的私人消息与我联系。

Go 客户端(当时称为“ethereal”)的首席开发人员 Jeffrey Wilcke 也大约在同一时间联系了我并开始编程。 尽管他在客户端开发方面的贡献比协议研究更多。

加文早期的贡献是双重的。 首先,你可能已经注意到,最初设计中的合约调用模型是异步的:虽然合约 A 可以创建一个内部交易给合约 B(“内部交易”是以太坊的行话:最初它们只是被称为“交易”),后来提到作为“消息呼叫”或“呼叫”)。 直到第一个事务的执行完全完成后,内部事务的执行才会开始。 这意味着交易不能使用内部交易作为从其他合约获取信息的方式; 要从其他合约获取信息,您只能使用 EXTRO 操作码(有点像您用来读取其他合约存储的 SLOAD),但在 Gavin 和其他人的支持下,此操作码随后被删除。

在实现我原来的规范时,Gavin 自然而然地同步实现了内部交易功能。 ,内部交易立即执行。 一旦执行完成,虚拟机返回创建内部交易的合约,并继续执行下一个操作码。 对于我们双方来说,这种方法似乎更有效,因为我们决定将其纳入规范。

其次,是我和他之间的一次讨论(发生在旧金山的一次散步中,所以确切的细节将永远消失在历史中,但在美国国家安全局的深层档案中可能有一两份副本)触发了重构交易费用模型,从合同支付方式到发送方支付方式,以及向燃料架构的转变。 在这个版本中,交易发送方支付费用并分配一定数量的气体(大致是计算步骤的计数器),而不是在执行每个单独的交易步骤后立即消耗一些以太币。 同时,计算步骤取决于燃料余量。 如果一笔交易耗尽了所有的gas,那么gas就被耗尽了,但是整个执行过程被恢复了。 这似乎是最安全的方法,因为它消除了合约之前不得不担心的所有类型的部分执行攻击。 执行交易时,将退还任何未使用的气体所收取的费用。

Gavin 以一种非常微妙的方式对以太坊的愿景进行了非常微妙的转变:从一个用于构建可编程货币的平台——使用基于区块链的合约持有数字资产并根据规则进行转移——到一个通用的计算平台。 这种变化始于以太坊的焦点和术语的轻微变化,后来随着我们接受 Web 3 集成(它将以太坊视为去中心化技术套件的一部分,另外两个是 Whisper 和 Swarm,图 1)越来越被强调,并且这种作用也在不断加强。

今日以太坊暴跌最新消息_以太坊今日_以太坊今日下跌严重

图1

2014年初左右,我们也根据别人的建议做了一些改动。 在 Andrew Miller 等人提出要回到基于堆栈的架构的想法之后,我们最终还是回去了(图 2)。

以太坊今日_以太坊今日下跌严重_今日以太坊暴跌最新消息

图 2

Charles Hoskinson 建议我们从比特币的 SHA256 切换到更新的 SHA3(或者更准确地说,keccak256)。 尽管争论了一段时间,但与 Gavin、Andrew 和其他人的讨论确定堆栈上值的大小应限制为 32 字节。 另一种选择——无限整数——仍在考虑中,因为它的问题是很难计算出执行加法、乘法和其他操作需要多少 gas。

早在 2014 年 1 月,我们首先想到的挖掘算法是一种叫做 Dagger 的东西:

Dagger 以有向无环图 (DAG) 命名。 DAG是算法中使用的数学结构。 这个想法是每 N 个块,就会有一个由种子伪随机生成的新 DAG。 而且,DAG 的底层会是一个节点的集合,需要以十亿字节来存储。 然而,在 DAG 中,生成任何单个值只需要计算几千个条目。 匕首计算包括在此基础数据集中的任何位置获取一定数量的值,然后将这些值散列在一起。 这意味着有一种快速的方法可以进行匕首计算——已经将数据存储在内存中,然后以一种缓慢但不占用内存的方式——从 DAG 重新生成你需要从头开始获取值的每一位。

该算法的目的是与当时流行的算法(如 Scrypt 算法)具有相同的内存受限属性,但仍然对轻客户端友好。 矿工将使用快速的方法,因此他们的挖矿将受到内存带宽的限制(理论上,消费级内存已经足够优化,很难用 ASIC 进一步优化),但轻客户端验证可以以内存宽容和缓慢的方式完成. 快速的方法可能需要微秒,而慢速和内存友好的方法可能需要毫秒,所以这对于轻客户端来说仍然是可行的。

从这里开始,该算法在以太坊的发展过程中经历了几次变化。 下一个想法是自适应工作量证明。 在这个方案中,工作量证明将涉及执行随机选择的以太坊合约,并且有一个聪明的方法来抵制 ASIC:如果 ASIC 被开发,那么竞争矿工将有动力创建和发布 ASIC 没有的合约善于执行。 没有 ASIC 可以用于通用计算,因为它只是一个 CPU。 因此,我们可以利用这些类型的对抗性激励来实施本质上执行通用计算的工作量证明。

这个想法后来因为一个简单的原因而失败了。 这个理由是远程攻击。 攻击者可以从区块 1 开始构建一条链,并只用简单的合约填充该链。 需要注意的是,攻击者可以为这个简单的合约设计特殊的硬件,让攻击链可以快速赶上主链。 所以……回到正题。

下一个算法称为“随机电路”,其描述可在其 Google 文档中找到。 该算法由我和 Vlad Zamfir 提出,并由 Matthew Wampler-Doty 等人分析。 该算法的思想是通过实现一个伪随机生成电路来模拟挖矿算法中的一般计算。 这一次,没有任何确凿的证据表明基于这些原则的东西是行不通的。 但我们在 2014 年采访的计算机硬件专家非常悲观。 Matthew Wampler-Doty 提出了一种基于工作量证明的 SAT 解决方案,但也被拒绝了。

最后,经过一番考虑,我们想出了 Dagger Hashimoto 算法,有时简称为 Dashimoto。 这个算法借鉴了桥本的很多思想。 Hashimoto 是 Thaddeus Dryja 提出的一种工作量证明机制,它开创了“I/O 约束工作量证明”的概念。 在这种机制下,挖矿速度的主要限制因素不是每秒哈希运算的速度,而是每秒可访问的 RAM 兆字节数。 然而,Dagger Hashimoto 将这种工作量证明机制与 Dagger 算法中轻客户端友好型 DAG 生成的数据集相结合。 经过我、Matthew、Tim 和其他人的多次调整,这些想法最终被纳入我们现在称为“Ethash”的算法中。

到2014年夏天,除了工作量证明要到2015年初才能达到Ethash阶段外,该协议已经相当稳定,半正式的规范已经以Gavin黄皮书的形式发表。

2014年8月,我开发并引入了叔块机制。 这种机制可以使以太坊的区块链具有更短的出块时间和更高的处理能力,同时降低中心化的风险。 关于叔块机制的介绍,请参考PoC6。

在与BitShares团队讨论后,我们考虑使用堆作为一流的数据结构——虽然最终由于时间不够我们没有这样做,后来的安全审计和DoS攻击让我们明确了实施这个安全功能在当时的难度远比我们想象的要难。

9 月,Gavin 和我计划对协议设计进行两项重大更改。 首先,每个区块除了状态树和交易树之外,还会包含一个收据树。 收据树将包含每个交易创建的日志的散列和中间状态根。 日志将允许交易创建可以存储在区块链中并由轻客户端访问的输出。 但是,未来状态计算无法访问这些日志。 这种方法使去中心化应用程序能够轻松查询事件,例如令牌传输、购买、正在创建和匹配的交换订单、正在进行的拍卖等。

我们还考虑了其​​他想法,例如从交易的完整执行轨迹中提取 Merkle 树,以允许证明任意内容。 在简单性和完整性之间折衷之后,我们选择使用日志。

二是预编译的思想。 预编译解决了允许复杂的密码计算在 EVM 中可用而无需处理 EVM 开销的问题。 我们还为原生合约提出了许多雄心勃勃的想法。 在这些想法中,如果矿工对某些合约有更好的执行方法,那么他们将投票降低这些合约的 gas 价格。 这样,那些能被大多数矿工快速执行的合约自然会有更低的 gas 价格。 然而,所有这些想法都被否决了,因为我们无法想出一种加密经济安全的方式来实现它。 攻击者总是可以创建一些合约来执行带有陷门的密码操作,然后将陷门分发给自己和他们的朋友,以便能够更快地执行该合约。 然后,攻击者投票决定降低 gas 价格,并以此来对网络进行 DoS 攻击。 相反,我们选择了一种不那么雄心勃勃的方法,即在协议中简单地为散列和签名方案等常见操作指定小的预编译量。

Gavin 也是最初支持开发协议抽象概念的关键人物。 所谓协议抽象,就是将协议的很多部分,比如以太坊的余额、交易签名算法、随机数等,作为合约迁移到协议本身。 其理论上的最终目标是实现这样一个目标,即整个以太坊协议可以描述为向具有特定预初始化状态的虚拟机添加函数调用。 我们没有足够的时间将所有这些想法整合到最初的前沿版本中,但希望通过对“君士坦丁堡”、Casper 合约和分片规范的一些更改,这些原则会慢慢开始整合。

这些都是在 PoC 7 中实现的。协议在 PoC 7 之后并没有真正改变太多,除了一些小的但在某些情况下是重大的变化。 这些细节将在通过安全审核后公布。

到 2015 年初,Jutta Steiner 等人组织了发布前的安全审计,包括软件代码审计和学术审计。 软件代码审计主要以C++和Go语言实现,分别由Gavin和Jeffrey主导。 尽管我的 Pyethereum 实现也做了简单的审计。 在两次学术审计中,一次由 Ittay Eyal(以提出“自私挖矿”而闻名)进行,另一次由 Andrew Miller 和 Least Authority 的其他成员进行。 Eyal 的审计导致了一个轻微的协议变更,即叔块不会被包含在链的总难度值中。 Least Authority 的审计更侧重于智能合约、燃油经济性和帕特里夏树。 审计还导致了一些协议变更。 其中,一个比较小的变化是使用sha3(addr)和sha3(key)作为树的键值,而不是直接使用地址和键值。 这将使攻击者更难对树进行最坏情况下的攻击。

我们讨论的另一个重要问题是 gas limit 投票机制。 那时,我们已经担心比特币区块大小的争论缺乏进展,并希望在以太坊中有一个灵活的设计:一个可以根据需要随着时间的推移进行调整的设计。 但挑战在于,最佳约束条件是什么? 我最初的想法是动态限制为实际燃料使用的长期指数移动平均值的 1.5 倍。 因此,从长远来看,平均每个区块将占用 2/3 的容量。 然而,Andrew 证明了可以通过某些方式利用这个限制——具体来说,想要提高限制的矿工只需要包括消耗大量气体但在他们自己的区块中花费很少处理时间的交易,从而创建满载的区块而不会损失成本。 因此,至少在最终结果上,这种机制的安全模型相当于只是让矿工对gas limit进行投票。

我们未能提出更好的 gas limit 策略。 Andrew推荐的解决方案是让矿工对gas limit进行显式投票,默认的投票策略是1.5倍EMA。 原因是我们还没有找到设置最大 gas 限制的正确方法,任何特定方法失败的风险似乎都比矿工滥用投票权的风险高得多。 因此,还不如干脆让矿工对gas limit进行投票,接受gas limit过高或过低的风险,换取灵活性和矿工联合起来快速调高或调低gas limit的好处如所须。

在与 Gavin 和 Jeff 进行了一场小型黑客马拉松之后以太坊今日,PoC 9 终于在 3 月问世了。 它旨在成为概念验证的最终版本。 我们运行了一个名为“Olympiad”的测试网 4 个月。 该测试网使用将在主网中使用的协议。 同时,我们也为以太坊制定了长期规划。 Vinay Gupta 写了一篇文章 - “The Ethereum Launch Process”。 本文描述了以太坊主网发展的4个阶段,并给出了现在大家耳熟能详的相应名称:“Frontier”、“Homeland”、“Metropolis”和“Serenity”。

“Olympic”测试网已经运行了 4 个月。 在前两个月,我们发现了很多实现版本的bug,也出现了共识失败等问题。 但6月前后,网络明显趋稳。 7 月,我们决定冻结代码; 7月30日,以太坊主网正式发布。

以太坊基金会的生日庆典

以太坊 5 岁了!