主页 > 最新imtoken官网 > 以太坊上的许多发展

以太坊上的许多发展

最新imtoken官网 2023-03-20 07:34:35

这篇文章最初是为了参加火星财经的分享活动而写的。 最初的标题是“以太坊上正在发生什么”。 由于时间关系,分享难免简化。 在得到一些朋友的反馈后,我决定添加内容并将标题更改为“以太坊上的许多进展”以示差异。

这篇文章的目的是着重介绍以太坊网络在不同方向的研究和实践进展,展示当下以太坊生态中参与者想象力的投影。 因此,这里的“进步”不仅仅局限于协议层的完善,还包括在应用方面的努力。

1. 以太坊 1.x

在以太坊 2.0 路线图刚刚公布的时候,很多关心以太坊的人都有一个疑问。 如果大家都关注以太坊 2.0,那么这条 PoW 链呢? 谁来维护它?

早在 2018 年 Devcon4 期间,就有开发者意识到了这个问题。 当时有两个可供选择的方向:1)只对 PoW 链做基础维护,放弃大更新; 2)坚持推动PoW链的重大变革,将2.0的研发交给其他团队。 后者就是所谓的“Ethereum 1.x”方向。 这个方向是有道理的,因为以太坊 2.0 的发布时间是不确定的,在发布之前还是要保证 PoW 链的长期可持续发展。 后来更多的人接受了以太坊1.x的方向,才确定了这条路线。

基本上,以太坊 1.x 希望解决以太坊 PoW 链面临的一些基本问题。 其中之一就是众所周知的“状态爆炸问题”。

在以太坊协议运行过程中,哪个账户里有多少钱、合约中存储的数据会不断更新,新的合约也会不断产生。 这些内容(账户余额、合约代码、合约存储内容)我们称之为“状态”,它们是以太坊区块链对一些区块的处理结果,代表了区块处理后那一刻以太坊网络的全局状态。 它还必须随着新块的生成而不断更新。 为了实现快速的区块验证(也是区块执行,因为验证的方式是重新执行所有交易),节点会在本地保存关于状态的数据(简称“状态数据”),并跟随区块的产生并不断更新。 那么理论上,这部分数据的体量会随着账户数量的增加而不断增加,而各个访问状态和输出状态的存储位置是不确定的。

状态数据的爆发式增长会带来两个问题:1)由于访问和输出状态的存储位置不确定,运行以太坊客户端的节点会产生大量的硬盘随机读写需求(这就是为什么需要使用固态硬盘来运行以太坊客户端),而且这部分的需求会越来越高,参与以太坊网络验证的硬件成本会不断增加,导致网络节点数量的减少和集中; 2)让新节点更容易加入网络变得越来越困难,因为新节点在刚加入网络时需要向其他节点请求越来越多的状态数据。

以太坊 1.x 的解决方案是“无状态以太坊”,它允许验证交易所需的状态证明(称为“见证”)随区块一起传播。 接收交易和见证的节点可以使用本地存储的状态根(以太坊状态用Merkle-Patricia树表示,所谓状态根就是Merkle树的根值,是一个哈希值)验证有效性证并进一步验证交易的有效性。 这样,节点不必在本地进行大量访问和写入状态数据(这就是它被称为“无状态”的原因)。

无状态模式有很多优点。 第一,由于交易本身集成了验证交易所需的数据,验证交易会变得更快,可以提高节点的处理速度; 其次,在无状态模式下,数据本身是被拆解的。 那么一些客户端可以根据自己的数据需求进行定向优化,比如可以有只为DeFi应用提供交易和见证的节点。

以太坊区块链链易查询_以太坊能表现出区块链的_以太坊区块信息存储在哪儿

虽然听起来有那么多好处,但实际上它会遇到一个很大的问题,那就是它需要额外的带宽。 在目前的实际运行中,以太坊区块的平均数据大小超过 20 KB。 然而,目前的研究表明,即使我们对以太坊状态树的实现做了一些改进,无状态客户端所需的见证大小仍然在 0.5MB 左右。 这对当前的以太坊网络来说负担太大了。 见证数据大小是无状态模式首先要克服的调整,如果大小不能减小,几乎不可能实现。

不过,好消息是,对无状态以太坊的研究(某种程度上)已经产生了一个结果,这就是Beam同步方法。 Beam借鉴了Fast同步方式和无状态模式的优点。 下载最新的区块后,它开始请求验证交易所需的状态数据,同时尝试在本地恢复完整的状态。 该方法对硬件有一定的要求,目前实现的效果还不稳定。 不过在运行良好的情况下,下载完区块头数据后几分钟内就可以切换到全验证模式,这也是一个重大突破。

Stateless Ethereum 的思路是深远的,要解决的问题也是根本性的,涉及到 PoW 链的长期稳定性。 即使目前不可行,这个方向的研究也会为以太坊协议的改进提供很多启示。

参考:

2. 二层扩容方案

Layer-2扩展方案也提了很久。 2017年左右有人提出这个概念,所谓Layer-2就是把交易的执行放到链下,即不由运行以太坊客户端的节点执行,而是由其他计算机执行。 比特币网络上的闪电网络就是著名的 Layer-2 解决方案。

使用 Layer-2 方案的目的是提高吞吐量:如果交易的执行不放在区块链上,自然会组织多组计算机对不相关的交易进行并行执行(支付就是这样一种可并行的场景),让底层区块链在Layer-2结算资金状态,只有在需要资金与Layer-1合约和用户交互时才执行交易。

那么,作为大家已经提了一段时间的概念,是什么原因让Layer-2在去年年底出现了概念大爆发,并获得了新的关注呢? 因为大家提出了比以前更实用的架构。

Layer-2的概念本身只提到了计算(执行)应该在链下进行,而没有提到Layer-2交易的原始数据应该放在哪里,用户应该如何维护和获取最新的状态他们的账户; 是Layer-2方案的设计空间。 以往的方案为了减轻Layer-1的存储负担,并没有将Layer-2交易数据存储在链上,有的只是周期性地将Layer-2状态的状态根存储在链上(比如一些Plasma方案),还有一些 None 存在(就像大多数状态通道方案一样)。

以太坊区块链链易查询_以太坊区块信息存储在哪儿_以太坊能表现出区块链的

但问题来了。 当用户的资金从 Layer-2 提取到 Layer-1 时,可能会产生纠纷。 比如我觉得我的账户里应该有10块钱,但是我只取了5块钱。 我怎么才能证明我账户里确实有10块钱呢。 此时要求用户保存相关数据并提交,首先用户体验很差,其次可能无法获得很好的证明效果。

所以一些开发者在这一点上迈出了大胆的一步:将交易数据直接发布到Layer-1。 因为数据是经过编码的,所以大小不是大问题。 这就改变了 Layer-2 的范式:要么交易数据有问题,要么交易数据没有问题,那么按照一定的状态转移规则得到的结果自然没有争议。 这就是 Rollup 方案的核心。

在此基础上,我们所听到的不同 Rollup 方案的区别在于如何保证状态转换的正确性。 例如,所谓的ZK-Rollup使用密码学证明系统(主要是零知识证明技术)来证明计算完整性(computational integrity),简而言之,如果相关证据能够通过验证,就证明了计算必须按照相关流程进行。 例如,Optimistic-Rollup 使用经济激励和挑战期来确保链上数据的有效性:如果您认为其他运营商提出的 rollup 区块包含无效交易,则存入保证金以发起挑战。

综上所述,Rollup 的概念是 Layer-2 发展的新成员,有望为以太坊网络解决可扩展性问题提供强大助力。 虽然一个新的概念并不能解决所有的问题,但是工程问题远比概念的推导复杂(这是我们大家应该有的基本认识),比如Rollup方案也面临着用户使用时延迟的问题取款,因此需要流动性提供者。 不过Rollup方案确实吸取了前人的教训,展现出了良好的前景。

ZK-Rollup已经上线,采用路印协议zk-Rollup方案; 此外,Starkware也在这一领域发力。 Optimistic Rollup 以 Fuel 为代表,这是一个致力于稳定币支付的侧链项目。 Rollup 概念提出者 John Adler 也在这个项目中。

参考:

3.去中心化金融

DeFi 应用变得越来越复杂,这在我看来是一件好事。 从一开始(包括到现在),DeFi 的主要应用就是借贷。 这里我主要提到Compound(MakerDAO和DAI其实更复杂,不能用借贷二字简单概括,虽然它们的形式也是借贷)。 后来扩展到保证金交易,即杠杆交易。 先锋应该是dYdX。 现在很多去中心化交易所都有保证金交易功能,包括DDEX。

现在有合成资产交易功能,即非实物结算的衍生品交易。 例如,在 Synthetix 平台上,可以合成比特币价格的衍生品。 现在甚至还有一个有趣的操作,你可以将你的一部分ETH兑换成DAI,存入Uniswap成为流动性提供者,获得Uniswap的手续费收入,另一部分在保证金交易上获得两倍的时间平台ETH,这样你就不会错过ETH的涨价(当然你也会面临ETH价格下跌的损失),还能获得一定的手续费收入。 DeFiZap提供了这样的复合操作,免去了用户自主操作的麻烦。

以太坊区块信息存储在哪儿_以太坊区块链链易查询_以太坊能表现出区块链的

这些新兴产品中有一些是别出心裁的,比如 Synthetix。 在其系统中,合成资产的所有用户都是其他用户的交易对手; 其他人则多次证实了“可组合性”的存在,例如 DeFiZap。 无论如何,它们都展现了 DeFi 的活力,并且没有减弱的迹象。

在 3 月 12 日 ETH 价格暴跌期间,链上清算压力极高,出现了一些不尽如人意的情况。 有的朋友觉得有点失望,但我一点都不觉得。 挫折是不可避免的,因为没有什么是完美的,无论是在产品设计还是工程方面。 总有些东西要在现实中进行压力测试才能发现。 现在它并没有揭示哪个问题是无法解决的,相反,它揭示的是 DeFi 增长了很多——根本没有那么多的清算需求,但现在有了。

参考:

4. 提升用户体验的应用和技术

以太坊生态很早就注重区块链的用户体验。 所谓用户体验,概括起来就是初学者用户在刚开始接触以太坊时会问的问题:什么是Gas? 助记词丢了,钱就拿不回来了。 有这样的把戏吗?

关于第一个问题,已经有一种叫做“元交易”的技术:用户先签署一份有效的交易数据,然后发送给中继者,中继者确认数据有效后,才会发送交易作为实际的交易发送方,交易会触发一系列合约操作来完成用户的交易目的,并为中继者支付费用。 在这个过程中,Gas 的实际支付者是中继者。 因此,只要用户和中继者达成协议,用户可以不用ETH支付,甚至可以不支付(即中继者或dApp补贴用户)。

关于第二个问题,一种解决方法是,这个问题本质上是以太坊协议带来的。 协议层的账户体系不支持用户以比助记词和私钥更复杂的方式管理自己的地址。 和资金。 然而,智能合约的表达可能性不受这些限制。 因此,用户可以使用自己可以控制的智能合约来管理资金。 这个智能合约可以支持一些预定义的方案来代替智能合约的控制。 这样,它可以支持,例如,社会恢复方案(让多个你信任的人可以集体帮助你改变对地址合约的控制,这样即使你丢失了手机或私钥,你仍然可以恢复对合约和资金的控制,只需更改地址)。

此外,另一个著名的用户体验提升解决方案是 ENS,它可以帮助用户用可读的 .eth 地址来表示他们的地址。 这样你转账的时候就不用一直睁着眼睛比较收款地址了,输入.eth地址就可以了(ENS还有其他后缀)。

这些方法最近在一个应用程序中爆炸式增长:智能合约钱包。 用户使用智能合约来管理自己的资金。 智能合约可以拥有ENS地址以太坊区块信息存储在哪儿,往往直接集成元交易功能,甚至支持社交恢复、每日转账限额等高级功能。 目前智能合约钱包领域有两个热门项目:Argent和Authereum。

以太坊能表现出区块链的_以太坊区块链链易查询_以太坊区块信息存储在哪儿

参考:

5. 以太坊 2.0

以太坊 2.0 可能是最受关注的领域,但也可能是最不知情的话题。 一方面,这是因为以太坊 2.0 本身就比较复杂。 它不像上面提到的 DeFi 那样有形,逻辑也很容易理解。 另一方面,因为很多设计还没有完成,所以没有定论。

以太坊2.0的主体有两部分:权益证明共识机制+分片; 主要分为3个阶段进行部署: Phase 0(第一阶段,因为程序员是从0开始计数)部署在信标链上,是一条以PoS机制运行的链。 这条链也是以太坊 2.0 的核心,因为它涉及到为整个网络提供随机性(对应分片的安全性)和分片之间的交互的任务。 信标链本身不用于执行交易,因此不具备像以太坊PoW链那样的用户转移和合约运行的功能。

第一阶段的部署目标是分片链。 即开始部署与分片相关的各种设计,PoS共识机制的参与者(“验证者”)开始被分配到不同的分片以生成区块,并向信标提交一些关于分片的信息(“交联”)连锁优越。 但是现阶段分片还不能执行交易,所以分片链上的区块只是一些纯数据,没有意义。 这个阶段更像是在测试网络是否能够满足分片的带宽需求。

第 2 阶段是向分片链添加执行引擎。 在Phase 2中,分片将具有执行交易的功能,届时可以像现在的以太坊一样部署合约。 分片是并行处理交易,提高以太坊的交易处理吞吐量。

根据这张分阶段部署路线图,我们可以看到网上流传着很多关于以太坊2.0的误解:(1)“以太坊2.0将在今年推出”,这种说法不够准确。 因为计划在今年部署Phase 0,即信标链阶段,所以乐观的认为今年夏末可以上线。 信标链上线后,用户可以在PoW链的保证金合约中存入32个ETH,成为信标链上的验证者。 然而,这并不意味着以太坊 2.0 已经全面部署。 所以,说“以太坊的 PoS 阶段将从信标链的上线开始”是可以的,但说“这意味着以太坊 2.0 已经完成”是错误的。

(2)“以太坊PoS到来后,矿机不能再挖了”也是一种误解。 如前所述,信标链本身不具备执行交易的功能,一旦上线也不可能完全替代PoW链。 PoW链和信标链会长期共存,并不是PoS一上线就彻底抛弃PoW链。 至少Phase 2上线后,两者的共存才会终止(如果分阶段部署的路线图和每个阶段的内容都没有改变的话)。 至于Phase 2的上线时间,虽然没有明确的时间表,但乐观估计Phase 0上线后需要两年时间。

(3) 以太坊 2.0 全面部署后,Eth1 也将被并入 Eth2 系统。 可能的方式是成为 Eth2.0 中的一个分片,其现有状态将被完整迁移到那里。 但是具体怎么做,我没有很深的理解。

以太坊区块信息存储在哪儿_以太坊能表现出区块链的_以太坊区块链链易查询

那么,任何希望参与的人都应该知道关于即将到来的信标链的其他细节吗? (1) 目前主流观点认为PoW链与信标链的连接是单向链桥,即用户在保证金合约中存入32个ETH即可获得信标链上的验证人资格和信标PoW 链上链 ETH(BETH),但 BETH 无法送回 PoW 链;

(2) 在目前的设计中,BETH 持有者不能相互转账,因为信标链不具备执行交易的功能。 但该功能可能是在信标链稳定运行一段时间后才加入的,与后续部署没有很强的依赖关系。

(3) 如果您想自己操作一个验证者,除了存入32ETH外,您还需要一台可以运行验证者客户端软件的电脑和稳定的网络连接(一台电脑可以运行多个验证者客户端),您还需要找到一个节点为您提供必要的信息以太坊区块信息存储在哪儿,否则您将无法参与共识。 当然你也可以自己搭建一个信标链节点。 运行验证者客户端的硬件要求不高,但运行信标链节点的硬件要求更高。 显然,届时也会出现Staking服务商,但由于以太坊协议本身的限制,这种Staking服务应该不是完全免信任的,需要谨慎选择提供商。

这里要补充的是,有些朋友可能会混淆验证者和信标链节点的概念。 信标链节点是参与网络的基本单位,验证者是参与共识的基本单位。 验证就像一个矿工。 不需要自己部署节点,但必须依赖节点参与共识; 另一方面,节点部署者不一定是验证者。

从网络去中心化的角度来看,不仅是验证人客户端的硬件要求,其实信标链节点的硬件要求更为关键。

(4) 作为验证者时,不仅有账户余额的概念,还有“有效余额”的概念。 前者是你账户里有多少BETH,后者是你参与共识时的权益权重(决定你受到的奖惩程度)。 它有一个上限,即 32BETH。 当你在信标链上收到奖励和惩罚时,你的余额会移动,有效余额也会移动(随着有效余额的上升会有一些滞后),但是一旦有效余额达到 32ETH,它就不会继续上升了。 你的余额可能是 100 BETH,但是当你参与共识时,你投的票仍然被记录为 32 BETH 的权重。 这就决定了以太坊的PoS更像是一个发行单利的系统,而不是一个发行复利的系统。

最后,关于分片,我不得不承认我不理解这个概念的全部范围及其设计空间。 在我看来,分片似乎是指不同组的验证者并行对一些交易达成共识,同时要保证这些状态只经过部分验证者的共识,没有固定的存储地点。 可以互相交流。 因此,“跨分片通信”才是真正的问题。

以我们目前的理解,区块链可以看作是一种跟踪状态变化的方法,关键是保证区块内容的可验证性。 对于以太坊协议来说,只要交易所改变的状态被参与验证交易的人共享(或者说,只要想要参与验证的人就可以获得基于交易所的状态),该块是可验证的。 甚至,参与验证交易的人不断更换(如以太坊2.0的思想“验证者不断分配到不同的分片”),也没有问题,因为无状态允许交易本身携带自己的改变了状态。 在这一点上,我们至少可以想象,如果不能体验的话。 真正难以想象的问题是:如果分片是并行运行的,也就是说分片是异步运行的(如果我们想保留可扩展性的话),那么当A分片使用B分片的状态输出时如何实现结果输出了,那么改变B分片的状态呢? A分片中的交易使用B分片的状态似乎没有问题,还是可以验证的,但是如何在执行后立即改变B分片的状态,如果处理交易的验证者没怎么告诉大家B分片的状态变了? 换句话说,B分片上的验证者怎么知道一个不在B分片状态变化历史中的交易需要改变B分片的状态呢? (似乎无法单独跟踪状态根的变化)(在可以想象的情况下,似乎必须存在必须同步的分片,即分片本身成为事实上的Layer-1,并且其他分片成为事实上的第 2 层)。

去年底,分片领域的研究已经取得了很多成果。 研究人员成功地将研究的重点浓缩为两个关键问题:(1)由于验证者需要在不同的分片之间进行洗牌,因此要求他们下载一个分片的交易历史并获取该分片的最新状态是不现实的,同时也会破坏可扩展性; 因此,分片需要无状态; 但是这种无状态性也使得必须有人可以为这些交易提供见证,这就是中继网络问题; (2) 如何保证用户发起交易时交易处理和费用支付的原子性? 这个问题与“如何划分分片”以及如何进行“跨分片交易(支付)”的问题相关联。 这就是费用市场问题。

这两个问题已经很精准了,但还是期待更好的问题定义。 好的问题会导致好的答案。

参考: