宇宙链 宇宙链
Ctrl+D收藏宇宙链

当用户越多,历史越长,如何应对越积越多的区块链数据?

作者:

时间:1900/1/1 0:00:00

区块链发展至今已有近10年历史,随着公链的百花齐放以及越来越多新锐技术方案的提出,我们正在面临一个越来越复杂混乱的行业状况。当我们解决了scalability问题,区块链真正获得massadoption,DApp和用户数量都爆炸式增长的时候,区块链历史和状态数据会以什么速度累积呢?

原文标题:《区块链的状态爆炸困境》文章来源:链捕手作者:谢晗剑,Nervos创始人

janx,谢晗剑,Nervos创始人

1Layer1应该关注状态

如果我们认为区块链分层是未来的发展方向,我们应该从一开始就考虑到上层协议和分层网络的需求,在分层的大框架下去设计区块链协议。

换句话说,从分层的角度来看,现有的区块链设计方式都是过时的。现有的区块链在设计时考虑的是特定的功能,并希望在运行一段时间后让上层协议来适应自己。然而如果我们阅读互联网的历史就知道,今天互联网的协议分层不是这样打补丁打出来的,相反是在吸收过去经验之后。这是为什么区块链并不天然是Layer1,Layer1是需要设计的。

要弄清Layer1应该关注什么,先要弄清楚它和上层协议的区别。Layer2起源与我们发现公有链的性能不足,很难扩容到满足整个加密经济体需求的水平,同时我们又非常迷恋公有链提供的可用性和极大的服务范围,因此慢慢演化出了一系列可以由区块链来保证安全的Layer2协议,例如支付通道(paymentchannel)、plasma,etc.

这些协议的共同特点是牺牲共识范围来换取性能。公有链最让人惊艳的地方是通过开放网络提供不间断的覆盖全球的服务,这意味着全球共识,也意味着性能底下。

解决这个问题的最好方式是将大部分交易转移到共识范围更小但是性能更好的上层协议中,并且保证上层协议的参与者总是可以在不满意的时候退回到区块链上来解决问题,代价仅仅是一些时间成本。

ARKM在币安已触发价格上限机制:金色财经报道,ARKM在币安开启交易,价格涨幅上限机制已触发,上限触发价为0.5美元。行情波动较大,请做好风险控制。

此前报道,币安公告表示,由于Launchpad代币开盘之际波动较大,为了保护用户,币安将于开盘五分钟内试行限价机制。在此期间,价格涨幅上限设置为公募价的十倍(以ARKM为例,涨幅上限将设置为0.05美元的十倍,即0.5美元)。[2023/7/18 11:02:22]

因此作为Layer1的区块链,关注点显然不应该是性能,因为Layer2会承担这个职责。Layer1是保障上层协议参与者的最后防线,它的关注点应该是安全和去中心化。如果我们观察Layer2协议与Layer1交互的模式,我们还会发现,Layer1负责的是状态共识,Layer2负责的是状态生成。

2状态是什么

如果Layer1的关注点应该是状态而不是计算,在设计Layer1区块链的时候,我们就需要先理解什么是区块链的状态。理解了状态是什么,我们才能理解状态爆炸是什么。

区块链网络中的每一个全节点,在网络中运行一段时间之后都会在本地存储上留下一些数据,我们可以按照历史和现在把它们分为两类:

历史:区块数据和交易数据都是历史,历史是从Genesis到达当前状态的路径。状态:节点在处理完从Genesis到当前高度的所有区块和交易后形成的最终结果。状态随着区块的增加一直处于变化之中,交易是造成变化的原因。

共识协议的作用是通过一系列的消息交换,保证每一个节点看到的当前状态是相同的,而实现这个目标的方式是保证每一个节点看到的历史是相同的。只要历史相同,处理交易的方式相同,最后看到的当前状态就是相同的。当我们说「区块链具有不可篡改性」的时候,指的是区块链历史不可篡改,相反状态是一直在变化的。

DeFi定向流动性协议Poolshark Protocol已开源链上自动止损产品Cover Pools:6月15日消息,DeFi定向流动性协议Poolshark Protocol已发布链上自动止损产品Cover Pools的源代码,允许想完成定向范围订单的交易者使用AMM进行大规模交易,Cover Pools会自动提高LP的价格,让用户可以在价格变动时顺利地将一种资产换成另一种资产。[2023/6/15 21:38:19]

有趣的是,不同的区块链保存历史和状态的方式不同的,其中的差异使得不同的区块链形成了各自的特点。由于这篇文章讨论的话题是状态,而影响状态的历史数据主要是交易,接下来的讨论历史的时候会侧重交易,忽略区块头。

3举个例子:Bitcoin的历史和状态

Bitcoin的状态,指的是Bitcoin账本当前的样子。Bitcoin的状态是由一个个UTXO构成的,每个UTXO代表了一定数量的Bitcoin,每个UTXO上面写了一个名字,记录这个UTXO的所有者是谁。如果要做一个比喻的话,Bitcoin的当前状态是一个装满了金币的袋子,每个金币上刻着所有者的名字。

Bitcoin的历史由一连串的交易构成,交易内部的主要结构是输入和输出。交易更改状态的方法是,把当前状态中包含的一些UTXO标记为已花费,从UTXO集合中移出,然后把一些新的UTXO添加到UTXO集合里面去。

可以看出,Bitcoin交易的输出正是上面说的UTXO,UTXO只不过是一种处于特殊阶段的TXO。因为构成Bitcoin状态的组件(UTXO),同时也是构成交易的组件(TXO)。

由此,Bitcoin有一个奇妙的性质:任意时刻的状态都是历史的一个子集,历史和状态包含的数据类型是同一维度的。交易的历史即状态的历史,Bitcoin的历史只包含交易。

苹果正设计软件帮助构建AR应用,以推动头显销售:1月27日消息,据The Information报道,消息人士透露,苹果(AAPL.O)正在开发一款软件,为其即将推出的混合现实头显的用户提供简便的方法,让他们可以构建自己的增强现实应用程序,这是苹果通过扩大这款设备的内容范围,以推动大规模采用这款设备的努力的一部分。苹果希望通过这些软件工具,即使是不懂计算机代码的人也能通过Siri语音助手利用头显建立一个AR应用,然后可以通过苹果的应用商店供其他人下载。如果苹果成功了,这将是AR应用程序开发的重大进步。虽然这些工具在一定程度上是针对软件开发人员的,但苹果希望消费者也能使用它们。[2023/1/28 11:33:13]

在Bitcoin网络中,每一个区块,每一个UTXO都要持续占用节点的存储空间。目前Bitcoin整个历史的大小大约是200G,而状态的大小只有大约3G(由大约5000万个UTXO组成)。Bitcoin通过对区块大小的限制很好的管理了历史的增长速度,由于其历史和状态之间的子集关系,状态数据大小必然远小于历史数据大小,因此状态增长也间接的受到区块大小的管理。

4再举个例子:Ethereum的历史和状态

Ethereum的状态,也叫做「世界状态」,指的是Ethereum账本当前的样子。Ethereum的状态是由账户构成的一棵Merkle树,账户里面不仅记录了余额,还有合约的数据。Ethereum的状态可以看作一个大账本,账本的第一列是名字,第二列是余额,第三列是合约数据。

Ethereum的历史同样由交易构成,交易内部的主要结构是:

to:另一个账户,代表交易的发送对象value:交易携带的ether数量data:交易携带的任意信息交易更改状态的方法是,EVM找到交易发送的目标账户,

最高法:加强大数据、区块链、人工智能等前沿技术应用:金色财经报道,10月28日在第十三届全国人民代表大会常务委员会第三十七次会议上,最高人民法院院长周强代表最高人民法院报告党的十八大以来人民法院涉外审判工作情况。

周强在作报告时提出,推动完善涉外法律适用规则体系;推进涉外审判工作与智慧法院建设深度融合,加强大数据、区块链、人工智能等前沿技术应用,构建中国特色、世界领先的互联网司法模式;健全国际商事纠纷解决机制等具体举措。[2022/10/30 11:58:25]

1、根据交易的value计算目标账户的新余额;2、将交易携带的data作为参数传递给目标账户的智能合约,运行智能合约的逻辑,在运行中可能会修改任意账户的内部状态生成新的状态;3、构造新的叶子存放新的状态,更新状态Merkle树。

可以看出,Ethereum的历史和交易结构与Bitcoin相比有非常大的不同。Ethereum的状态是由账户构成的,而交易是由触发账户变动的信息构成,状态和交易中记录的是完全不同类型的数据,二者之间没有超集和子集的关系,历史和状态所包含的数据类型是两个维度的,交易历史大小与状态大小之间没有必然的联系。

交易修改状态后,不仅会产生新的状态,而且会留下旧的状态成为历史状态,因此Ethereum的历史不仅仅包含交易,还包含历史状态。

因为历史和状态属于不同的维度,Ethereum区块头中不仅仅包含交易的merkleroot,也需要显式包含状态的merkleroot。

Ethereum中每一个区块,每一个账户都会持续占用节点的存储空间。Ethereum节点在同步的时候有多种模式,在Archive模式下所有的历史和状态都会保存下来,其中历史包括历史交易和历史状态,所有数据加起来大小超过了2TB;在Default模式下,历史状态会被裁剪掉,本地只保留历史交易和当前状态,所有数据加起来大约是170G,其中交易历史大小是150G,当前状态大小是10G。

CREDAI与Venture Catalysts成立1亿美元proptech基金,专注于区块链房产等领域投资:9月8日消息,印度房地产开发商协会联合会(CREDAI)与综合孵化器和加速器Venture Catalysts宣布合作成立了一个总规模达1亿美元的proptech基金,专注于投资通过数据分析、区块链、增强现实(AR)、人工智能等技术推动房地产行业发展的初创公司。(yourstroy)[2022/9/8 13:16:22]

Ethereum中所有的开销管理都被统一到gas计费模型之下,交易的大小需要消耗对应的gas,而每一条EVM指令消耗的gas,不仅考虑了计算开销,也将存储开销考虑在内。通过每个区块的gaslimit,间接限制了历史和状态的增长速度。

常见的一个误解是,Ethereum的「区块链大小」已经超过1T了。从上面的分析我们可以看到,「区块链大小」是一个非常模糊的定义,如果把历史状态算进去,确实超过了,但对于全节点来说,把历史状态删掉没有任何问题,因为只要有Genesis和交易历史,任意时刻的历史状态都可以重新被计算出来。

真正有意义的数据,是全节点必须的数据的大小,Bitcoin是200G,Ethereum是170G,两者是基本相同的,而且在平均配置的云主机都能装下,因此人们观察到的Ethereum全节点减少并不是由于存储增加导致的。

考虑到Ethereum的历史长度不到Bitcoin的一半,可以看出Ethereum的历史和状态大小增长更快。

5TheTragedyof(Storage)Commons:区块链版本的公地悲剧

公地悲剧所指指的是这样一种情况,有限的共享资源在不受任何限制的使用下被人们过度消耗。区块链节点为保存历史和状态付出的存储,正是这样一种共享资源。

区块链节点为处理交易所花费的资源有三种,CPU,存储和网络带宽。CPU和带宽都是每个区块会刷新的资源,我们可以认为每个区块间隔内都用同样多的CPU和带宽可供使用,上个区块消耗掉的CPU和带宽不会让下个区块可用的CPU和带宽变少。对于可刷新的资源,我们可以通过一次性支付的交易手续费来补偿节点。

与CPU和带宽不同,存储是一种占用资源,在一个区块中被占用了的存储,除非使用者主动释放,否则无法在后面的区块中被其它使用者使用。节点需要为存储持续的付出成本,而使用者却不需要为存储持续的支付手续费。

使用者只需要在往区块链写数据的时候支付一点点手续费,就可以永久使用一个可用性超过AmazonS3的存储,其无限大的永久存储成本需要区块链网络中的所有全节点来承担。

Ethereum上由于各种DApp的存在,TheTragedyof(Storage)Commons相对更加严重。例如,在区块5700001的时候,使用状态最多的5个合约是:

EtherDelta,5.09%IDEX,4.17%CryptoKitties,3.05%ENS,1.92%EOSSale,1.73%比较有趣的是最后一个,EOSSale。虽然EOS的众筹已经完成,EOS代币已经在EOS链上流转,EOS众筹的记录却永远留在了Ethereum的节点上,消耗Ethereum全节点的存储资源。

可以看到,在缺乏管理的情况下,区块链的存储资源会被有意或者无意的滥用。在一个设计合理的经济模型中,使用者必须承担存储占用的成本,这个成本不仅仅与占用存储空间的大小成正比,还与占用时间的长度成正比。

6状态爆炸

公地悲剧所指的无论是历史还是状态数据都会占用存储资源。通过上面对Bitcoin和Ethereum的分析可以看到,虽然它们对历史和状态的增长进行了管理,但是对历史和状态的总大小却没有任何控制,这些数据会持续的无休止的累积下去,使得运行全节点需要的存储资源越来越大,提高全节点的运行门槛,使网络的去中心化程度越来越低,这是我们不愿意看到的。

你也许会说,有没有可能硬件平均水平的提高会超过历史和状态的积累速度?我的回答是可能性很低:

从这张图中我们可以看到,随着Ethereum网络的发展,状态数据累积的数量呈指数式的增长。Bitcoin的状态数据从0积累到3G,用了10年;Ethereum的状态数据从0积累到10G,用了4年;而这是在我们还没有解决Scalability问题,区块链仍然是小众技术的情况下的增长速度。

当我们解决了scalability问题,区块链真正获得massadoption,DApp和用户数量都爆炸式增长的时候,区块链历史和状态数据会以什么速度累积呢?

这就是状态爆炸问题,我们把它归类为post-scalabilityproblem,因为它在解决scalability问题之后会非常明显。我们最早是在做许可链场景落地时注意到了这个问题,因为许可链的性能远高于公有链,刚好处于post-scalability的阶段。

历史数据的累积相对容易处理,未来可以通过去中心化的Checkpoint或是零知识证明等技术来压缩,在那之前全节点甚至可以把历史直接丢掉,依然可以正常运行。状态数据的累积则麻烦许多,因为它是全节点运行必须的数据。

不少区块链项目已经看到了这个问题,并提出了一些解决方案。EOSRAM是解决状态爆炸问题的一个有益尝试:RAM代表了超级节点服务器可用的内存资源,无论是账户、合约状态还是代码,都需要占用一定的RAM才能运行。

RAM的设计也有很多问题,它需要通过内置的交易市场购买,不可转让,无法租用,将合约执行过程中的短期内存需求和合约状态的长期存储需求混在了一起,而且RAM的总量的设定没有确定的规则,更多取决于超级节点可以承受的硬件配置,而非共识空间的成本。

Ethereum社区也看到了这个问题并提出了StorageRent的方案:要求使用者为存储资源的使用预支付一笔租金,占用存储资源会持续消耗这笔租金,占用时间越长,使用者需要支付的租金越多。StorageRent方案存在两个问题:

1、预支付的租金终有一天会用完,这时候如何处理占用的状态?正是为解决这个问题,StorageRent需要诸如resurrection的机制来补充,增加了设计的复杂度,使智能合约的immutability大打折扣,也为使用体验带来了麻烦;2、Ethereum的状态模型是一种共享状态的模型,而不是First-classState。以ERC20Token为例,所有用户的资产记录都存放在单个ERC20合约的存储里面,在这种情况下,应该由谁来支付租金?

解决状态爆炸问题也是NervosCKB的设计目标之一,为此我们走了一条完全不同、更为彻底的变革之路。简而言之,我们在NervosCKB一个token代表一个单位的存储空间,通过经济模型的设计,限制世界状态的大小,利用市场手段调节状态存储的供需,并通过增发的设计持续向占用状态的用户收费,来协调生态中各方的利益,达到长期的安全和持久的稳定。

来源链接:谢晗剑

以太坊

以太坊

开放的分布式区块链应用平台,通过其专属加密货币Ether以太币提供去中心化的虚拟机,处理点对点合约。允许任何人建立和使用通过区块链技术运行的去中心化应用,没有任何欺诈、审查、第三方监管。以太坊的概念首次在2013至2014年由维塔利克·布特林VitalikButerin受比特币启发后提出,旨在共同构建一个更全球化、更自由、更可靠的互联网。以太坊EthereumETHERCERCERC20ERC721ERC以太坊查看更多Nervos

标签:区块链THEETHERETH区块链存证的特征有togetherbnb剧情到哪了Ether-1Coinbase Wrapped Staked ETH

比特币交易热门资讯
巴德言币:12.20BTC午间行情,又是一波千点的涨跌!

各位老铁大家好,我是你们的朋友巴德。跟着我的客户都是做了很久的,不是我带他们收获了多少,而是我用心在指导,毫无保留的教技术,经常熬夜盯盘,深夜告知客户出场或进单;我的长远目标是有收获的时候大家都高兴,亏损我们找问题;客户跟我成为朋友,

1900/1/1 0:00:00
中国人的区块链技术闯入国际学术顶会

上周我从美国的西北角西雅图飞到了东北角波士顿,在那里待了几天,为了参加USENIX的旗舰学术会议NSDI2019.

1900/1/1 0:00:00
ASResearch:探索流民主投票智能合约实现方式与挑战

流民主投票委托「专业的人做专业的决策」,对提高现有治理场景中「投票的参与率」有很大的效果。原文标题:《DAOFest回顾:流民主算法能否解决当前区块链治理的困境》撰文:ASResearch在区块链应用机制设计和去中心化治理场景中,投票.

1900/1/1 0:00:00
数字人民币手册2:双层运营架构有何讲究 钱包生态如何建设

编者按:数字人民币的试点进展备受期待。从中国人民银行成立专门研究团队到现在已过去6年,数字人民币真容初露,目前已在深圳、苏州、雄安、成都等地试点测试.

1900/1/1 0:00:00
五分钟速览 ForkMonitor:比特币意外通胀检测开源工具

比特币意外通胀或大规模回滚都可以称作灾难性事件,BitMEX发文介绍了其开源工具ForkMonitor,提供了意外通胀检测的解决方案.

1900/1/1 0:00:00
以太坊 2.0 质押协议 Lido 质押资产逾 160 万美元

链闻消息,以太坊2.0质押流动性解决方案Lido宣布其质押的ETH价值突破100万美元,目前已有2463枚ETH,约合160万美元。Lido还表示协议已先后完成SigmaPrime与Quantstamp两家安全公司的代码审计.

1900/1/1 0:00:00