加载中 ...

以太坊可扩展性挑战:状态数据

2020-07-05 10:45 编辑:币牛牛 来源:币牛牛

<a href=http://www.btc268.com/ytf/ target=_blank class=infotextkey>以太坊</a>可扩展性挑战:状态数据

虽然以太坊的区块?Gas?可用量上限提高了,但是区块(数据量)大小没有多大改变,因为以太坊上交易数量与数据体量之间并不是完全的正相关。

不久前,以太坊达到了满负荷,但是它处理的交易量只有历史最高记录的一半。我们可以从中得到很多启示。

如上图所见,以太坊上的区块数据量大小和区块?Gas?上限之间显然有某种关系。如果是折线图,也会呈现出上升趋势。不过,二者的关系有点复杂。

以太坊的?Gas?是衡量执行一项操作需要消耗多少计算资源的抽象单位。

由于合约是图灵完备的,你可以在交易中包含无数个循环结构。(为免于陷入死循环)以太坊为单个区块可用的?Gas?设置了上限,该上限目前为?1200?万。

以太坊可扩展性挑战:状态数据

-2020?年?6?月的以太坊交易量-

尽管区块?Gas?上限提高了?50%?,但是以太坊上的交易量依然低于历史最高纪录。这是因为大部分?Gas?都被用于?token?交易或智能合约交易。

执行一个简单的代币交易需要消耗?80000?gas?,而一个以太币转账交易需要消耗?20000?gas?。执行一个?dapp?交易视情况而定,但是其?gas?消耗量通常高于代币交易(译者注:正是?token?交易的比重变化导致即使提高了区块?Gas?上限,所处理的交易数量也低于历史最高)。

相比之下,比特币则简单得多,一个基本交易只有?250?字节(where?a?transaction?is?just?250?bytes?or?that?can?be?the?base?and?then?each?transaction?is?20?bytes,我们解不懂后半句?——?译者)。

以太坊上没有这种协议级交易压缩,因为它采用的是账户系统。

为便于管理账户,以太坊网络每新增一个区块,就会更新一次状态。以太坊基金会的?Griffin?Ichiba?Hotchkiss?称:

“完整的以太坊?‘状态’?指的是所有账户和余额的当前状态,以及在?EVM?(以太坊虚拟机)中部署并运行的所有智能合约的?‘内存’。在以太坊区块链上,每个得到最终确定的区块都有且只有一个全网达成共识的状态。每当有新的区块添加到链上,状态就会更改和更新。”

举一个最简单的对照:比特币状态指的是?UTXO(未花费的有效交易输出)。无论是以太坊状态,还是比特币状态,都是较难理解的概念。简单来说,就是网络的内存(ram)或快照。因此,账户余额和合约中包含的代码函数都是公开可见的。

如果从创世块开始同步以太坊,你需要遍历?4?亿个“节点”(译者注:此处应指状态树上的节点,用于存储状态;状态树本身是默克尔树形式的),需要?1?周左右的时间。

每生成一个区块,以太坊整个网络?10000?多个全节点(运行以太坊客户端、保存所有以太坊区块链区块的计算机)都要在本地同步更新,更新大约?3000?个状态树?“节点”。

这就意味着,你的计算机内存每隔?15?秒,就要同步一个区块,同时磁盘也要一直读写每个区块中对以太坊网络的更改。

因此,更改之处越多,计算机的内存和磁盘就越忙碌,等资源达到上限之后,就无法同步上整个网络的进度了。

无法保持同步指的不是不能下载历史记录,而是不能跟整个网络同时完成交易处理。

此外,去年还有一篇论文指出,对编程人员来说,要构造一个数学模型把?“执行成本(Gas)和所用资源数量(比如?CPU?和内存)”?精确地关联起来,并不是个简单的问题。

这篇论文还提到:“我们在计量模型中发现了一些差异,例如,指令定价方面的显著不一致。我们设计了一个遗传算法(genetic?algorithm),可以生成比普通合约处理起来慢?200?倍的合约。之后,我们证明了,所有主要的以太坊客户端实现都很脆弱,如果它们在消费级硬件上运行,一旦遭受攻击,它们将无法与网络保持同步。”

同样地,在比特币系统中,如果攻击者生成了一个很难验证的区块,甚至有可能导致你的计算机挖矿系统宕机。然而,如果有人这么做了,很可能会失去?6.25?BTC?的区块奖励;如果是矿池这么做了,很有可能会失去所有矿工。

但是在以太坊系统中,攻击者损失的只是发布合约的成本,据研究人员发现,这点损失与攻击所产生的影响根本不成正比。

如果又要在当前形式的以太坊网络基础上实现扩容,又让大家还能继续运行以太坊节点(比如我们?Trustnode?想继续我们的区块链分析),那就是非常复杂而且非常耗时的任务了。

当然了,我们可以通过云服务提供商?Infura?来运行节点。对以太坊网络的绝大多数操作都是由?Infura?上的节点完成的。

据以太坊孵化机构?ConsenSys?的创始人?Joseph?Lubin?所言,ConsenSys?最近已经与?AMD?合资创办了?W3BCLOUD?,旨在打造?“下一代去中心化计算、存储和带宽”。

然而,目前真正的解决方案是区块链合约级分片(译者注:按下文,即?Layer-2?扩展方案)。

以太坊可扩展性挑战:状态数据

-以太坊扩容方案(2020?年?6?月)-

右侧三个扩容方案都有独立的网络环境和区块链,并与以太坊建立了通信。但是,就目前而言,这些网络之间互不通信。

如果历史重演,那么第一步可能是将许多独立的世界计算机相互连接起来,让大家都能互通。

最开始的时候,如果你有一台手提电脑,你就只能访问这台手提电脑里的数据。后来,随着技术上的突破,不同的手提电脑之间建立起了连接(最初是通过电缆),你可以访问邻居的手提电脑里的数据了。

由于这些计算机之间可以建立通信,我们可以允许所有人访问我们的数据,不过不需要每个人都存储我们的数据,除非他们想这么做。

只有那些负责分享数据的人才需要存储数据。我们只需要与其他人的计算机建立联系,这样我们就能看到彼此的数据了。

也就是说,我们需要在?OMG?和?ZK?之间实现通信。我们之所以无法在比特币和以太坊之间建立通信,是因为它们是不同的协议。但还是有项目在尝试连接两者。

如果我们让这些数据集群相互通信,那么只要它们都在同一个协议上运行,可扩展性就不再有任何限制。

这是需要花费很多时间来实现的。如果从这个角度来看,我们就会发现中本聪和?Gregory?Maxwell?都是对的,因为他们是从不同的时间层面来考虑的。

中本聪考虑的可能是比特币技术的总体发展。在他的声明中,他显然认为比特币技术会像(作为一个全球分布式系统的)互联网那样发展。

然而,Maxwell?考虑的是当下。他有一句话说得非常对:如果你没有为此付出足够努力,就不可能实现飞跃。

也就是说,我们正在发展中,或许最艰巨的任务已经完成了。在当前阶段,我们不妨耐心享受这段升级的过程。这是需要时间来酝酿的。

关键词:比特币新闻 币牛牛

转载自比特币新闻网(www.btc268.com),提供比特币行情走势分析与数字货币投资炒币最新消息。

原文标题:以太坊可扩展性挑战:状态数据

原文地址:http://www.btc268.com/news/qkl/23891.html

本文来源:币牛牛编辑:币牛牛

本文仅代表作者个人观点,与本网站立场无关。

本网站转载信息目的在于传递更多信息。请读者仅作参考,投资有风险,入市须谨慎!

'); })();