
Geth 源码系列:存储设计及实现
在区块链的世界中,状态存储是每一个节点的「记忆核心」 — — 它记录着亿万账户的余额、合约的代码、交易的痕迹,甚至决定着一笔交易能否被正确执行。作为以太坊生态的基石,Geth 客户端如何以精密的架构设计承载海量状态数据?其存储系统如何在性能、安全与可扩展性之间找到平衡? 这篇文章是 Geth 源码系列的第二篇,通过这个系列,我们将搭建一个研究 Geth 实现的框架,开发者可以根据这个框架深入自己感兴趣的部分研究。这个系列共有六篇文章,在这第二篇文章中,将系统讲解 Geth 的存储结构设计与相关源码,介绍其数据库层次划分并详细分析各个层次中相应模块的核心功能。 以太坊作为全球最大的区块链平台,其主流客户端 Geth(Go-Ethereum)承担了绝大部分节点运行与状态管理的职责。Geth 的状态存储系统,是理解以太坊运行机制、优化节点性能、以及推动未来客户端创新的基础。 本文作者: po Web3buidler.tech Core Contributor, EthStorage Engineer Geth 底层数据库总览 自 Geth v1.9.0 版本起,Geth 将其数据库分为...

以太坊单独质押实战教程:手把手教你完成部署
内容丨Ray 编辑 & 排版丨Yewlne、环环 以太坊的单独质押(Solo Staking)是保护网络安全和去中心化的黄金标准。通过运行自己的验证者节点,您可以直接参与网络共识,获得完整的质押奖励,并保持对资金的完全控制。本教程将为您提供详细的指导,帮助您在家中部署以太坊单独质押节点,确保安全性和稳定性。前提概要首先,我们需要有这样的一个基本概念:要处理来自执行层的传入验证器存款,您需要运行执行客户端以及共识客户端。这意味着我们至少需要部署两个客户端程序(在本教程中,为三个,共识客户端按照功能进行了拆分)。如果想了解更多执行客户端和共识客户端的差异及功能职责,可以点击阅读: https://ethereum.org/zh/developers/docs/networking-layer/一、选择执行客户端以太坊生态的客户端种类非常丰富,执行客户端和共识客户端都有多种不同语言的实现,如使用 Go 语言实现的 Geth, 使用 Rust 语言实现的 Reth 等。你可以根据自己喜好,选择不同的客户端,整体流程是类似的,只是不同客户端实现涉及的命令不同。在这里,我们不能对所有的客户端...

残酷共学申请指南独家速递!
在知识爆炸的时代,面对海量且拥杂的学习资源、松散且淡薄的学习氛围,如何在工作之余合理安排以有效坚持学习,俨然已是一个艰巨的挑战。为此,LXDAO 特别发起了——残酷共学,旨在通过以自主、开源的学习方式,严格的残酷共学计划和互助的学习氛围,帮助每一位参与者有序可持续的学习,更进一步地实现自我提升。残酷共学是什么残酷共学是由 LXDAO 发起的围绕某个「共学主题」共学活动,具体如下:参与者必须每天围绕某个「共学主题」进行学习,每周只有两次请假机会,通常每天至少需要花费半个小时(最好一个小时)来学习。参与者必须提交你的学习证明(按照共学内容设计)到 GitHub 所对应的「仓库」来证明你今天学习了。如果参与者没有完成上面两点,将会立刻被踢掉并且标记为 ❌ 失败。每期残酷共学以 4 周为一个周期,第一周为共学启动报名和熟悉共学规则,第二周到第四周将正式启动共学,为期 21 天,中途不得加入。共学方向包括不限于:英语、以太坊、Web3 技术、DAO、加密思潮等,自由自主发起,内容包括不限于:视频、书籍、文章、实战。如何残酷共学基于 GitHub 的流程,残酷共学发起人在 Github上创建...
LXDAO 是一个专注研发的 DAO 组织,致力于构建支持有价值的公共物品和开源项目的无限循环。 LXDAO is an R&D-focused DAO dedicated to building an Infinite Cycle that supports valuable

Geth 源码系列:存储设计及实现
在区块链的世界中,状态存储是每一个节点的「记忆核心」 — — 它记录着亿万账户的余额、合约的代码、交易的痕迹,甚至决定着一笔交易能否被正确执行。作为以太坊生态的基石,Geth 客户端如何以精密的架构设计承载海量状态数据?其存储系统如何在性能、安全与可扩展性之间找到平衡? 这篇文章是 Geth 源码系列的第二篇,通过这个系列,我们将搭建一个研究 Geth 实现的框架,开发者可以根据这个框架深入自己感兴趣的部分研究。这个系列共有六篇文章,在这第二篇文章中,将系统讲解 Geth 的存储结构设计与相关源码,介绍其数据库层次划分并详细分析各个层次中相应模块的核心功能。 以太坊作为全球最大的区块链平台,其主流客户端 Geth(Go-Ethereum)承担了绝大部分节点运行与状态管理的职责。Geth 的状态存储系统,是理解以太坊运行机制、优化节点性能、以及推动未来客户端创新的基础。 本文作者: po Web3buidler.tech Core Contributor, EthStorage Engineer Geth 底层数据库总览 自 Geth v1.9.0 版本起,Geth 将其数据库分为...

以太坊单独质押实战教程:手把手教你完成部署
内容丨Ray 编辑 & 排版丨Yewlne、环环 以太坊的单独质押(Solo Staking)是保护网络安全和去中心化的黄金标准。通过运行自己的验证者节点,您可以直接参与网络共识,获得完整的质押奖励,并保持对资金的完全控制。本教程将为您提供详细的指导,帮助您在家中部署以太坊单独质押节点,确保安全性和稳定性。前提概要首先,我们需要有这样的一个基本概念:要处理来自执行层的传入验证器存款,您需要运行执行客户端以及共识客户端。这意味着我们至少需要部署两个客户端程序(在本教程中,为三个,共识客户端按照功能进行了拆分)。如果想了解更多执行客户端和共识客户端的差异及功能职责,可以点击阅读: https://ethereum.org/zh/developers/docs/networking-layer/一、选择执行客户端以太坊生态的客户端种类非常丰富,执行客户端和共识客户端都有多种不同语言的实现,如使用 Go 语言实现的 Geth, 使用 Rust 语言实现的 Reth 等。你可以根据自己喜好,选择不同的客户端,整体流程是类似的,只是不同客户端实现涉及的命令不同。在这里,我们不能对所有的客户端...

残酷共学申请指南独家速递!
在知识爆炸的时代,面对海量且拥杂的学习资源、松散且淡薄的学习氛围,如何在工作之余合理安排以有效坚持学习,俨然已是一个艰巨的挑战。为此,LXDAO 特别发起了——残酷共学,旨在通过以自主、开源的学习方式,严格的残酷共学计划和互助的学习氛围,帮助每一位参与者有序可持续的学习,更进一步地实现自我提升。残酷共学是什么残酷共学是由 LXDAO 发起的围绕某个「共学主题」共学活动,具体如下:参与者必须每天围绕某个「共学主题」进行学习,每周只有两次请假机会,通常每天至少需要花费半个小时(最好一个小时)来学习。参与者必须提交你的学习证明(按照共学内容设计)到 GitHub 所对应的「仓库」来证明你今天学习了。如果参与者没有完成上面两点,将会立刻被踢掉并且标记为 ❌ 失败。每期残酷共学以 4 周为一个周期,第一周为共学启动报名和熟悉共学规则,第二周到第四周将正式启动共学,为期 21 天,中途不得加入。共学方向包括不限于:英语、以太坊、Web3 技术、DAO、加密思潮等,自由自主发起,内容包括不限于:视频、书籍、文章、实战。如何残酷共学基于 GitHub 的流程,残酷共学发起人在 Github上创建...
LXDAO 是一个专注研发的 DAO 组织,致力于构建支持有价值的公共物品和开源项目的无限循环。 LXDAO is an R&D-focused DAO dedicated to building an Infinite Cycle that supports valuable
Share Dialog
Share Dialog

Subscribe to LXDAO

Subscribe to LXDAO


<100 subscribers
<100 subscribers

编译丨趁早、Emptyman 和跳
编辑 & 排版丨Soleil
本期文章由 LXDAO 翻译小组成员:趁早、Emptyman 和跳翻译,跳校对。本书是 Absolute Essentials of Ethereum,作者是 Paul Dylan-Ennis。我们鼓励您仅将本翻译内容用于学习交流,如有途径和资源,请支持原版书籍。
英语学习-翻译小组:由 Guider 精选优质 Web3 内容,通过翻译第一手原文资料快速了解 Web3 行业基础概念、第一原则与相关资讯,同时主动学习英语。欢迎加入我们一起同行与共建!
本书为 Absolute Essentials of Ethereum(以太坊指南),作者:Paul Dylan-Ennis,全书共分为八个
本书目录:
赠言
前言与致谢
第一章 介绍以太坊
第二章 以太坊 · 执行层
第三章 以太坊 · 共识层
第四章 以太坊治理和文化
第五章 去中心化自治组织(DAO)
第六章 DeFi 去中心金融
第七章 非同质化代币(NFTs)
第八章 以太坊二层网络和路线图
附录:比特币介绍
术语
本期内容是该书籍的第八章「 以太坊二层网络和路线图」以及附录与术语内容,总计约 13000 字,预计阅读时间需要 60 分钟。
前七章内容可见:
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(二)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(三)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(四)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(五)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(六)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(七)
在其发展历程中,以太坊的研究人员提出了不同的扩容解决方案(例如状态通道、Plasma 通道),但最终统一认可卷叠(Rollup)作为广泛适用的解决方案。卷叠主要有两种类型:乐观(Optimistic)和零知识(Zero-knowledge)。两者大体上都遵循将执行分离到第二层网络(Layer 2)的逻辑,然后将结果安置在以太坊第一层网络(Layer 1)。直到最近,卷叠才被视为未来的解决方案,但已经有一些项目启动,还有许多其他项目也即将启动。许多用户,包括我自己,在第二层而非第一层网络上花费了大部分时间,未来这可能会成为常态。除了以卷叠为中心的愿景外,我们还有以太坊路线图。路线图概述了以太坊开发人员和研究人员的长期计划。它不是静态的路线图,而更像是半正式的、开放的一系列目标,随着时间的推移可能会不断演变。然而,预期是在某个阶段,当主要目标完成时,以太坊将进入其“终局”,协议将固化,并被遮掩在众多创新的去中心化应用背后,作为它们的基础设施。在本章中,我假设读者对我们迄今所讨论的一切都非常熟悉,因为这些话题都非常高级,没有以太坊的基础知识就无法理解。
以太坊的创始人 Vitalik Buterin 引入了可扩展性三难题(Scalability Trilemma),以概括区块链在实现三个理想属性时所面临的挑战:可扩展性(Scalability)、去中心化(Decentralisation)、安全性(Security)。这个三难题涉及到如何将区块链的两个属性很好地结合起来,但通常以牺牲第三个属性为代价。
· 可扩展性:区块链每秒可以处理的交易数量(TPS)。
· 去中心化:以节点数量衡量的、区块链的去中心化程度。
· 安全性:区块链对攻击的抵抗程度。
比特币和以太坊是具有高度去中心化和强安全性的区块链示例,但可扩展性有限。这两个区块链都拥有成千上万的全节点和矿工/验证者,使它们去中心化,并且它们都拥有大量的计算能力(比特币)或质押的以太币来确保自身安全。然而,对于以太坊来说,节点的数量和抵押的以太币数量意味着我们只能将一定数量的交易实际上分配给全节点和验证者处理。由于这些限制,以太坊第一层网络每秒大约只能处理 15 笔交易。理论上,我们可以通过将共识限制在少数集中式节点上来牺牲去中心化和安全性。但是,这显然不符合以太坊社区的期望。因此,很明显,我们必须找到一种方法,在保持去中心化和安全性的同时实现可扩展性。从长期来看(这取决于是否有必要),以太坊可能会实施分片技术,将第一层网络分成多片,验证者将并行处理这些分片。在短期内,以卷叠为中心的第二层网络已成为主流愿景。
以太坊主网被称作第一层网络。这是我们所熟知和喜爱的以太坊主要区块链。卷叠则被称为第二层网络。它们将执行分离到第二层网络,但在第一层网络进行结算。第二层网络在其自身的以太坊虚拟机中处理交易,并存储卷叠的世界状态。第二层网络上的交易被定期打包成单个交易,发送到第一层网络并进行结算。通过这种方式,第二层网络被认为“继承”了以太坊的安全性,因为第二层网络中的交易最终都在第一层网络结算。通过创造另一种交易选择,卷叠减轻了第一层网络的压力。由于第二层网络卷叠对燃气的高效利用,相对于第一层网络,终端用户的燃气费用相当低。
乐观卷叠
乐观卷叠由以太坊第一层网络上的智能合约和第二层网络上的卷叠组成。智能合约促进了各层网络间的通信。通常,用户会将资产存入第一层网络智能合约中,然后将资产桥接到卷叠的第二层网络上。反过来,用户也可以通过桥接回到第一层网络以退出卷叠。一旦桥接完成,乐观 卷叠上的交易将被发送到一个排序器(Sequencer),这个排序器是处理交易的卷叠实体。交易以一种高度优化的形式,被打包成一个区块。区块被排序器作为调用数据(Call Data)提交给第一层网络。请记住,调用数据是交易中的输入数据(Input Data)字段。
通过将所有交易放在调用数据中,多个卷叠交易可以被视作单个第一层网络中的交易。提交到第一层网络的交易还包括旧的状态根(State Root)和由交易引起的新提议的状态根。称其为乐观卷叠,是因为我们假定新的状态根是诚实的,并且只包含合法的交易。然而,一旦发送到第一层网络,就会有一个挑战期。如果第一层网络和第二层网络的状态根之间存在差异,则被挑战的交易将被重新执行。最流行的第二层网络乐观卷叠包括 Arbitrum、Optimism、Base 和 Linea。
零知识卷叠
零知识(ZK)卷叠与乐观卷叠遵循相同的广泛模型,但有一处重要调整。第一层网络上有一个智能合约,并且能够桥接到第二层零知识卷叠。一旦到达第二次网络,用户将交易提交给一个排序器,排序器将许多交易打包成单个交易,以调用数据(Call Data)的形式发布到第一层网络。然而,与挑战期不同,ZK 卷叠包含一个有效性证明(Validity Proof)。有效性证明是密码学保证,用于确保卷叠所处理的状态转换是正当的。有效性证明可被立即验证,无需挑战期。最流行的第二层零知识卷叠是 ZkSync 和 Starknet。
以太坊路线图是以太坊开发者和研究人员正在努力实现的一组半正式目标 [1]。它反映了以太坊的主要目标,研究人员和开发社区相信这些将会解决以太坊协议中任何未解决的问题。它就像一个期待的解决方案的清单,将被形式化为以太坊改进提案(EIP),然后包含在未来的升级中。完成路线图所需的时间并不明确,但大家谈论的范围大约是 5-10 年。人们期待在某个阶段,协议将固化为一个普遍被接受的状态,在这个状态下不需要进行重大更改,但当然,前提是没有出现任何意外情况。图书出版的性质意味着在你阅读本文时,清单中的一些可能已经成为以太坊协议的一部分。
路线图需要应对六个领域,分别是:合并(共识机制)、激增(扩展)、祸根(中心化风险)、边缘(区块验证)、净化(协议的清理)和挥霍(其他一切)。我挑选了一些预期在近期内出现的重点内容,但对以太坊未来有浓厚兴趣的人应该查看完整的路线图。由于大多数这些主题的研究处于早期阶段,我只能描述它们的意图,而不能描述它们将如何实施。请记住,这些只是一些近期的重点内容,而每个领域都有着更广泛的长期抱负。
单一领导者选择/单时隙确定性(Single Leader Selection/Single Slot Finality)(合并)
目前,我们事先就知道区块提议者。尽管关于完整节点的公开信息有限,但 IP 地址会暴露。攻击者可能会利用这些信息进行恶意行为,比如发起拒绝服务(DoS)攻击,干扰区块提议者在其时隙期间的工作。秘密领导者选择(Secret leader Selection)的目标是:在某个时隙中,只让区块提议者知道自己已被选中去提议新区块。另一个对共识改进的提案是单时隙最终确定性(Single Slot Finality),它将立刻实现区块的最终确定性。
Proto-danksharding(EIP-4844)(激增)
Proto-danksharding(EIP 4844)将取代目前卷叠将交易信息发布出来并作为调用数据的方法。当卷叠将调用数据发送到第一层网络时,需要对其进行处理并添加到区块链中,然后永久存储。然而,卷叠只在交易可以被挑战的时间段内暂时需要交易数据。Proto-danksharding 引入了一种被称为“Blobs(水花)”的新方法来存储卷叠数据,这些数据将仅在需要时存储(可能为 1-3 个月),然后被丢弃。
提议者-构建者分离(Proposer-Builder Separation, PBS)(祸根)
提议者-构建者分离规范化了提议者和构建者的不同角色。人们一直想要将 PBS 封装进以太坊协议,但它在从挖矿过渡到质押(合并)的过程中被放在了次要位置。在这个空白中,MEV-Boost 作为一个解决方案出现,使得区块构建者能够构建执行区块,然后传递给中继节点,中继节点再将它们汇总,并允许区块提议者选择最赚钱的区块。一旦 PBS 被添加,提议者将不再能有选择性地自己构建区块,只有区块构建者才能这样做。实际上,PBS 使区块构建者的角色合法化为以太坊协议的一部分,而不是像现在这样处于准官方地位。
账户抽象(Account Abstraction)(The Splurge)
外部拥有账户(EOA)在设计上有些笨拙。它们基本上只允许用户从合约账户创建交易并调用函数。账户抽象将使得 EOA 可以由智能合约管理,或者使得智能合约能够创建交易,就像现在的 EOA 一样。这应该会带来用户体验方面的重大改进,比如私钥的社交恢复、批处理交易、安全规则等。总的来说,账户抽象应该使用户的账户体验更符合普通用户对“用户账户”这个词的期望。
亲爱的读者,希望你在离开时比来时更有所收获。毫无疑问,你可能觉得对以太坊的许多领域只有模糊的了解,这在以太坊是很正常的。许多以太坊的人都谈论过掉进兔子洞的经历。每当你以为自己已经走到尽头,就会有另一个转折。永远有更多的东西可以学习。起初,这可能让人感到畏惧,觉得自己不可能掌握所有的知识。实际上,你可以选择自己喜欢的兔子洞的部分,并专注于它。关键是要意识到,兔子洞的深度不是一个可怕的对手,而是一个机会。在以太坊的任何角落,都有你可以做出贡献的地方。在每一个地方你都可以成为边界探索者中的一员。对于那些在考虑下一步做什么的人,我建议你为 ethereum.org 网站做出贡献。这是一个由开源志愿者社区组成的地方,内容由任何人创作。不需要写代码,只需要学习并传播以太坊的概念。并请永远记住(借用 Jameson Lopp 对比特币的描述):“没有人完全理解以太坊,但这没关系!”
注释:[1] Vitalik Buterin 在 Twitter 上发布的路线图:https://twitter.com/VitalikButerin/status/1588669782471368704/photo/1
比特币是一个去中心化的货币系统。你可以把这个系统看作一个共享的数字账本,用于追踪并记录货币——比特币(Bitcoins)。这个数字账本是以开放和协作的方式,共同运营维护的。因此,其独特之处就在于没有单一实体能控制这个数字账本。通过区块链技术,比特币实现了这一目标。而作为一种安全的数字记录保存系统,区块链实现了用户之间去中心化的协作。比特币的三大核心组件——网络、身份和共识——它们结合在一起,更是确保了这个系统的安全性。本文是对比特币的简要介绍,是在一本关于以太坊入门书的背景下撰写的。这里的话题以及许多被省略的内容都值得单独设章节来讨论,我建议比特币爱好者参考更多专业书籍以了解它。
比特币本质上是一个开放源代码的志愿者项目。比特币社区围绕着一个名为 Bitcoin Core(比特币核心)的软件客户端运行,该客户端将比特币的协议或规则集整合起来并加以应用。当用户运行这个软件时,他们会与其他运行该软件的用户连接,形成一个网络。由于这个网络是由相互连接的节点(即运行客户端软件的用户)组成的,因此它也属于点对点(Peer to Peer,P2P)网络。这个网络的非凡之处在于没有中心节点,更没有中心的同伴节点。在比特币网络中,每个节点都遵循关于货币的相同协议。这种货币的单位是比特币(BTC),1 个比特币可以细分为 100,000,000 个 Satoshis(或 sats,中文译作聪)。1 聪等于 0.00000001 比特币。运行完整客户端软件(包括存储完整的数字账本副本)的比特币用户被称为全节点。并非所有比特币用户都是全节点。实际上,大多数都不是。许多人使用的是简化支付验证钱包(Simplified Payment Verification, SPV)。SPV 钱包依赖全节点以获取比特币网络的最新状态,该钱包有多种形式:轻量级桌面钱包、浏览器扩展、网站、移动钱包、硬件钱包等。不幸的是,许多用户并未亲自操作该软件,而是将比特币存放在中心化交易所。由于比特币网络分布在数千个全节点上,因此关闭整个网络变得极为困难。攻击者需要找到并关闭每一个全节点实体才能成功,然而这是不实现的。
公钥加密(Public Key Cryptography)用于在比特币中建立匿名身份。当你下载比特币软件时,将为你创建一个密钥对身份。这个密钥对包括一个私钥和一个公钥。在加密学的意义上,这些密钥彼此关联。私钥是确定比特币所有权的东西,它永远不应该被透露给任何人。这是一个不完美的类比,但私钥就好比(但不等于)你在线账户的密码一样。而且失去你的私钥就像失去对比特币的访问权,没有密码重置按钮,也没有可以投诉的公司。相关的公钥可被分享给任何人,并将用于验证你发送的交易。
私钥是一个介于 1 到 2²⁵⁶ (一个 256 位的数字)之间的数字。这是一个天文数字,确保了不会存在两个相同的私钥。由于私钥是以数字形式存在的,因此可以用多种方式进行表示。比如,以下是比特币核心软件生成的私钥:L34ENboLf2h2uNkpNW8pMcJ2cFixRmsUDiHW2m8pucfa1p4zYmGd
私钥的格式和存储方式将根据所使用软件而定。一种常见的变体(尽管 Bitcoin Core 中没有)是利用种子短语或助记词生成一组私钥。你的身份不会与特定钱包绑定,因此可以将私钥导入任何 Bitcoin 钱包软件。
你的公钥是由私钥派生而来的,它是与私钥具有加密关系的一组坐标。上述私钥对应的公钥为:0325CCF70B20522B0E68A3FB31B94986364267B9D21763815DBB89F32C9AE8DCC3
为了接收比特币,我们需要生成比特币地址。比特币地址是由公钥衍生而来,用于接收比特币。
一般情况下,公钥地址呈现如下形式:1PHeNJGuYyY5R9JEEDUef78RzJXpLWxS1W
公钥加密使比特币中的数字签名方案成为可能。操作逻辑如下:a. 生成私钥b. 生成与私钥相关联的公钥c. 依据公钥生成地址d. 使用私钥对交易进行数字签名e. 使用公钥验证数字签名
让我们设想一个实际中的比特币交易。假设有两个用户,一个是发送者 Alice,另一个是接收者 Bob。Alice 的钱包软件记录了她过去收到的所有比特币,并用私钥控制这些比特币。在 Bitcoin 中,用户的余额代表了他们之前所接收但尚未使用的所有比特币。从技术角度来讲,所有收到的比特币都被称为“未花费交易输出”(Unspent Transaction Outputs, UTXO)。UTXO 代表了一定面额(例如 0.1 或 5.2)和其拥有者。比特币网络随时都会对所有 UTXO 及其当前可支配权进行快照。接下来,我将简要探讨比特币的发送和接收过程。
比特币交易是将其从一个所有者向一个接收者转移的过程。在我们的例子中,Alice 打算将 100 个比特币转给 Bob,在此之前,她已经拥有了足够数量的比特币。当 Alice 开始交易时,她的 Bitcoin Core 软件会自动搜索可用于支付的比特币。还未使用的比特币将被视为交易输入。如果无法找到准确的金额,钱包将从汇总较小数额的比特币,或者超额支付并接收退款(至退款地址)。此外,Alice 还需要支付给比特币网络的维护者一定数额的交易费。一旦交易完成,这 100 个比特币就成为了 Bob 的未使用资金,并可以在日后的交易中使用。
为了验证 Alice 的交易,比特币采用一种名为脚本(由中本聪创建)的简单编程语言,来解锁和锁定未花费的比特币。为了验证 Alice 的交易,比特币使用一种被称作 Script(由中本聪创造)的简单编程语言来解锁和锁定未使用的比特币。我将用最常见的例子来说明:scriptPubKey 是对已发送比特币的锁定脚本,它决定了这些比特币在什么条件下可以被使用。当 Alice 向 Bob 发送比特币时。她实际上是在通过 scriptPubKey 告诉网络,这些比特币将来可以如何使用。在这种情况下,锁定脚本规定:要花掉这些比特币,接收者必须提供一个与锁定比特币的公钥相关的私钥的数字签名。然后,Bob 就可以使用相应的脚本解锁这些收到的比特币。他可以把这些比特币锁定到别人的公钥,供他们以后解锁。
比特币网络中的交易记录被存储在比特币区块链上。区块链作为比特币的分布式账本,被用于记录所有用户的余额。需要注意的是,在比特币系统中,并没有中央机构负责维护这个账本,而是由比特币社区内一部分人承担了这一角色,即矿工。最初几乎所有比特币用户皆为矿工,然而如今这已成为一项高度专业化的工作。矿工负责将交易打包成区块,类似于账簿中的一页。每隔十分钟,从众多矿工中会选出一位来将下一个区块添加至区块链账簿中。该区块是一个包含比特币网络追踪所有重要信息的数据结构。
区块的主体由一系列交易组成。每个区块的大小限制约为 4 MB。在区块的构建过程中广泛应用了密码学中的哈希算法。哈希算法是一种将任意大小的数据输入转换为固定长度哈希输出的算法。在区块链中,哈希函数被用于创建和确保每个区块的完整性与一致性。以下以“Bitcoin”作为输入,并通过哈希函数生成相应的哈希值:b4056df6691f8dc72e56302ddad345d65fead3ead9299609a826e2344eb63aa4
如果我更改任何数据,哈希值都会发生变化。以下是Bitcoin的小写形式:6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b
比特币采用SHA-256哈希算法对数据进行处理,生成较短的摘要,并将其应用于区块创建。每个区块包含一个块头,其中嵌入了关于区块链上下文的重要信息,随后是一个包含交易列表的块体。在比特币系统中,块头具有至关重要的作用。区块头在比特币中非常重要。它看起来如下:
· 版本(Version):软件/协议版本
· 前一个区块的哈希(Prev Hash):前一个区块的哈希值
· 默克尔根(Merkle Root):交易的哈希摘要
· 时间戳(Timestamp):区块时间
· 难度(Difficulty):工作量证明的难度
· Nonce:在工作量证明解决方案中使用的数字
Prev Hash 是将上一个区块的哈希值添加到区块链中,以确保数据完整性和安全性。此外,我们还可以看到默克尔根。它是交易列表的哈希摘要。每个新的区块都会在其区块头中嵌入 Prev Hash(其中包括上一个区块的默克尔根),以建立与上一个区块之间的加密链接,而上一个区块又与前一个区块建立链接,一直回溯到第一个区块,即所谓的“创世区块”。如果有人试图利用新的数据(例如交易数据)重新构建过去的区块,那么该区块的哈希值将发生变化,这种行为很容易被比特币网络识别为恶意行为。
为了理解区块头中最后一个字段——Nonce,我们需要深入了解比特币达成共识的机制。比特币采用的共识机制被称为“工作量证明”(PoW)或“挖矿”,我将其称之为比特币挖矿。在这里我将提及比特币挖矿过程。现在让我们深入探究一下交易是如何传递给矿工的。当比特币网络中有交易发送时,全节点会验证该笔交易是否已经花费,并且检查解锁脚本条件是否满足(即正确的数字签名)。一旦通过验证,这些交易就会进入内存池中等待确认。运行挖矿节点软件的用户将从内存池中精选合适的交易来构建自己的区块。由于账本必须保持唯一和统一,因此我们需要一个机制来决定哪个矿工可以将他们构建好的区块添加到区块链上。然而,在没有中央权威机构存在情况下,我们应该如何达成关于账本共识呢?
假设最新一个区块刚刚被添加到区块链中。矿工通常会准备好一个候选区块,其中包含经过验证的交易,这些交易来自内存池。然而,他们不能立即将自己的区块添加上去。他们与其他所有矿工竞争,在大约 10 分钟内争夺下一个加入区块链的机会。为了成为下一个区块的创建者,矿工必须立即应对挑战。这个挑战是生成满足特定条件(难度)的哈希输出。难度衡量当前低于一定阈值或目标的哈希输出所需付出的努力程度,以使其被接受作为有效输出。这个挑战依赖于哈希算法具有的另一个重要特性。哈希算法是一种单向或不可逆的函数。举个例子,假设我向你展示一个没有上下文的哈希值,你可能会想到以下情景:6d7b3f8ad28b16aa0f5a3128465be936c32a94f2ba8163dedc148654fa9e78a8
在这个哈希输出中没有任何元素能够从逻辑上追溯到输入,即第一个接收比特币交易的人 Hal Finney 的名字。通过这种不可预测的机制,PoW要求矿工找到一个以特定数量的 0 开头的哈希值。这个挑战的关键在于哈希输出以十六进制(0-9,A-F)表示。然而,要求生成带有两个前导0 的哈希将需要进行 163 次计算(大约 256 次哈希),而要求三个前导零则需要进行 164 次计算(大约 4096 次哈希),以此类推。因此,寻找具有例如 20 个前导 0 的哈希是非常困难的。矿工无法事先对区块进行哈希运算,他们需要将最新区块头部与最新之前已经完成哈希运算得到结果集成起来。当最终某一矿工成功找到目标时,在几乎同一时间会向所有人宣布其之前已经完成哈希运算得到结果。
矿工为了生成一个可接受的哈希值,会将区块头与一个 Nonce(或称一次数)连接起来。然后将这个组合两次通过 SHA-256 哈希函数,以生成潜在的成功哈希值。由于找到一个可接受的哈希值非常困难,所以第一个哈希值很可能会失败。矿工会逐渐增加 Nonce 的数值,并尝试新的区块头和 Nonce 组合。如果失败,他们会再次增加 Nonce 的数值进行尝试。矿工会持续迭代此过程,直至有一位矿工获得成功。此时,成功的矿工将该区块头和 Nonce 组合所生成的哈希值提交给比特币网络中其他节点进行验证。节点将验证该组合确实生成了一个可接受的哈希值,并将成功挖掘出来的区块添加到区块链中。而后立即开始构建新候选区块,挖矿过程重新启动。
难度调整周期为两周,根据矿工添加区块的速度进行调整。网络目标是每十分钟生成一个区块,但可能会有一定偏差。这是因为哈希率(即特定时间段内进行挖矿的累计计算能力)可能会波动。由于计算能力越强,生成的哈希数就越多,从而加快找到证明结果的速度并缩短区块时间。相反地,当哈希率降低时,找到证明结果所需时间可能更长,并延长区块时间。因此,难度调整将根据哈希率重新设置以确保大约每十分钟找到一个哈希。尽管我们无法预测哪个区块头和输入组合会成功,但我们可以通过概率来确定需要多少次哈希才能找到结果。增加零值要求将提高难度级别,减少零值要求则会降低难度。
当矿工找到一个可接受的哈希输出并将其附加到区块链上时,将增加投入到区块链中的总工作量(即工作量证明哈希)。如果同时存在两个成功提出的区块,尽管这种情况不常见但有可能发生,矿工会保留两个链,但会立即选择其中一个来添加下一个区块,因为此时该区块链具有最大累积工作量。
为什么矿工会参与这个过程呢?在交易列表的顶部存在一个特殊的交易,被称为“创世区块”。创世区块交易将区块奖励发送至由成功挖矿节点控制的地址。所谓区块奖励即指向成功挖矿节点添加新区块到区块链时所给予的比特币数量。最初的区块奖励是 50 比特币,但每四年减半(25、12.5……)。不过矿工还可以从交易费中获取收益。而这份区块奖励不仅是激励矿工继续参与挖矿活动的方式,也是新比特币生成或发行机制之一。随着时间推移,由于每四年一次减半规则,大约在 2140 年左右,矿工将无法再获得新产生的比特币。相反地,他们必须依靠交易费来弥补自身成本开支。递减式奖励计划意味着总共只会有 2100 万个比特币产生。中本聪旨在通过数字形式模拟黄金的稀缺性,在人们积极寻找黄金之类资源以致出现“挖掘”一词情况下实现此目标。
最开始,矿工可以用自己家里的电脑或笔记本上的 CPU 来挖比特币。但是,他们很快发现用图形处理器(GPU)能够更快地生成哈希值。这就导致了专门设计的硬件——应用特定集成电路(ASIC)出现。为了在激烈竞争中生存,小型矿工通常会加入一个矿池并与其他人分享收益。攻击比特币就变得非常困难,因为它需要庞大计算能力才能实现共识机制。攻击者必须拥有超过所有其他矿工总和的 51% 哈希率才行。这种行为代价极高且不明智,因此拥有如此强大哈希率的矿工最好还是保持诚实以赢取区块奖励和手续费。
当然,相较于本文所包含的内容而言,比特币还有更多方面需要探讨,其中包括重要的历史时刻如比特币内战(2015-2017)以及技术改进例如闪电网络。然而这里的内容足以证明我们已经具备了去了解许多关于比特币更为复杂主题的坚实基础。
套利者:利用中心化或去中心化交易所之间价格差异进行交易的交易者。
架构去中心化:区块链分布在所有全节点参与者中,而不是位于单一位置。
存档节点:包含区块链完整历史记录且不进行修剪的全节点。
认证:权益证明共识机制中的一种投票。验证者对区块链的头部、目标检查点和源检查点进行认证。
自动化做市商(AMMs):用于交换 ERC-20 资产的智能合约协议。
基础费用:指以太坊网络中由算法决定的 gwei 动态成本。
信标区块:包含共识机制的上下文信息,如提议者、验证者、认证、存款等。由某个时隙的区块提议者构建。
信标链:以太坊的共识区块链,包含以太坊的历史,并一个区块一个区块地扩展,以反映新活动。
信标根:信标状态的哈希值。
信标状态:信标链的状态。
区块:包含有关区块链的上下文信息的数据结构。区块头包含高层次的信息,区块主体通常包含更完整的信息。
区块构建者:构建并格式化包含优化了最大可提取价值(MEV)的交易的区块。
区块链:一种安全的数字记录系统,使用户能够进行去中心化协调。
区块链文化:一个区块链社区共享的社会、文化或政治价值观。
区块链经济:与区块链实例相关的经济和金融活动。
区块链治理:允许区块链利益相关者对协议做出正当决策的协调机制。
区块链预言机:给区块链提供外部或链下数据的第三方或中间件服务。
区块链利益相关者:在区块链实例中拥有金融或文化利益的群体。
区块提议者:在一个时隙内被选中构建区块的特定验证者。
BLS 签名:验证者使用的数字签名方案。当被聚合时具有快速验证的特性。
借/贷平台:使用户能够借贷加密资产的智能合约协议。
桥接:使不同区块链之间的跨链转移成为可能。
调用数据:交易中输入数据(Input Data)字段的内容。
友好的最终确定性小工具 Casper(Casper-FFG):对两个检查点的证明,导致区块链上某点进入合理状态和最终确定状态。
中心化:决策集中于单一权威或少数权威的组织或行业。
中心化交易所:由公司运营的加密资产交易平台。
检查点:指在时段开始时被认证的两个区块。更近的称为目标,之前的称为来源。还存在弱主观性检查点,标记区块链上普遍认为是不容置疑的点。
客户端多样性:旨在确保在一个客户端中发现的任何问题不会影响整个网络。
委员会:被分配验证某个时隙的一组验证者。
共识机制:区块链用来就事态达成一致的激励协议。
合约账户:在以太坊上已部署并由其内部代码控制的智能合约。
合约创建:请求在以太坊世界状态中添加新合约账户的交易。
贡献者:属于 DAO 中一个或多个工作流的深度参与成员。
去中心化交易所(DEX):DeFi 智能合约协议的总称,允许用户交换加密资产。
去中心化应用(dApp):智能合约加上它所结合的非区块链技术,以增强用户体验。
去中心化自治组织(DAOs):使用区块链技术自我组织的社区。在实践中,通常与公司联合运作,逐渐去中心化成为 DAO -公司混合结构。
去中心化金融(DeFi):协议的生态系统,使金融活动无需许可且透明。
委托人:代表 DAO 代币持有者投票的 DAO 成员。
存款合约:参与的验证者的名单。
衍生品交易所:允许用户交易复杂金融工具(如永续期货、期权等)的智能合约协议。
数字签名:使用私钥附到交易上的加密签名。
Eek(Ethereum Week,以太坊周):2048 个时段,大约 9.1 天。
时段:信标链上的时间单位。长 32 个时隙,大约 6.4 分钟。
ERC-20:在以太坊区块链上创建货币或代币的标准。
ERC-721:在以太坊区块链上创建非同质化代币的标准。
以太币(ETH):以太坊的原生资产。
以太坊地址:使用加密哈希函数从公钥的最后 20 字节派生的 42 个字符的十六进制标识符,有一个短前缀 0x。
以太坊网络:由全节点组成的点对点(P2P)网络。
以太坊协议:以太坊中各种技术规范的总称,如白皮书、黄皮书以及执行层和共识层规范。
以太坊钱包:以太坊用户管理账户或钱包的软件。与全节点不同。
以太坊虚拟机(EVM):协调以太坊世界状态转换的中央处理单器(CPU)。
EVM 字节码:EVM能读取和执行的低级编程语言。
EVM 内存:在状态转换函数(或机器状态)期间使用的临时内存,用于跟踪变化。
执行区块:包含执行负载的区块数据结构。执行区块嵌套在信标区块内。
执行层(EL):以太坊协议关注执行交易的部分。
执行有效载荷:EVM 状态转换函数的输出摘要。
外部账户(EOA):可以创建交易并由私钥控制的用户账户。
最终确定性:一旦来源检查点被最终确定,前面的区块被则视为永久,不能变动,从而实现最终确定性。
闪电贷:在单个区块内发生的无抵押贷款,通常串联一系列复杂的智能合约互动,利用套利机会。
分叉:区块链分裂,可能是无意的或恶意的,或者是有意用来升级协议的。
抢先交易:一个搜索者识别出来自另一个用户的有利可图的交易,然后用支付更高燃料费的自己的交易取代它。
全节点:拥有区块链完整副本(尽管可能被修剪)并能够验证交易、世界状态和区块链记录的用户。需要执行和共识客户端。以太坊网络的支柱。
燃料费用:交易所需的每个操作码都有相关的燃料费用。
燃料计数器:跟踪 EVM 状态转换期间使用的燃料。如果没有更多燃料可用,则回滚并撤销提议的状态更改。
燃料费:用来支付交易燃料费用的小额 ETH,称为 gwei(为 10 亿 wei 或 0.0000000001 ETH)。
燃料限制(交易):用户愿意为之支付的最大燃料量(即计算单元)。
燃料限制(区块):限制一个区块中使用的总燃料量。
Gasper:指 LMD-GHOST 和 Casper-FFG 一起时使用的名称。
治理代币:授予 DAO 参与者成员资格和投票权。
哈希函数:接受任意大小的输入数据并输出固定长度哈希的算法。
暂时性损失:在这种情况下,流动性提供者持有资产而不是提供给流动性池时会获得更好收益。
怠惰惩罚:当大量验证者未能履行职责时启动的应急机制。
首次代币发行(ICO):用户将 ETH 发送到合约以换取项目新创建的代币的筹资机制。
流动性挖矿:为流动性池提供资产以换取交易费用的行为。
流动性池(LPs):持有加密资产以供去中心化交易所(DEXs)使用的智能合约。
活性:区块链被期望的属性——快速向时隙添加区块以保持区块链运行或“活跃”。
LMD GHOST:对链头最新区块的“最新信息驱动的最贪婪、最重的被观察子树(Latest Message Driven Greediest Heaviest Observed SubTree)”认证。
最大可提取价值(MEV):指通过操纵区块内交易的顺序来提取价值的行为。
内存池(Mempool):还未被包含在区块之内的、等待被处理的交易的“等候室”。内存池不是一个单一的地方,每个全节点都有一个内存池,当它们作为区块提议者(或区块构建者)时就可以在内存池上构建区块。
默克尔帕特里夏字典树(Merkle Patricia Trie):一种数据结构,允许安全高效地访问重要信息。
信息调用(Message Calls):外部账户(EOAs)发出的交易,传达期望在以太坊世界状态中发生的变化。
NFT 市场:将 NFT 收藏品和希望进行交易的收藏者们聚集在一起。
非同质化代币(NFTs):代表区块链上独特资产的数字代币。
操作码(Opcode):EVM 需要处理的指令或命令。
开源:一种由志愿者协作制作非专有软件的开发过程。
预言机问题(Oracle problem):区块链与外部世界之间信息传递的问题。
点对点(P2P)网络:被称作节点的个体计算机们彼此连接并为某个共同目标做出贡献的技术。每个节点彼此平等。网络中没有中心点。
政治去中心化:权威分散在所有参与成员之间,而不是被集中起来。
价格影响:代币交换产生的价格差异,尤其是会改变自动化做市商中比率的大额代币交换。
价格滑点:使用自动化做市商时,预期价格与实际价格之间的差异。
优先费用:在燃料基础费用之上,用户可以支付额外数量的 gwei,以期交易被更快处理。
程序计数器:跟踪以太坊虚拟机接下来需要处理的合约代码指令。
渐进去中心化(Progressive decentralisation):从公司或企业结构过渡到去中心化自治组织(DAO)的模型,无论是部分转变还是完全转变。
溯源记录(Provenance record):由某个项目中的独立 NFT 哈希的集合所构建的哈希。
公钥密码学:用于在区块链实例中建立匿名身份。
收据根:交易收据的哈希,即处理过的交易的结果。
中继(Relays):将构建者区块传递给区块提议者。
搜索者(Searchers):监视内存池以寻找可以格式化为 MEV 机会的交易,搜索者通常使用自动化机器人来识别这些机会。
罚没(Slashing):对参与恶意行为的验证者施加的惩罚。
时隙:信标链上的时间度量单位。一个时隙长 12 秒。
智能合约:一组被称为操作码(Opcodes)的指令,由 EVM 字节码编写。智能合约随后作为合约账户部署,从而能够与其它账户进行交互。
稳定币:与法定货币(如美元或欧元)一对一挂钩的加密货币或代币。
栈(Stack):EVM 使用基于栈的模型来执行代码。
质押池:将较小数量的 ETH 聚集起来以创建共享的验证者。
罚没奖励:报告恶意行为的奖励。
状态根:将世界状态中的所有子项(外部账户、合约账户、合约账户存储)一起一起进行哈希处理而产生的、世界状态的哈希值。
状态转换函数:指将以太坊从一种状态移动到另一种状态的各种操作。
存储(合约账户):映射合约账户的内容。
存储(EVM):交易指令一旦被处理,它们就会导致合约账户状态的变化。这些变化被永久记录,以反映从机器状态中产生的新的世界状态。
子网(Subnet):用于生成证明的聚合签名。
同步委员会(Sync committee):被指派为轻客户端提供区块头信息的验证者。
防篡改:没有单一实体可以单方面更改区块链的历史。
代币 ID(TokenId):智能合约中用以标识 NFT 的数字。
代币持有者:由于拥有 DAO 的治理权而有权投票或参与治理的 DAO 成员。
代币 URI(TokenURI):指向与代币 ID 相关联的元数据和图像位置的指针。URI 即统一资源标识符(Uniform Resource Identifier),是一个类似于 URL 链接的概念。
总锁定价值(Total Value Locked, TVL):与某个 DeFi 协议相关的总价值。
交易根:交易列表的哈希值。
透明度:区块链上发生的所有活动都是完全公开的。
受信任的第三方:用户依赖于提供某些服务的中介。
验证者:向存款合约存入 32 ETH 作为抵押(质押)以参与共识的账户。
验证者集:当前参与质押的验证者的累计数量。
虚拟只读存储器(Virtual Read-Only Memory, ROM):在 EVM 状态转换期间读取(但不重写)所涉及合约账户的代码。
提款根:提款列表的哈希值。
工作流:DAO 中专门负责某组特定任务(如市场营销、治理、社区等)的子单位。
世界状态:将以太坊地址映射到外部账户或合约账户。
收益耕种(Yield farming):用户在不同流动性池之间移动,以追求最佳收益。

编译丨趁早、Emptyman 和跳
编辑 & 排版丨Soleil
本期文章由 LXDAO 翻译小组成员:趁早、Emptyman 和跳翻译,跳校对。本书是 Absolute Essentials of Ethereum,作者是 Paul Dylan-Ennis。我们鼓励您仅将本翻译内容用于学习交流,如有途径和资源,请支持原版书籍。
英语学习-翻译小组:由 Guider 精选优质 Web3 内容,通过翻译第一手原文资料快速了解 Web3 行业基础概念、第一原则与相关资讯,同时主动学习英语。欢迎加入我们一起同行与共建!
本书为 Absolute Essentials of Ethereum(以太坊指南),作者:Paul Dylan-Ennis,全书共分为八个
本书目录:
赠言
前言与致谢
第一章 介绍以太坊
第二章 以太坊 · 执行层
第三章 以太坊 · 共识层
第四章 以太坊治理和文化
第五章 去中心化自治组织(DAO)
第六章 DeFi 去中心金融
第七章 非同质化代币(NFTs)
第八章 以太坊二层网络和路线图
附录:比特币介绍
术语
本期内容是该书籍的第八章「 以太坊二层网络和路线图」以及附录与术语内容,总计约 13000 字,预计阅读时间需要 60 分钟。
前七章内容可见:
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(二)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(三)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(四)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(五)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(六)
以太坊新手快速入门:一本书教你从0到1构建好你的以太坊知识体系(七)
在其发展历程中,以太坊的研究人员提出了不同的扩容解决方案(例如状态通道、Plasma 通道),但最终统一认可卷叠(Rollup)作为广泛适用的解决方案。卷叠主要有两种类型:乐观(Optimistic)和零知识(Zero-knowledge)。两者大体上都遵循将执行分离到第二层网络(Layer 2)的逻辑,然后将结果安置在以太坊第一层网络(Layer 1)。直到最近,卷叠才被视为未来的解决方案,但已经有一些项目启动,还有许多其他项目也即将启动。许多用户,包括我自己,在第二层而非第一层网络上花费了大部分时间,未来这可能会成为常态。除了以卷叠为中心的愿景外,我们还有以太坊路线图。路线图概述了以太坊开发人员和研究人员的长期计划。它不是静态的路线图,而更像是半正式的、开放的一系列目标,随着时间的推移可能会不断演变。然而,预期是在某个阶段,当主要目标完成时,以太坊将进入其“终局”,协议将固化,并被遮掩在众多创新的去中心化应用背后,作为它们的基础设施。在本章中,我假设读者对我们迄今所讨论的一切都非常熟悉,因为这些话题都非常高级,没有以太坊的基础知识就无法理解。
以太坊的创始人 Vitalik Buterin 引入了可扩展性三难题(Scalability Trilemma),以概括区块链在实现三个理想属性时所面临的挑战:可扩展性(Scalability)、去中心化(Decentralisation)、安全性(Security)。这个三难题涉及到如何将区块链的两个属性很好地结合起来,但通常以牺牲第三个属性为代价。
· 可扩展性:区块链每秒可以处理的交易数量(TPS)。
· 去中心化:以节点数量衡量的、区块链的去中心化程度。
· 安全性:区块链对攻击的抵抗程度。
比特币和以太坊是具有高度去中心化和强安全性的区块链示例,但可扩展性有限。这两个区块链都拥有成千上万的全节点和矿工/验证者,使它们去中心化,并且它们都拥有大量的计算能力(比特币)或质押的以太币来确保自身安全。然而,对于以太坊来说,节点的数量和抵押的以太币数量意味着我们只能将一定数量的交易实际上分配给全节点和验证者处理。由于这些限制,以太坊第一层网络每秒大约只能处理 15 笔交易。理论上,我们可以通过将共识限制在少数集中式节点上来牺牲去中心化和安全性。但是,这显然不符合以太坊社区的期望。因此,很明显,我们必须找到一种方法,在保持去中心化和安全性的同时实现可扩展性。从长期来看(这取决于是否有必要),以太坊可能会实施分片技术,将第一层网络分成多片,验证者将并行处理这些分片。在短期内,以卷叠为中心的第二层网络已成为主流愿景。
以太坊主网被称作第一层网络。这是我们所熟知和喜爱的以太坊主要区块链。卷叠则被称为第二层网络。它们将执行分离到第二层网络,但在第一层网络进行结算。第二层网络在其自身的以太坊虚拟机中处理交易,并存储卷叠的世界状态。第二层网络上的交易被定期打包成单个交易,发送到第一层网络并进行结算。通过这种方式,第二层网络被认为“继承”了以太坊的安全性,因为第二层网络中的交易最终都在第一层网络结算。通过创造另一种交易选择,卷叠减轻了第一层网络的压力。由于第二层网络卷叠对燃气的高效利用,相对于第一层网络,终端用户的燃气费用相当低。
乐观卷叠
乐观卷叠由以太坊第一层网络上的智能合约和第二层网络上的卷叠组成。智能合约促进了各层网络间的通信。通常,用户会将资产存入第一层网络智能合约中,然后将资产桥接到卷叠的第二层网络上。反过来,用户也可以通过桥接回到第一层网络以退出卷叠。一旦桥接完成,乐观 卷叠上的交易将被发送到一个排序器(Sequencer),这个排序器是处理交易的卷叠实体。交易以一种高度优化的形式,被打包成一个区块。区块被排序器作为调用数据(Call Data)提交给第一层网络。请记住,调用数据是交易中的输入数据(Input Data)字段。
通过将所有交易放在调用数据中,多个卷叠交易可以被视作单个第一层网络中的交易。提交到第一层网络的交易还包括旧的状态根(State Root)和由交易引起的新提议的状态根。称其为乐观卷叠,是因为我们假定新的状态根是诚实的,并且只包含合法的交易。然而,一旦发送到第一层网络,就会有一个挑战期。如果第一层网络和第二层网络的状态根之间存在差异,则被挑战的交易将被重新执行。最流行的第二层网络乐观卷叠包括 Arbitrum、Optimism、Base 和 Linea。
零知识卷叠
零知识(ZK)卷叠与乐观卷叠遵循相同的广泛模型,但有一处重要调整。第一层网络上有一个智能合约,并且能够桥接到第二层零知识卷叠。一旦到达第二次网络,用户将交易提交给一个排序器,排序器将许多交易打包成单个交易,以调用数据(Call Data)的形式发布到第一层网络。然而,与挑战期不同,ZK 卷叠包含一个有效性证明(Validity Proof)。有效性证明是密码学保证,用于确保卷叠所处理的状态转换是正当的。有效性证明可被立即验证,无需挑战期。最流行的第二层零知识卷叠是 ZkSync 和 Starknet。
以太坊路线图是以太坊开发者和研究人员正在努力实现的一组半正式目标 [1]。它反映了以太坊的主要目标,研究人员和开发社区相信这些将会解决以太坊协议中任何未解决的问题。它就像一个期待的解决方案的清单,将被形式化为以太坊改进提案(EIP),然后包含在未来的升级中。完成路线图所需的时间并不明确,但大家谈论的范围大约是 5-10 年。人们期待在某个阶段,协议将固化为一个普遍被接受的状态,在这个状态下不需要进行重大更改,但当然,前提是没有出现任何意外情况。图书出版的性质意味着在你阅读本文时,清单中的一些可能已经成为以太坊协议的一部分。
路线图需要应对六个领域,分别是:合并(共识机制)、激增(扩展)、祸根(中心化风险)、边缘(区块验证)、净化(协议的清理)和挥霍(其他一切)。我挑选了一些预期在近期内出现的重点内容,但对以太坊未来有浓厚兴趣的人应该查看完整的路线图。由于大多数这些主题的研究处于早期阶段,我只能描述它们的意图,而不能描述它们将如何实施。请记住,这些只是一些近期的重点内容,而每个领域都有着更广泛的长期抱负。
单一领导者选择/单时隙确定性(Single Leader Selection/Single Slot Finality)(合并)
目前,我们事先就知道区块提议者。尽管关于完整节点的公开信息有限,但 IP 地址会暴露。攻击者可能会利用这些信息进行恶意行为,比如发起拒绝服务(DoS)攻击,干扰区块提议者在其时隙期间的工作。秘密领导者选择(Secret leader Selection)的目标是:在某个时隙中,只让区块提议者知道自己已被选中去提议新区块。另一个对共识改进的提案是单时隙最终确定性(Single Slot Finality),它将立刻实现区块的最终确定性。
Proto-danksharding(EIP-4844)(激增)
Proto-danksharding(EIP 4844)将取代目前卷叠将交易信息发布出来并作为调用数据的方法。当卷叠将调用数据发送到第一层网络时,需要对其进行处理并添加到区块链中,然后永久存储。然而,卷叠只在交易可以被挑战的时间段内暂时需要交易数据。Proto-danksharding 引入了一种被称为“Blobs(水花)”的新方法来存储卷叠数据,这些数据将仅在需要时存储(可能为 1-3 个月),然后被丢弃。
提议者-构建者分离(Proposer-Builder Separation, PBS)(祸根)
提议者-构建者分离规范化了提议者和构建者的不同角色。人们一直想要将 PBS 封装进以太坊协议,但它在从挖矿过渡到质押(合并)的过程中被放在了次要位置。在这个空白中,MEV-Boost 作为一个解决方案出现,使得区块构建者能够构建执行区块,然后传递给中继节点,中继节点再将它们汇总,并允许区块提议者选择最赚钱的区块。一旦 PBS 被添加,提议者将不再能有选择性地自己构建区块,只有区块构建者才能这样做。实际上,PBS 使区块构建者的角色合法化为以太坊协议的一部分,而不是像现在这样处于准官方地位。
账户抽象(Account Abstraction)(The Splurge)
外部拥有账户(EOA)在设计上有些笨拙。它们基本上只允许用户从合约账户创建交易并调用函数。账户抽象将使得 EOA 可以由智能合约管理,或者使得智能合约能够创建交易,就像现在的 EOA 一样。这应该会带来用户体验方面的重大改进,比如私钥的社交恢复、批处理交易、安全规则等。总的来说,账户抽象应该使用户的账户体验更符合普通用户对“用户账户”这个词的期望。
亲爱的读者,希望你在离开时比来时更有所收获。毫无疑问,你可能觉得对以太坊的许多领域只有模糊的了解,这在以太坊是很正常的。许多以太坊的人都谈论过掉进兔子洞的经历。每当你以为自己已经走到尽头,就会有另一个转折。永远有更多的东西可以学习。起初,这可能让人感到畏惧,觉得自己不可能掌握所有的知识。实际上,你可以选择自己喜欢的兔子洞的部分,并专注于它。关键是要意识到,兔子洞的深度不是一个可怕的对手,而是一个机会。在以太坊的任何角落,都有你可以做出贡献的地方。在每一个地方你都可以成为边界探索者中的一员。对于那些在考虑下一步做什么的人,我建议你为 ethereum.org 网站做出贡献。这是一个由开源志愿者社区组成的地方,内容由任何人创作。不需要写代码,只需要学习并传播以太坊的概念。并请永远记住(借用 Jameson Lopp 对比特币的描述):“没有人完全理解以太坊,但这没关系!”
注释:[1] Vitalik Buterin 在 Twitter 上发布的路线图:https://twitter.com/VitalikButerin/status/1588669782471368704/photo/1
比特币是一个去中心化的货币系统。你可以把这个系统看作一个共享的数字账本,用于追踪并记录货币——比特币(Bitcoins)。这个数字账本是以开放和协作的方式,共同运营维护的。因此,其独特之处就在于没有单一实体能控制这个数字账本。通过区块链技术,比特币实现了这一目标。而作为一种安全的数字记录保存系统,区块链实现了用户之间去中心化的协作。比特币的三大核心组件——网络、身份和共识——它们结合在一起,更是确保了这个系统的安全性。本文是对比特币的简要介绍,是在一本关于以太坊入门书的背景下撰写的。这里的话题以及许多被省略的内容都值得单独设章节来讨论,我建议比特币爱好者参考更多专业书籍以了解它。
比特币本质上是一个开放源代码的志愿者项目。比特币社区围绕着一个名为 Bitcoin Core(比特币核心)的软件客户端运行,该客户端将比特币的协议或规则集整合起来并加以应用。当用户运行这个软件时,他们会与其他运行该软件的用户连接,形成一个网络。由于这个网络是由相互连接的节点(即运行客户端软件的用户)组成的,因此它也属于点对点(Peer to Peer,P2P)网络。这个网络的非凡之处在于没有中心节点,更没有中心的同伴节点。在比特币网络中,每个节点都遵循关于货币的相同协议。这种货币的单位是比特币(BTC),1 个比特币可以细分为 100,000,000 个 Satoshis(或 sats,中文译作聪)。1 聪等于 0.00000001 比特币。运行完整客户端软件(包括存储完整的数字账本副本)的比特币用户被称为全节点。并非所有比特币用户都是全节点。实际上,大多数都不是。许多人使用的是简化支付验证钱包(Simplified Payment Verification, SPV)。SPV 钱包依赖全节点以获取比特币网络的最新状态,该钱包有多种形式:轻量级桌面钱包、浏览器扩展、网站、移动钱包、硬件钱包等。不幸的是,许多用户并未亲自操作该软件,而是将比特币存放在中心化交易所。由于比特币网络分布在数千个全节点上,因此关闭整个网络变得极为困难。攻击者需要找到并关闭每一个全节点实体才能成功,然而这是不实现的。
公钥加密(Public Key Cryptography)用于在比特币中建立匿名身份。当你下载比特币软件时,将为你创建一个密钥对身份。这个密钥对包括一个私钥和一个公钥。在加密学的意义上,这些密钥彼此关联。私钥是确定比特币所有权的东西,它永远不应该被透露给任何人。这是一个不完美的类比,但私钥就好比(但不等于)你在线账户的密码一样。而且失去你的私钥就像失去对比特币的访问权,没有密码重置按钮,也没有可以投诉的公司。相关的公钥可被分享给任何人,并将用于验证你发送的交易。
私钥是一个介于 1 到 2²⁵⁶ (一个 256 位的数字)之间的数字。这是一个天文数字,确保了不会存在两个相同的私钥。由于私钥是以数字形式存在的,因此可以用多种方式进行表示。比如,以下是比特币核心软件生成的私钥:L34ENboLf2h2uNkpNW8pMcJ2cFixRmsUDiHW2m8pucfa1p4zYmGd
私钥的格式和存储方式将根据所使用软件而定。一种常见的变体(尽管 Bitcoin Core 中没有)是利用种子短语或助记词生成一组私钥。你的身份不会与特定钱包绑定,因此可以将私钥导入任何 Bitcoin 钱包软件。
你的公钥是由私钥派生而来的,它是与私钥具有加密关系的一组坐标。上述私钥对应的公钥为:0325CCF70B20522B0E68A3FB31B94986364267B9D21763815DBB89F32C9AE8DCC3
为了接收比特币,我们需要生成比特币地址。比特币地址是由公钥衍生而来,用于接收比特币。
一般情况下,公钥地址呈现如下形式:1PHeNJGuYyY5R9JEEDUef78RzJXpLWxS1W
公钥加密使比特币中的数字签名方案成为可能。操作逻辑如下:a. 生成私钥b. 生成与私钥相关联的公钥c. 依据公钥生成地址d. 使用私钥对交易进行数字签名e. 使用公钥验证数字签名
让我们设想一个实际中的比特币交易。假设有两个用户,一个是发送者 Alice,另一个是接收者 Bob。Alice 的钱包软件记录了她过去收到的所有比特币,并用私钥控制这些比特币。在 Bitcoin 中,用户的余额代表了他们之前所接收但尚未使用的所有比特币。从技术角度来讲,所有收到的比特币都被称为“未花费交易输出”(Unspent Transaction Outputs, UTXO)。UTXO 代表了一定面额(例如 0.1 或 5.2)和其拥有者。比特币网络随时都会对所有 UTXO 及其当前可支配权进行快照。接下来,我将简要探讨比特币的发送和接收过程。
比特币交易是将其从一个所有者向一个接收者转移的过程。在我们的例子中,Alice 打算将 100 个比特币转给 Bob,在此之前,她已经拥有了足够数量的比特币。当 Alice 开始交易时,她的 Bitcoin Core 软件会自动搜索可用于支付的比特币。还未使用的比特币将被视为交易输入。如果无法找到准确的金额,钱包将从汇总较小数额的比特币,或者超额支付并接收退款(至退款地址)。此外,Alice 还需要支付给比特币网络的维护者一定数额的交易费。一旦交易完成,这 100 个比特币就成为了 Bob 的未使用资金,并可以在日后的交易中使用。
为了验证 Alice 的交易,比特币采用一种名为脚本(由中本聪创建)的简单编程语言,来解锁和锁定未花费的比特币。为了验证 Alice 的交易,比特币使用一种被称作 Script(由中本聪创造)的简单编程语言来解锁和锁定未使用的比特币。我将用最常见的例子来说明:scriptPubKey 是对已发送比特币的锁定脚本,它决定了这些比特币在什么条件下可以被使用。当 Alice 向 Bob 发送比特币时。她实际上是在通过 scriptPubKey 告诉网络,这些比特币将来可以如何使用。在这种情况下,锁定脚本规定:要花掉这些比特币,接收者必须提供一个与锁定比特币的公钥相关的私钥的数字签名。然后,Bob 就可以使用相应的脚本解锁这些收到的比特币。他可以把这些比特币锁定到别人的公钥,供他们以后解锁。
比特币网络中的交易记录被存储在比特币区块链上。区块链作为比特币的分布式账本,被用于记录所有用户的余额。需要注意的是,在比特币系统中,并没有中央机构负责维护这个账本,而是由比特币社区内一部分人承担了这一角色,即矿工。最初几乎所有比特币用户皆为矿工,然而如今这已成为一项高度专业化的工作。矿工负责将交易打包成区块,类似于账簿中的一页。每隔十分钟,从众多矿工中会选出一位来将下一个区块添加至区块链账簿中。该区块是一个包含比特币网络追踪所有重要信息的数据结构。
区块的主体由一系列交易组成。每个区块的大小限制约为 4 MB。在区块的构建过程中广泛应用了密码学中的哈希算法。哈希算法是一种将任意大小的数据输入转换为固定长度哈希输出的算法。在区块链中,哈希函数被用于创建和确保每个区块的完整性与一致性。以下以“Bitcoin”作为输入,并通过哈希函数生成相应的哈希值:b4056df6691f8dc72e56302ddad345d65fead3ead9299609a826e2344eb63aa4
如果我更改任何数据,哈希值都会发生变化。以下是Bitcoin的小写形式:6b88c087247aa2f07ee1c5956b8e1a9f4c7f892a70e324f1bb3d161e05ca107b
比特币采用SHA-256哈希算法对数据进行处理,生成较短的摘要,并将其应用于区块创建。每个区块包含一个块头,其中嵌入了关于区块链上下文的重要信息,随后是一个包含交易列表的块体。在比特币系统中,块头具有至关重要的作用。区块头在比特币中非常重要。它看起来如下:
· 版本(Version):软件/协议版本
· 前一个区块的哈希(Prev Hash):前一个区块的哈希值
· 默克尔根(Merkle Root):交易的哈希摘要
· 时间戳(Timestamp):区块时间
· 难度(Difficulty):工作量证明的难度
· Nonce:在工作量证明解决方案中使用的数字
Prev Hash 是将上一个区块的哈希值添加到区块链中,以确保数据完整性和安全性。此外,我们还可以看到默克尔根。它是交易列表的哈希摘要。每个新的区块都会在其区块头中嵌入 Prev Hash(其中包括上一个区块的默克尔根),以建立与上一个区块之间的加密链接,而上一个区块又与前一个区块建立链接,一直回溯到第一个区块,即所谓的“创世区块”。如果有人试图利用新的数据(例如交易数据)重新构建过去的区块,那么该区块的哈希值将发生变化,这种行为很容易被比特币网络识别为恶意行为。
为了理解区块头中最后一个字段——Nonce,我们需要深入了解比特币达成共识的机制。比特币采用的共识机制被称为“工作量证明”(PoW)或“挖矿”,我将其称之为比特币挖矿。在这里我将提及比特币挖矿过程。现在让我们深入探究一下交易是如何传递给矿工的。当比特币网络中有交易发送时,全节点会验证该笔交易是否已经花费,并且检查解锁脚本条件是否满足(即正确的数字签名)。一旦通过验证,这些交易就会进入内存池中等待确认。运行挖矿节点软件的用户将从内存池中精选合适的交易来构建自己的区块。由于账本必须保持唯一和统一,因此我们需要一个机制来决定哪个矿工可以将他们构建好的区块添加到区块链上。然而,在没有中央权威机构存在情况下,我们应该如何达成关于账本共识呢?
假设最新一个区块刚刚被添加到区块链中。矿工通常会准备好一个候选区块,其中包含经过验证的交易,这些交易来自内存池。然而,他们不能立即将自己的区块添加上去。他们与其他所有矿工竞争,在大约 10 分钟内争夺下一个加入区块链的机会。为了成为下一个区块的创建者,矿工必须立即应对挑战。这个挑战是生成满足特定条件(难度)的哈希输出。难度衡量当前低于一定阈值或目标的哈希输出所需付出的努力程度,以使其被接受作为有效输出。这个挑战依赖于哈希算法具有的另一个重要特性。哈希算法是一种单向或不可逆的函数。举个例子,假设我向你展示一个没有上下文的哈希值,你可能会想到以下情景:6d7b3f8ad28b16aa0f5a3128465be936c32a94f2ba8163dedc148654fa9e78a8
在这个哈希输出中没有任何元素能够从逻辑上追溯到输入,即第一个接收比特币交易的人 Hal Finney 的名字。通过这种不可预测的机制,PoW要求矿工找到一个以特定数量的 0 开头的哈希值。这个挑战的关键在于哈希输出以十六进制(0-9,A-F)表示。然而,要求生成带有两个前导0 的哈希将需要进行 163 次计算(大约 256 次哈希),而要求三个前导零则需要进行 164 次计算(大约 4096 次哈希),以此类推。因此,寻找具有例如 20 个前导 0 的哈希是非常困难的。矿工无法事先对区块进行哈希运算,他们需要将最新区块头部与最新之前已经完成哈希运算得到结果集成起来。当最终某一矿工成功找到目标时,在几乎同一时间会向所有人宣布其之前已经完成哈希运算得到结果。
矿工为了生成一个可接受的哈希值,会将区块头与一个 Nonce(或称一次数)连接起来。然后将这个组合两次通过 SHA-256 哈希函数,以生成潜在的成功哈希值。由于找到一个可接受的哈希值非常困难,所以第一个哈希值很可能会失败。矿工会逐渐增加 Nonce 的数值,并尝试新的区块头和 Nonce 组合。如果失败,他们会再次增加 Nonce 的数值进行尝试。矿工会持续迭代此过程,直至有一位矿工获得成功。此时,成功的矿工将该区块头和 Nonce 组合所生成的哈希值提交给比特币网络中其他节点进行验证。节点将验证该组合确实生成了一个可接受的哈希值,并将成功挖掘出来的区块添加到区块链中。而后立即开始构建新候选区块,挖矿过程重新启动。
难度调整周期为两周,根据矿工添加区块的速度进行调整。网络目标是每十分钟生成一个区块,但可能会有一定偏差。这是因为哈希率(即特定时间段内进行挖矿的累计计算能力)可能会波动。由于计算能力越强,生成的哈希数就越多,从而加快找到证明结果的速度并缩短区块时间。相反地,当哈希率降低时,找到证明结果所需时间可能更长,并延长区块时间。因此,难度调整将根据哈希率重新设置以确保大约每十分钟找到一个哈希。尽管我们无法预测哪个区块头和输入组合会成功,但我们可以通过概率来确定需要多少次哈希才能找到结果。增加零值要求将提高难度级别,减少零值要求则会降低难度。
当矿工找到一个可接受的哈希输出并将其附加到区块链上时,将增加投入到区块链中的总工作量(即工作量证明哈希)。如果同时存在两个成功提出的区块,尽管这种情况不常见但有可能发生,矿工会保留两个链,但会立即选择其中一个来添加下一个区块,因为此时该区块链具有最大累积工作量。
为什么矿工会参与这个过程呢?在交易列表的顶部存在一个特殊的交易,被称为“创世区块”。创世区块交易将区块奖励发送至由成功挖矿节点控制的地址。所谓区块奖励即指向成功挖矿节点添加新区块到区块链时所给予的比特币数量。最初的区块奖励是 50 比特币,但每四年减半(25、12.5……)。不过矿工还可以从交易费中获取收益。而这份区块奖励不仅是激励矿工继续参与挖矿活动的方式,也是新比特币生成或发行机制之一。随着时间推移,由于每四年一次减半规则,大约在 2140 年左右,矿工将无法再获得新产生的比特币。相反地,他们必须依靠交易费来弥补自身成本开支。递减式奖励计划意味着总共只会有 2100 万个比特币产生。中本聪旨在通过数字形式模拟黄金的稀缺性,在人们积极寻找黄金之类资源以致出现“挖掘”一词情况下实现此目标。
最开始,矿工可以用自己家里的电脑或笔记本上的 CPU 来挖比特币。但是,他们很快发现用图形处理器(GPU)能够更快地生成哈希值。这就导致了专门设计的硬件——应用特定集成电路(ASIC)出现。为了在激烈竞争中生存,小型矿工通常会加入一个矿池并与其他人分享收益。攻击比特币就变得非常困难,因为它需要庞大计算能力才能实现共识机制。攻击者必须拥有超过所有其他矿工总和的 51% 哈希率才行。这种行为代价极高且不明智,因此拥有如此强大哈希率的矿工最好还是保持诚实以赢取区块奖励和手续费。
当然,相较于本文所包含的内容而言,比特币还有更多方面需要探讨,其中包括重要的历史时刻如比特币内战(2015-2017)以及技术改进例如闪电网络。然而这里的内容足以证明我们已经具备了去了解许多关于比特币更为复杂主题的坚实基础。
套利者:利用中心化或去中心化交易所之间价格差异进行交易的交易者。
架构去中心化:区块链分布在所有全节点参与者中,而不是位于单一位置。
存档节点:包含区块链完整历史记录且不进行修剪的全节点。
认证:权益证明共识机制中的一种投票。验证者对区块链的头部、目标检查点和源检查点进行认证。
自动化做市商(AMMs):用于交换 ERC-20 资产的智能合约协议。
基础费用:指以太坊网络中由算法决定的 gwei 动态成本。
信标区块:包含共识机制的上下文信息,如提议者、验证者、认证、存款等。由某个时隙的区块提议者构建。
信标链:以太坊的共识区块链,包含以太坊的历史,并一个区块一个区块地扩展,以反映新活动。
信标根:信标状态的哈希值。
信标状态:信标链的状态。
区块:包含有关区块链的上下文信息的数据结构。区块头包含高层次的信息,区块主体通常包含更完整的信息。
区块构建者:构建并格式化包含优化了最大可提取价值(MEV)的交易的区块。
区块链:一种安全的数字记录系统,使用户能够进行去中心化协调。
区块链文化:一个区块链社区共享的社会、文化或政治价值观。
区块链经济:与区块链实例相关的经济和金融活动。
区块链治理:允许区块链利益相关者对协议做出正当决策的协调机制。
区块链预言机:给区块链提供外部或链下数据的第三方或中间件服务。
区块链利益相关者:在区块链实例中拥有金融或文化利益的群体。
区块提议者:在一个时隙内被选中构建区块的特定验证者。
BLS 签名:验证者使用的数字签名方案。当被聚合时具有快速验证的特性。
借/贷平台:使用户能够借贷加密资产的智能合约协议。
桥接:使不同区块链之间的跨链转移成为可能。
调用数据:交易中输入数据(Input Data)字段的内容。
友好的最终确定性小工具 Casper(Casper-FFG):对两个检查点的证明,导致区块链上某点进入合理状态和最终确定状态。
中心化:决策集中于单一权威或少数权威的组织或行业。
中心化交易所:由公司运营的加密资产交易平台。
检查点:指在时段开始时被认证的两个区块。更近的称为目标,之前的称为来源。还存在弱主观性检查点,标记区块链上普遍认为是不容置疑的点。
客户端多样性:旨在确保在一个客户端中发现的任何问题不会影响整个网络。
委员会:被分配验证某个时隙的一组验证者。
共识机制:区块链用来就事态达成一致的激励协议。
合约账户:在以太坊上已部署并由其内部代码控制的智能合约。
合约创建:请求在以太坊世界状态中添加新合约账户的交易。
贡献者:属于 DAO 中一个或多个工作流的深度参与成员。
去中心化交易所(DEX):DeFi 智能合约协议的总称,允许用户交换加密资产。
去中心化应用(dApp):智能合约加上它所结合的非区块链技术,以增强用户体验。
去中心化自治组织(DAOs):使用区块链技术自我组织的社区。在实践中,通常与公司联合运作,逐渐去中心化成为 DAO -公司混合结构。
去中心化金融(DeFi):协议的生态系统,使金融活动无需许可且透明。
委托人:代表 DAO 代币持有者投票的 DAO 成员。
存款合约:参与的验证者的名单。
衍生品交易所:允许用户交易复杂金融工具(如永续期货、期权等)的智能合约协议。
数字签名:使用私钥附到交易上的加密签名。
Eek(Ethereum Week,以太坊周):2048 个时段,大约 9.1 天。
时段:信标链上的时间单位。长 32 个时隙,大约 6.4 分钟。
ERC-20:在以太坊区块链上创建货币或代币的标准。
ERC-721:在以太坊区块链上创建非同质化代币的标准。
以太币(ETH):以太坊的原生资产。
以太坊地址:使用加密哈希函数从公钥的最后 20 字节派生的 42 个字符的十六进制标识符,有一个短前缀 0x。
以太坊网络:由全节点组成的点对点(P2P)网络。
以太坊协议:以太坊中各种技术规范的总称,如白皮书、黄皮书以及执行层和共识层规范。
以太坊钱包:以太坊用户管理账户或钱包的软件。与全节点不同。
以太坊虚拟机(EVM):协调以太坊世界状态转换的中央处理单器(CPU)。
EVM 字节码:EVM能读取和执行的低级编程语言。
EVM 内存:在状态转换函数(或机器状态)期间使用的临时内存,用于跟踪变化。
执行区块:包含执行负载的区块数据结构。执行区块嵌套在信标区块内。
执行层(EL):以太坊协议关注执行交易的部分。
执行有效载荷:EVM 状态转换函数的输出摘要。
外部账户(EOA):可以创建交易并由私钥控制的用户账户。
最终确定性:一旦来源检查点被最终确定,前面的区块被则视为永久,不能变动,从而实现最终确定性。
闪电贷:在单个区块内发生的无抵押贷款,通常串联一系列复杂的智能合约互动,利用套利机会。
分叉:区块链分裂,可能是无意的或恶意的,或者是有意用来升级协议的。
抢先交易:一个搜索者识别出来自另一个用户的有利可图的交易,然后用支付更高燃料费的自己的交易取代它。
全节点:拥有区块链完整副本(尽管可能被修剪)并能够验证交易、世界状态和区块链记录的用户。需要执行和共识客户端。以太坊网络的支柱。
燃料费用:交易所需的每个操作码都有相关的燃料费用。
燃料计数器:跟踪 EVM 状态转换期间使用的燃料。如果没有更多燃料可用,则回滚并撤销提议的状态更改。
燃料费:用来支付交易燃料费用的小额 ETH,称为 gwei(为 10 亿 wei 或 0.0000000001 ETH)。
燃料限制(交易):用户愿意为之支付的最大燃料量(即计算单元)。
燃料限制(区块):限制一个区块中使用的总燃料量。
Gasper:指 LMD-GHOST 和 Casper-FFG 一起时使用的名称。
治理代币:授予 DAO 参与者成员资格和投票权。
哈希函数:接受任意大小的输入数据并输出固定长度哈希的算法。
暂时性损失:在这种情况下,流动性提供者持有资产而不是提供给流动性池时会获得更好收益。
怠惰惩罚:当大量验证者未能履行职责时启动的应急机制。
首次代币发行(ICO):用户将 ETH 发送到合约以换取项目新创建的代币的筹资机制。
流动性挖矿:为流动性池提供资产以换取交易费用的行为。
流动性池(LPs):持有加密资产以供去中心化交易所(DEXs)使用的智能合约。
活性:区块链被期望的属性——快速向时隙添加区块以保持区块链运行或“活跃”。
LMD GHOST:对链头最新区块的“最新信息驱动的最贪婪、最重的被观察子树(Latest Message Driven Greediest Heaviest Observed SubTree)”认证。
最大可提取价值(MEV):指通过操纵区块内交易的顺序来提取价值的行为。
内存池(Mempool):还未被包含在区块之内的、等待被处理的交易的“等候室”。内存池不是一个单一的地方,每个全节点都有一个内存池,当它们作为区块提议者(或区块构建者)时就可以在内存池上构建区块。
默克尔帕特里夏字典树(Merkle Patricia Trie):一种数据结构,允许安全高效地访问重要信息。
信息调用(Message Calls):外部账户(EOAs)发出的交易,传达期望在以太坊世界状态中发生的变化。
NFT 市场:将 NFT 收藏品和希望进行交易的收藏者们聚集在一起。
非同质化代币(NFTs):代表区块链上独特资产的数字代币。
操作码(Opcode):EVM 需要处理的指令或命令。
开源:一种由志愿者协作制作非专有软件的开发过程。
预言机问题(Oracle problem):区块链与外部世界之间信息传递的问题。
点对点(P2P)网络:被称作节点的个体计算机们彼此连接并为某个共同目标做出贡献的技术。每个节点彼此平等。网络中没有中心点。
政治去中心化:权威分散在所有参与成员之间,而不是被集中起来。
价格影响:代币交换产生的价格差异,尤其是会改变自动化做市商中比率的大额代币交换。
价格滑点:使用自动化做市商时,预期价格与实际价格之间的差异。
优先费用:在燃料基础费用之上,用户可以支付额外数量的 gwei,以期交易被更快处理。
程序计数器:跟踪以太坊虚拟机接下来需要处理的合约代码指令。
渐进去中心化(Progressive decentralisation):从公司或企业结构过渡到去中心化自治组织(DAO)的模型,无论是部分转变还是完全转变。
溯源记录(Provenance record):由某个项目中的独立 NFT 哈希的集合所构建的哈希。
公钥密码学:用于在区块链实例中建立匿名身份。
收据根:交易收据的哈希,即处理过的交易的结果。
中继(Relays):将构建者区块传递给区块提议者。
搜索者(Searchers):监视内存池以寻找可以格式化为 MEV 机会的交易,搜索者通常使用自动化机器人来识别这些机会。
罚没(Slashing):对参与恶意行为的验证者施加的惩罚。
时隙:信标链上的时间度量单位。一个时隙长 12 秒。
智能合约:一组被称为操作码(Opcodes)的指令,由 EVM 字节码编写。智能合约随后作为合约账户部署,从而能够与其它账户进行交互。
稳定币:与法定货币(如美元或欧元)一对一挂钩的加密货币或代币。
栈(Stack):EVM 使用基于栈的模型来执行代码。
质押池:将较小数量的 ETH 聚集起来以创建共享的验证者。
罚没奖励:报告恶意行为的奖励。
状态根:将世界状态中的所有子项(外部账户、合约账户、合约账户存储)一起一起进行哈希处理而产生的、世界状态的哈希值。
状态转换函数:指将以太坊从一种状态移动到另一种状态的各种操作。
存储(合约账户):映射合约账户的内容。
存储(EVM):交易指令一旦被处理,它们就会导致合约账户状态的变化。这些变化被永久记录,以反映从机器状态中产生的新的世界状态。
子网(Subnet):用于生成证明的聚合签名。
同步委员会(Sync committee):被指派为轻客户端提供区块头信息的验证者。
防篡改:没有单一实体可以单方面更改区块链的历史。
代币 ID(TokenId):智能合约中用以标识 NFT 的数字。
代币持有者:由于拥有 DAO 的治理权而有权投票或参与治理的 DAO 成员。
代币 URI(TokenURI):指向与代币 ID 相关联的元数据和图像位置的指针。URI 即统一资源标识符(Uniform Resource Identifier),是一个类似于 URL 链接的概念。
总锁定价值(Total Value Locked, TVL):与某个 DeFi 协议相关的总价值。
交易根:交易列表的哈希值。
透明度:区块链上发生的所有活动都是完全公开的。
受信任的第三方:用户依赖于提供某些服务的中介。
验证者:向存款合约存入 32 ETH 作为抵押(质押)以参与共识的账户。
验证者集:当前参与质押的验证者的累计数量。
虚拟只读存储器(Virtual Read-Only Memory, ROM):在 EVM 状态转换期间读取(但不重写)所涉及合约账户的代码。
提款根:提款列表的哈希值。
工作流:DAO 中专门负责某组特定任务(如市场营销、治理、社区等)的子单位。
世界状态:将以太坊地址映射到外部账户或合约账户。
收益耕种(Yield farming):用户在不同流动性池之间移动,以追求最佳收益。
No activity yet