精读 Arweave 黄皮书:永存技术架构

  • PermaDAO
  • 更新于 2023-08-17 22:00
  • 阅读 2837

Arweave协议是一种称为区块纺(Blockweave)的类区块链新型数据结构。该协议旨在以可持续的方式提供可扩展的永久链上数据存储。区块纺是永在网(Permaweb)的底层数据结构。永在网是一组驻留在区块纺上的数据、网站和去中心化应用,可以通过普通Web 浏览器访问。

4.png


1、Arweave 简介

Arweave协议是一种称为区块纺(Blockweave)的类区块链新型数据结构。该协议旨在以可持续的方式提供可扩展的永久链上数据存储。区块纺是永在网(Permaweb)的底层数据结构。永在网是一组驻留在区块纺上的数据、网站和去中心化应用,可以通过普通Web 浏览器访问。

1.1 已有数据存储解决方案存在的问题

中心化数据存储存在的问题:数据存储中心化、非永久性、易篡改、政治审查

数据存储中心化:存储设施通常由中心化存储提供商提供,用户的访问权限和数据都面临随时丢失的风险。

非永久存储:中心化的数据存储商存在运营成本,资金不足将导致存储设施无法及时维护,存储数据将丢失。

易篡改:数据所有权不在用户,会出现被篡改风险

政治审查:部分政府加大审查力度,控制网络上政治敏感信息

去中心化数据存储存在的问题:区块容量不足、交易手续费高、数据不安全

区块容量不足:传统的区块链因区块大小限制,难以存储大量数据

交易费高:传统的区块链容纳数据量过大将导致交易费陡增

数据不安全:传统存储链出现数据会丢失情况,只会惩罚存储提供者,无法挽救用户数据

1.2 Arweave的优势

优势:永久存储、抗审查、低成本、去中心化

<!--StartFragment-->

<!--EndFragment-->

图1:Arweave优势

永久存储(防篡改/丢失存储):数据一旦存入数据结构,新区块会与链上的每个先前区块编织在一起。这样可以确保任何更改文档内容的企图会被及时发现,并被整个网路拒绝。Arweave保证了用户对存储内容的永久访问权限,访问内容包括上传的数据、时间戳、上传者等信息。

抗审查(不会因为中心化审查而导致内容无法上传):Arweave不强制要求存储所有用户上传的内容,允许每个节点自行决定存储哪些块和交易,这提高了网络的抗审查能力。 网络的默认被接受的交易都有大量副本(网络中当前的复制率超过97% ,即矿工平均存储了97%的区块纺)。存储在网络(而不是单个矿工)得到概率保证,因此非常强韧并抗干涉。这些优势会使用户得到比其他方法更快的数据访问速度和更可靠的存储,而矿工能够选择他们希望存储的区块和交易, 从而能够实施符合自身要求的内容策略。并且一般情况下,上传用户不公开上传链接,别人也无法访问上传内容。

低成本(低开发学习/部署时间成本):Arweave的HTTP API使在区块方上构建去中心化Web应用极其简单,开发者可以使用所有他们喜欢和熟悉的Web技术(HTML、Javascript、css),并能在几分钟内将其部署到permaweb上。

去中心化(节点分散):作为区块验证的必要部分,交易被存储在链上并在整个网络中复制,因此数据在地理上是分散到世界各地的,而节点为达到“主导策略激励相融”,每个节点的行为都倾向于对网络本身效用做积极贡献。

2、Arweave 关键技术

2.1数据结构:Blockweave 区块纺

区块坊中包括区块哈希列表和钱包列表。拥有区块哈希列表使旧区块可以被请求/验证,拥有钱包列表可以验证新交易,而无需处理钱包上一次交易所在的区块。区块哈希列表和钱包列表由矿工保持更新,并在挖矿和验证新区块时通过网络进行同步。这减少了矿工进入网络的障碍:存在空间、算力、时间,使得区块纺能够拓展到任何单个矿工都无力提供的容量。

纺式结构:Arweave的数据结构并不是严格的单链列表而是复杂一点的图结构,结构中每个区块一共与三个区块相关,当前块的前一个和后一个块以及随机的指向一个之前的块称为回忆区块(recall block/recall chunk),由此构成区块纺。回忆区块是根据前一个块的哈希和高度确定的,密码学原理保证了回忆区块在选定时既有确定又不可预测。

<!--StartFragment-->

<!--EndFragment-->

<!--StartFragment-->

<!--EndFragment--> 图2:"链"和"纺"数据结构

上图为传统区块链数据结构,下图为区块纺数据结构。

节点要求:不需要矿工存储所有先前的块。处理新块和新交易所需的所有数据都存在于每个块的状态中,矿工加入网络只需要保存新块及其回忆区块。在Arweave网络中不存在存在全节点和轻节点概念,只有或多或少的下载了区块坊的客户端。使用Arweave完全同步既不是风险也不是义务,而是矿工获得更多奖励的可选升级途径。

内容存储:区块纺中的区块直接存储了数据信息,可以从Arweave区块浏览器直接看到存储内容而不是一串代码。

优势

  1. Blockweave实际上是分片的,性能可扩展性极强,与其他存储链相比,Arweave可以将TPS提高很多倍,并显著降低长期存储成本
    1. 分片:将区块链网络划分成若干个子网络(或称分片,shard),每一个子网络都会包含一部分节点,网络中的资料储存与交易,会被随机分配到各个分片中做处理。如此一来,每个节点只需要处理一小部份的工作,且不同分片上的交易可以并行处理,网络的交易速度便能因此获得提升。
      1. Blockweave纺状数据结构的设计,矿工无需复制全部数据,降低了门槛,直接存储数据也更方便用户读取。

2.2 共识机制:SPoRA 简洁随机访问证明

PoA=PoW+访问证明:访问证明(PoA)作为工作证明(PoW)的增强版,将整个回忆块数据都包含在哈希运算的输入中,结果作为工作量证明的输入。PoA采用概率和激励驱动的方法来最大化网络中任何数据的冗余副本数量,推动矿工在网络中制作尽量多的数据冗余副本

PoA鼓励了存储:因为矿工需要访问区块纺历史上的随机块才能开采新块并获得挖矿奖励,因此PoA鼓励了矿工存储回忆块(保证历史区块的多点备份)

PoA鼓励矿工更愿意存储“稀有区块”:当稀有区块被选定为回忆块时,拥有它的矿工能在更小竞争的情况下竞猜PoW谜题,争夺相同级别的奖励。(稀有区块是指容易副本较少的区块)

  1. *矿工出块概率 = 拥有随机回忆区块概率 第一个找到Hash的概率**
  2. PoA算法允许通过调节难度来调解网络中的出块速度。难度越大,计算周期越久,出块速度就越慢。如果网络中区块的生成速率超过目标频率,则未来用于区块生成的PoA谜题的难度就会增加。反之亦然

PoA存在的问题:缺乏对快速检索数据的激励、耗能

缺乏对快速检索数据的激励:PoA只能保证永久存储,不能保证访问速度。在数据检索方面没有竞争优势的情况下,矿工们找到一个机会,可以通过使用远程存储池中获益,而不是维护单独的、去中心化的节点。但是这会由于距离等因素降低网络访问速度

耗能:PoA作为PoW机制的一种升级,要求区块包含对网络上过去数据的引用结合的共识机制,因此也会出现证明工作量而产生大量消耗能源问题

SPoRA:2021年2月24日在区块高度为633720处,Arweave的共识机制完成了从PoW(PoA)到SPoRA的升级。此次升级首先是挖矿盈利能力与数据访问速度保持一致,其次减少了维护网络所需的能源

根据blockweave对节点的要求,开采或验证新块,节点必须存有该块的回忆块。证明矿工能够访问回忆块是构造新块工作的一部分(另一方面,验证次证明是验证新区块工作的一部分)。因此,Arweave采用访问证明(Proof of Access)作为共识机制,后来采用PoA的改进版SPoRA(Succint proofs of Random Access)机制

SPoRA相较于PoA的改进:通过SPoRA保证数据永久存储、均衡出块、高速访问以及去中心化

挖矿盈利能力与数据访问速度保持一致:SPoRA降低了之前矿工出块概率的权重,加入了对数据访问速度的考量。SPoRA通过抑制CPU之间的资源池创建了一个更加去中心化和高效的区块编织,让矿工专注于维护本地硬件和节点,实现地理位置多样化以及去中心化,以此来激励矿工更高效、更迅速地复制数据。(保存数据的维护成本由用户的存储费用提供)

减少维护网络所需的能源:SPoRA的架构需要更少的能源来维护,不仅可以降低矿工的开销,而且可以使整个系统更清洁、更高效。此外,在Arweave SPoRA网络上挖掘所消耗的能源用于数据存储和检索。实现了资源支出和效用之间的结合。(通过存储和检索数据挖矿)

SPoRA简洁随机访问证明:

https://arweave.medium.com/the-arweave-network-is-now-running-succinct-random-proofs-of-access-spora-e2732cbcbb46

2.3 数据分发:Blockshadows 区块影

如果采用将包含完整区块广播到链上的传统方式,Arweave将数据本身存储在区块中的做法将大大提高分叉的可能。Arweave提出了数据分发(广播):区块影,在Graphene和紧凑区块(BIP-152)的工作成果上构建。区块影将交易与区块解藕来工作,仅需在节点之间发送最小的“区块影”,就可使接收方重建完整的区块而不必传输区块本身。

区块影包含钱包列表和区块哈希列表、交易哈希列表、可以快速重建几乎任意大小的完整区块。这使得区块大小的瓶颈就变成了可以包含的交易ID数量,以及从其组成交易中重建区块所需的时间。

<!--StartFragment-->

<!--EndFragment-->

图3:节点根据区块影还原完整区块

节点会立即彼此共享交易来保证传播效率并降低通信开销,只有高度确认网络中其他节点也具有交易副本之后,才会尝试将交易打包进区块。区块影改进了Graphene和BIP152提出的工作,并引入了一种基于机制设计的AIIA博弈,用于计算网络中其他节点已经拥有区块数据的可能性。如果节点没有交易数据,它不会尝试从其他节点获取,因此建议节点采取以下方式:

  1. 不要过早地将交易打包进块,这可能会导致区块被拒绝
  2. 不要过完地将交易打包进块,这可能会让网络中其他矿工可能抢先一步打包交易

应用区块影系统会使广播交易过程变得快速灵活,将以最快的速度将它们打包进区块,并且更快的达成共识。这大大减少了数据广播的数据量,降低通信开销,提高广播速度,从而降低分叉概率

2.4 高效计算:Memoisation of state 状态记忆

因为区块纺结构的设计,处理新块和新交易所需的所有数据都存在于每个块的状态中。Memoisation of state(状态记忆)作为一种用于提高算法性能的技术,它通过将算法中的状态信息存储在记忆(缓存)中,当算法再次需要某个状态时,就可以直接从记忆中获取,而不需要重新计算。根据这种记忆技术,新用户加入网络仅需从其信任的对等方下载当前块,或者向后验证部分工作量证明,验证数量越多,加入网络所需的信任越低(证明自己是正义节点)。

一旦加入网络并处于活动状态,节点不需要存储整个区块纺,但是PoA访问证明机制的奖励与存储区块纺的量成比例。网络的主导策略激励兼容(DSIC)特性为网络级的存储和复制提供了保证。这样解放了每个节点,根据自己的偏好和资源情况对存储进行优先级排序和优化

2.5 AIIA博弈:WildFire 野火

Arweave的目标是建立长期的基于经济激励的可靠数据存储机制, 灵活性和适应性均内建于其机制设计之中。 关于灵活性是围绕“自适应互动激励代理”(AIIA)博弈构建的, AIIA博弈是一种自适应机制设计,可实现排名、展示和在鼓励快速响应对等方的交易或区块请求。因为单个节点的宽带限制,矿工需要合理分配带宽资源来更有机会获得挖矿奖励。当前的元博弈基础代理名为野火,野火是Bittorrent 协议的乐观针锋相对带宽分享激励机制的衍生品。

Arweave的矿工参与的是无共识基础的自适应元博弈,野火机制鼓励矿工快速响应对等方的交易或区块请求。在野火中,矿工对所有对等节点根据其响应性进行评分,并做排名,对排名高的对等节点优先考虑传播新区块和交易,这能有效提高矿工收益。它还具有激励接收请求节点提高响应性的副作用:节点需要避免被降级,甚至可能从其对等方的联系列表中被删除。这会改善网络的整体响应能力, 推动低响应性的节点改进,否则终将被排除在网络参与之外。

与基于共识的博弈相比较 :在传统的区块链博弈机制中,所有矿工都需要按相同策略参与挖矿。而在Arweave中则不需要,只需要根据自身策略即对其他玩家及其代理的排名参与挖矿即可,再根据元博弈表达的总体规则由每个正在进行单独挖矿的总和来定义。随着时间推移,AIIA博弈中代理行为会随着它们所处网络的技术和社会环境变化,以反应每个矿工选择的激励变体。 AIIA博弈类似于BitTorrent网络显示出的激励特征,它不会用程序强制每个矿工以相同的方式对网络中的其他参与者进行排名。相反,它允许每个参与者为其他对等方维护私有的本地排名。

理性分配出站带宽: 合理化分配节点拥有的任意带宽,并确保他们准确、及时地与对等方通信。这样可以最大程度地提高传播和响应的有效性,并减少时间和资源浪费。

  1. 每个节点都维护一个对等节点列表,这些是节点发送交易、区块和信息请求的对等方。
  2. 列表中的每个对等方均获得一个评分,该分数代表去对评判者的API请求的响应速度和准确性。分数本质上是向对等方最近发出一些请求的响应速度(字节每秒)的移动平均值。
  3. 节点将对列表中的对等方根据评分排名,新加入的对等方会有一些宽限期,期间不参与排名。
  4. 首先向运行最佳的对等方并行发送消息,然后按排名向其余对等方(运行不佳的对等方和新对等方)顺序发送消息。
  5. 对等方列表将定期修剪,运转不良的对等方被概率性低删除(即删除的概率正比于排名)。

提升响应性:为避免遭遇挖矿机会减少且遇到更多分叉,节点趋于迅速而准确响应所有请求

  1. 首先接受信息请求的节点必须假定该请求是来自使用野火(或者其他AIIA代理)监控响应性的对等方(无论已知的或者新的)。高速连接性对于挖矿和避免分叉至关重要,因此迅速而准确地响应所有请求有利于节点的利益。
  2. 节点不对请求区别对待还有因为某些请求不是来自矿工,而是来自边缘或外部用户。由于在此类用户使用网络应该是免费的(例如请求交易数据的用户),因此节点绝对不可对请求区别对待或者要求回报。
  3. 节点只能访问自己维护的排名,不了解自己在对等方的评分(下面给出净效用函数)。但是都能体验到其等级降低的后果,具体体现在接受传播和信息请求的频率降低,来自新对等节点的请求减少,最终是挖矿机会减少且遇到更多的分叉,以及其他影响。

<!--StartFragment-->

<!--EndFragment-->

公式1:净效用函数

网络生态学 :激励节点提升响应性,代理节点的网络得以实现吞吐量最大化

  1. 该网络可以看做带有加权边的有向图,权重的单位是“最近N个响应的每秒字节数”
  2. 网络中的通路显示可能的区块或交易传播速率。在任意路径上最低的野火评分是该路径上的最大流通速率。(但由于Arweave网络通常是高度连接的,单条慢速边不一定形成瓶颈)
  3. 在这种情况下,排名较低的对等方从对等方列表中逐渐消失,节点间的连接性会增强。对于在多数对等方排名较差的节点,负面影响尤其强烈。希望继续有效挖矿的排名较低的节点具有强烈的动机来升级其带宽或以其它方式提高响应性。

<!--StartFragment-->

<!--EndFragment-->

图4:可视为加权图的野火

3、Arweave 协议机制

3.1 调节区块生成速率

为了调节网络中的区块生成速率,访问证明(PoA)算法允许可变的难度设置。具有较高难度PoA挑战需要更长时间来计算。 “ 难度”是一个网络统计信息,包含在每个模块中。 而难度取决于网络中区块的生成速率,超过目标速率会增加,低于目标速率会降低。通过这种方式,去中心化网络中的矿工网络能够调节区块生成速率,而与网络中节点的数量以及可用于解决PoA谜题的算力和存储空间无关。

3.2 矿工利益主导策略

节点在挖矿方面的主导策略是能最大化挖矿收益。而每个区块挖矿奖励很大程度上不在矿工的控制范围之内,因此收益策略就变成了如何成为第一个挖到新区块,并要抢在其他节点在相同高度开采到新区块之前。节点可以参与开采区块的概率等于节点存储了新区块的回忆块的概率,实质就是上就是节点存储的块占总区块的比例。也可以理解为节点第一个开采到区块的概率是该节点的哈希能力相对于所有其他也拥有回忆块的节点的总哈希算力比值。

<!--StartFragment-->

<!--EndFragment-->

公式2:首个挖到新区块的概率

P(has recall block) = 本地保存的区块数量 / 区块高度

P(finds hash first) = 本地哈希算力 / 全网哈希算力 <!--StartFragment-->

<!--EndFragment-->

3.3 开采和传播新区块

自适应互动激励代理(AIIA)元博弈中的社交等级将直接影响节点接收新区块和交易的延迟,甚至是否能收到它们。社交等级低的节点往往会比其他节点更晚接收信息,并且可能接不到所有信息。最终,低社交等级的节点有被网络完全排斥的风险。如果节点未接收到区块和交易信息,就无法有效地挖矿。因此,合理的对等评分是Arweave挖矿的基本前提条件。

<!--StartFragment-->

<!--EndFragment-->

图6:挖矿的条件

块构建过程 :挖矿节点有两个交易池——等待池和开采池。当新交易到达时,将由节点验证并使用节点的内容策略进行扫描。一旦该节点有较大的把握认为其他节点也已接收到该交易,则把交易从等待池移至开采池。一旦节点开采了一个区块并被网络接受,该区块内的交易将从开采池中删除。在协议层面,分叉恢复可能导致交易从被放弃的区块重新进入开采池。 新块的区块数据段(BDS)是以下各项的哈希:

  1. 上一块的独立哈希。
  2. 回忆块的全部内容。
  3. 候选区块的交易和其他元数据。

在Arweave的工作量证明中,BDS充当了“谜题”。 下图显示了前一个块的信息、回忆块和交易信息如何并入BDS和新的候选块。 新块包含重建BDS和验证工作量证明所需的所有信息,除了回忆块是节点必须已经保有的。

<!--StartFragment-->

<!--EndFragment--> 图7:从前一块、回忆块和交易构建新块

生成新的候选块有五个步骤:

第一步——组装相关元数据 :每个节点都在其状态(或等效地,在当前块中)中保有当前块哈希表(BHL)和当前区块高度,当前块的独立哈希值模除当前区块高度得到回忆块的高度。

<!--StartFragment-->

<!--EndFragment--> 公式3:回忆块的高度计算公式

此高度将在(0-当前块高度)范围内。这排除了当前块充当回忆块的可能性。因此,回忆块必然是区块纺历史上的一个区块,并且始终需要两个不同的区块才能开采新区块,矿工们无法提前预测需要哪个回忆块才能开采下一个块,而矿工参与某一轮次访问证明(PoA)哈希竞猜的概率,等于它保存的区块历史的比例。

第二步——获取和维护交易集:节点在开采新块时,必须从被验证的交易中根据策略选择打包。当交易第一次到达节点时,经过单独验证后再其转移进等待池。在适当的等待时间之后,等待池中交易的一个子集(可能是全集)被选进开采池,在这里把这些交易作为一组进行验证。组中的所有交易都必须能在当前的网络状态和钱包列表上正常执行。

第三步——生成块数据段:回忆块(包括其中的交易及数据)被包含进新的块数据段(BDS)中。因此,要使用正确的回忆块生成BDS,从而通过验证。这构成了矿工在PoW挑战阶段可以访问到回忆块的证明。

第四步——找到有效的Nonce:矿工还必须尝试找一个Nonce随机数,以产生满足难度要求的的新块哈希,找到的Nonce被包括进新块数据结构作为工作量证明(Arweave协议中使用的挖矿算法是RandomX)。

第五步——散播候选块:区块被打包并按照排名的优先级散播给对等方,节点的候选块先于其他候选块被网络接受则获得开采奖励。

激励:节点开采一个新区块获得的总奖励包括立即获得的交易费奖励、增发奖励还可能有一小笔存储基金。大部分交易费不会直接给矿工而是进入存储基金。奖励不是通过特殊交易支付给矿工,而是直接扣减存储基金并更新钱包列表。更新的存储基金和钱包列表会被集成进新的BDS和新区块。

推论:网络对新区块的接受事实上也是对奖励的接受。对矿工的报酬是特定分叉状态的一部分。如果在分叉恢复期间某些区块被拒绝,则这些区块的挖矿奖励也将失效。

3.4 接收、验证和传播交易区块

在操作过程中,节点会从数据分发网络中的其他矿工或专用对等节点 (区块纺浏览器节点)接收到区块。接收节点需要尽快验证并接受该块,以便跟上网络共识并继续有效地挖矿。及时区块散播是避免分叉的一部分,节点必须确保其接受的块也被其对等节点接受。

至关重要的是,为了使向其他对等节点散播区块之前的区块初步验证速度快(增加区块共识时间,也就增加了分叉风险。),区块影中的工作证明可以独立于其他块进行验证。这避免了从区块影构造出完整区块并校验BSD的必要性,否则这会成为一个拒绝服务攻击漏洞。在将接收到的块散播给对等方之前,必须进行以下步骤的初步验证:

  1. 确保区块影结构格式正确;
  2. 确认该块是否已被处理(通过检查其BDS);
  3. 确保该块中引用的每个交易的完整副本都存在于本地交易池中;
  4. 验证传入块的BDS和Nonce组合是否满足网络当前的难度要求;
  5. 验证传入块的时间戳是在前一个块的可接受边界内(时间只允许增加);

如果初步验证通过,从区块影生成出完整区块,并且将区块影在核心验证步骤之前进行散播。 接下来在该块被本地节点接受之前,必须先执行核心验证步骤:

  1. 从该区块生成BDS,与区块影提供的BDS进行校验;
  2. 给定新块交易和时间戳,验证新块中包含的区块纺元数据(例如钱包列表、块哈希列表、区块纺尺寸等)是上一个块提供的元数据的合法更新。

3.5 接收和响应请求

节点在挖矿的各个阶段都需要向对等方请求信息,包括第一次加入网络与对等方同步, 以及需要访问回忆块以验证新块时。为了高效地分配稀缺的出口带宽,节点根据对等方它们响应请求的速度等对其进行排名。通过AIIA元博弈对节点进行激励,以迅速准确地响应信息请求,从而从网络对等节点取得好的排名。除挖矿节点外,网络的其他用户也发送信息请求,包括但不限于对交易数据的请求。这些请求不一定会影响节点的AIIA评分,但是在没有特殊努力的前提下,无法把它们与对等节点的请求区分开来。

3.6 抗分叉和恢复

分叉会给单个节点和整个网络带来风险。理想行为首先包括避免分叉,还有尽快恢复到最佳分叉。 网络中出现分支的潜在原因之一是传播延迟。在Arweave中AIIA元博弈代理鼓励通过野火机制即时传播,因此节点被鼓励在最小验证成功完成后尽快散播区块和交易。

节点将对数据执行严格的“边缘”验证,以保护网络免受攻击,然后传播这些数据。节点被激励在此阶段完成一些验证,因为传播无效数据可能会对排名产生负面影响。类似地,节点被激励快速开采区块,以最大化获得挖矿奖励的可能性,还要尽快传播第一个有效的新候选块,如果节点接受一个新块,则它希望其他节点也接受该同块。

但是分叉是不可避免的,并且当发生时,节点必须能够有效地评估它是否在主分叉上。如果不是,则需要立即恢复到主分叉。Arweave分叉选择规则类似于传统的区块链协议。 每个块都包含一个“积累难度”字段,该字段代表区块纺进入特定分支直到该块之前的工作量。节点可以立即将自己的当前块与收到的块进行比较,以评估收到的块:

  • 有效可接受则传播;
  • 无效或者陈旧,应予以忽略;
  • 分叉选择的证据,发生在收到的块具比节点的当前块有更大的累积难度,而且收到的块并不是当前块的后代。

当发现一个更优分叉块,节点请求得到从分叉点之后的全部块。逐一对它们进行验证 (参见图6)。 在图6中,下面一条线的当前区块高度是39,当前块的累积难度为421。它接收的块高度为41,累积难度为529。接收的块能通过验证,可能预示着存在优选分叉。节点从新的高度41块开始上溯(从每个块依次获取“前一块”字段),直到到达自身历史记录中的一个块(即在节点自己的块哈希列表中)。在图中,在高度38处发现了分叉点(步骤1、2和3)。 这条新线成为节点的优选分叉,并采用累积难度为529的块作为当前块(步骤4)。 现在高度39累积难度421的块无效,如果该块中的交易不在优选分叉的三个最新块之中 ,则丢弃。

<!--StartFragment-->

<!--EndFragment-->

图8:具有累计难度的分叉

当节点收到比其已知的前一块还要晚两个或更多的新候选块时,意味着网络中存在分叉。该节点必须立即采取行动,通过评估分叉的积累难度,确认分叉中哪一个已经被最多的对等方接受。每个块数据结构中提供的“累积难度”,是封装在区块纺分叉中的访问证明工作量的代理表示。在分叉中,优先选择产生了较高累积难度的路径。

当收到有更高累积难度的新块,节点将把新块作为首选分支,并通过分叉的区块哈希列表追溯到与其自身历史的分叉点。一旦分叉点这个共同块被找到,便会评估验证分叉所需的交易和区块。如果发现分叉中从分叉点到接收块的全部块都是合法的,并且当验证结束时它仍然是具有最大累积难度的分叉,则节点的上下文将切换到此分叉。

3.7 去中心化策略

通过三个相关但不同的机制来实现矿工对系统中内容的提出意见:

  1. 对内容进入区块纺中进行民主投票的过程;
  2. 每个节点选择在其计算机上存储什么内容的能力;
  3. 网关节点过滤用户所访问的区块纺数据的能力;

节点通过内容策略表达对内容的偏好。内容策略是可以在交易上执行的任意计算,以决定交易是否为本地节点所接受。在Arweave中支持子字符串匹配和交易数据哈希匹配两种形式的内容策略。其他协议实现可以利用它们自己的内容策略机制。

投票阶段:当交易被分发到网络,每个节点根据自己的内容策略对其进行扫描。如果交易包含内容策略禁止的内容,则该交易不会被接受到该节点的交易池中,也不会散播给其他对等方。 当收到的新区块包含存疑交易会被直接丢弃,如果其他节点未丢弃则会出现分叉。在分叉过程中,拒绝与接受交易的节点“竞争”产生下一个区块,直到新区块产生并确认,另一个派的节点将分叉恢复,然后从临时内存中删除有问题的交易。通过这种方式让网络保持共识,

存储阶段:在节点投票接受数据进入网络之后,区块纺的访问证明机制中内嵌了数据存储的激励。 当新的参与者加入网络,他们会扫描并下载符合其内容策略的交易,回避他们不希望存储的交易。 当节点操作员更改内容策略,他们可以重新扫描本地存储,删除违反新策略的内容。

激励:激励措施迫使矿工在过度宽松和过度拒绝之间取得平衡。去中心化内容策略机制产生了两个互补的激励:

  1. 激励不要过度狂热地拒绝太多交易,这会减少挖矿奖励;
  2. 激励拒绝被网络大多数节点拒绝的交易,因为包含这些交易的候选区块会被网络其余部分忽略。

折中:去中心化内容策略机制会导致交易的结算时间增加了一个区块周期。交易被打包进区块,并不意味着该交易将被整个网络接受。因为最终一致共识机制,这个额外的区块确认期不会显著地改变系统的用户体验。 如果内容策略导致当前回忆块的副本数太少,节点还可以选择丢弃网络的最后区块并重新开采它,以重新决定回忆块。重新开采区块的超时时间并不在协议级别强制决定。然而越多算力被应用开采先前的块,头块被重采的可能性就越高。

网关:网关也将这种内容策略机制应用于索引已经存储在网络中的数据。网关仅索引遵循其自己的内容策略的内容。因此用户可以通过选择不同内容策略的网关,决定他们看到什么类型的网络内容。 此外,这些机制解决了应用开发者从其平台中删除或审查内容的问题。尽管用户可以选择自己看到的内容,但他们不能强行禁止其他人查看区块纺上的内容,因为每个人都可以平等选择网关(对应内容策略)来查看区块纺。

4、PermaWeb(永在网)

PermaWeb是一组建立在Arweave永久知识账本上的通信协议,共同呈现一个永久性的、去中心化的Web。永在网在表面观感上与传统Web非常相似。但是,用户对永在网上的页面和应用的体验与传统Web在几个基本方面有所不同。 <!--StartFragment-->

<!--EndFragment--> 图9:PermaWeb 示意图

4.1 PermaWeb特性

无信任且可证明的Web:Arweave上存储的所有内容都带有时间戳,并且可以防止篡改,这是由区块纺建构上的基本区块链基础设施确保的。区块时间戳不依赖于时间服务器 ,而是依赖于网络共识。时间戳的可靠性源于区块纺的不变性,并且精度几分钟以内。将交易数据包含在区块哈希和回忆块中可确保数据在存储或检索期间保持纯粹,同时还可以确保所述交易数据随时在网络中保持可用。

钱包列表中的每个钱包都记录该钱包的最后一笔交易,这保证钱包的完整历史记录可追溯。Arweave上的每条信息都由钱包签名,上传到永在网的数据始终与上传者相关联。与其他内容寻址网络不同的是Arweave中的每个网页在特定时间点与特定身份相关联,这样记录可以追溯最初发出这些消息的身份,这避免了中心化Web能对消息删改的行为。

激励驱动的Web响应性:激励数据复制是Arweave协议机制设计的基础部分。这种激励措施可确保网络整体具有抵御破坏或攻击的能力,并确保数据可靠地存储在网络中。这些激励措施还极大地提高了网络的响应能力,以及数据定位和检索的速度。这是因为任何给定节点都有很高的可能性拥有请求所需的数据。因此,节点通常不必将请求转发到其他节点,而是可以自行满足所述请求,这 一点与基于“合约”的存储系统不同。

开放HTTP API:为了运行网络,节点使用Arweave节点间协议相互通信,其参考实现是HTTP API,因为Arweave网络节点用跟浏览器相同的格式相互分享数据,对台式机、移动设备和其他设备上的浏览器的网络内部数据的可访问性由协议本身保证。 它们都使用相同的基本协议进行通信。 所以第三方应用程序和浏览器是网络中的 “头等公民”。

4.2 应用架构

客户端-服务器:传统的Web或原生应用具有客户端-服务器架构。这种模式仍然可以兼容Arweave,因为Arweave支持完整的前端内容上传存储,使用ArweaveHTTP API与一个或多个Arweave节点进行交互,代表客户端读取和写入数据。在这种中心化的Arweave App模型中,这些服务可以维护一个AR通证池,以便代表他们的客户来支付数据存储费用。 使用这种应用结构仍然可以免费从区块纺读取数据。开发者也可以像中心化web服务一样通过广告、每月订阅或直接付款获得更多收入。

无服务器Web应用架构:去中心化应用可以直接驻留在区块纺上,从其上直接运行,并且可以由普通Web浏览器访问。这是因为整个应用程序本身都作为交易数据存储在Arweave网络上,当提供给浏览器或其他客户端后,就可以执行。区块纺在上传数据和上传者身份之间建立了不可变的链接,因此可以持续证明任何Arweave应用程序的出处。并且托管在Arweave网络上的无服务器应用程序使用户可以直接为网络交互付费。

4.3 网关节点

Arweave网关节点与任何其他节点相似,但集成了下列功能用于访问或查询网络:

ArQL:用于查询区块纺元数据的查询语言和索引,重点是交易、交易标签和交易链接的时间戳。

ArQL是Arweave协议家族中的一种可选协议,它是一种简单的查询语言,用于对Arweave网络中存储的数据做基本的搜索。 ArQL旨在作为一种轻量级的机制,来帮助应用程序开发者在没 有更高级的去中心化数据库的情况下,构建简单的永在网应用。ArQL通过索引用户和/或开发者定义的与交易相关联的标签来做到这一点。尽管ArQL索引通常与本地持有的区块和交易保持 一致,它们显然不一定全网一致,因为并非所有节点都拥有所有网络数据的完全副本。这给去 中心化数据库带来了三个不常见的特性:

  1. 运行ArQL的节点返回的查询结果要服从该节点的内容策略。(对应用开发者和用户的影响更深远)
  2. 由于查询仅在单个节点内执行,因此可以依靠它们及时提供结果。这是因为没有查 询分片,也没有从其他节点整合结果的延迟等等;
  3. 无法确定查询已返回所有可能的结果,因为查询的结果仅表节点所知的和愿意透露详情 的网络交易(可能会在某些情况下限制ArQL的用途)。

Arweave的DNS和TLS:使用相关钱包和交易ID作为域名访问存储在区块纺上的应用的方法,此功能与现有的DNS和TLS系统兼容。(关于DNS和TLS详细内容请参见黄皮书原文)

对DNS和TLS的支持确保与这些技术“向后兼容”。除这些传统系统,Arweave还可以与去中心化域名系统集成。

4.4 生态应用

Arweave协议提供了真正可靠的、不变的和去中心化的数据存储,从而为广泛的潜在用例提供重要功能。 在解决现实用例时,Arweave协议具有一些独特优点:

  1. 提供可靠的记录档案。一旦将数据添加到区块纺中,就不会被删除或修改,无论有意还是无意;
  2. 真实性。区块纺为特定数据在特定时点提供“存在证明”,基于相关交易的可验证和可靠时间戳;
  3. 出处。每笔交易都永久链接到相同钱包的前一笔交易,这意味着最终用户可以根据钱包地验证任何交易中数据的真实来源,包括Arweave网络上托管的去中心化应用。
  4. 去中心化应用托管。与任何中心化应用托管平台相比,区块纺更能确保可靠的应用访问,中心化平台通常会对应用完整性有负面影响;
  5. 激励性数据存储和服务。Arweave独特的机制设计鼓励向网络中的所有参与者快速提供数据,包括最终用户。

简单介绍部分构建于Arweave上的去中心化应用:

  • ArBoard。去中心化讨论板,用户可以在子类别中创建讨论主题,其他用户可以对这些话题进行回复,对热门话题投票,以及查看任何帖子的编辑历史记录。所有这些功 能均由ArQL提供支持,而无需外部依赖或计算;
  • AskWeave。由Arweave社区创建的托管在区块纺上的应用程序,具有自由格式的问答式论坛功能。用户可以提出和回答问题,并直接在应用内对自己喜欢的回复使用AR支付小费;
  • Weavemail。托管在Arweave网络的去中心化、健壮、永久的电子邮件客户端。除了在 区块纺上发送不可变的电子邮件外,用户还可以将其用为向其他Weavemail用户安全地 发送和接收AR通证的方法;
  • ArweaveID。另一个Arweave社区创建的应用,它使用户可以声明一个关联到其Arweave钱包地址的唯一用户名。并且许多其他社区开发者已将ArweaveID集成到他们自己的永在网应用,包括前面谈到的AskWeave,这意味着用户可以利用“非孤立”的永在网数据 (也就是说,区块纺可以充当任何永在网应用的单例通用数据源)。在这种情况下,这 意味着用户可以在所有永在网应用中使用一个通用用户名,而不必在每个单独的平台上注册单独的账号。

5、Arweave 经济

  • 若想了解本节中具体计算公式请查阅黄皮书原文

5.1 通证经济

支付矿工奖励:2018年6月8日网络启动,AR的最大发行量是6600万个。创世区块创建5500万个AR,另外1100万个AR(创世通证量的20%)将通过出块奖励逐渐进入流通。流通中的AR在钱包和基金池中。Arweave网络使用通证,其稀缺性由区块纺数据结构的共识机制保障。通证的主要单位是 AR,子单位是 Winston,其中

1 AR = 1,000,000,000,000 Winstons

由于系统中的通证是稀缺的,可用于两个有价值的功能,即将数据编码到系统和奖励矿工,因此通证本身具有非零的金融价值。尽管AR通证最初是因为作为支付永久数据存储费用的唯一手段而具有实用性的,它也可以用作价值交换的手段。 为了将交易写到区块中,用户必须支付一些AR作为交易费。不同于传统的区块链系统,交易费用并非全部即时转移给开采该区块的矿工。大部分交易费进入存储基金,该基金会在未来的将交易费用不断分发到矿工钱包中以激励矿工永久存储。

永久存储成本:由于Arweave的核心功能是为其用户提供永久存储,因此必须明确对该存储定价的机制。作为计算永久数据存储成本的前提,我们必须首先确定单个时间段的数据存储成本:

<!--StartFragment-->

<!--EndFragment-->

公式4:单时间段数据成本计算公式

PGBH = 在1个硬盘驱动器上存储1GB数据1小时的价格

HDDprice = 购买硬盘驱动器的最低市场价格

HDDsz = 硬盘驱动器的容量

HDDmtbf = 硬盘驱动器平均故障时间间隔

自从数字化数据存储技术出现以来,市售存储介质存储GB小时的成本一直在以惊人的速度下降(参见图7)。在过去的50年,每GB小时成本每年平均下降30.57%。 <!--StartFragment-->

<!--EndFragment--> 图10:成本曲线

仔细且保守地对数据存储成本做外推,展现出为无限存储提供有限成本的机会。(表中以三年使用时间为例,美元汇率1 $ : 7.0 ¥,AR价格为10$,云存储价格非活动价(按正常价),表中价格单位均为¥)

<!--StartFragment-->

<!--EndFragment-->

表1:传统存储和Arweave储存费用对比

5.2 交易定价

为符合上述成本模型,Arweave协议采用了存储基金机制。该机制允许网络随着时间推移向矿工分配适当数量的通证,以可持续地激励永久存储任意量的数据。 Arweave网络中的交易定价包括两个部分:对永久存储成本高度保守估计,以及为激励矿工接受新交易进入新区块所立即发放的交易奖励(增发)。

5.3 存储基金

为了让 Arweave 挖矿保持盈利,并具有长期可持续性,必须遵守基本原则:网络在任意给定区块发出的奖励都必须大于维护当期的区块纺的总支出费用。虽然从基金持续释放通证自然地满足了此约束(假设按法币计价的通证价格稳定而且 PGBB的预测准确),当矿工已经通过其他方式达到盈利时,协议应避免释放基金通证。这一机制进一步增强了网络的经济稳定性,以抵御通证价格和存储介质价格的波动。为了实现这种稳定效果,挖矿奖励机制仅在维护区块纺所需的价值支出超过增发奖励和即时释放交易费用的情况下才花费基金。(区块内交易费的总和请阅读黄皮书原文)。

其中每个块的增发奖励是预先定义的,并仅随区块高度逐渐降低。(增发奖励计算公式请阅读黄皮书原文)。

鉴于相对于哈希运算,存储成本极低,直到永在网比当前的万维网大很多倍为止(根据互联网档案馆每年的网络抓取规模估算),存储负担都很可能不会达到令矿工从基金提取费用的程度。这意味着存储基金在实践中有必要被定期使用之前,将获得大量的“浮存”通证(可能积累多年)。 (基金中提取的的通证总数计算公式请阅读黄皮书原文)。

Prop函数计算从基金提取的基本奖励,并使其正比于开采所需的回忆块的尺寸除以Arweave网络区块的平均尺寸。这样可以确保在区块明显大于或小于平均值的情况下,均匀地适当激励矿工在网络中存储数据。 (激励计算公式请阅读黄皮书原文)。

6、Arweave 开发

6.1 智能合约

定义:Smartweave 是 Arweave 官方所实现的智能合约标准。它基于前端页面 = 智能合约的概念,使得开发者可以使用Javascript前端脚本来管理状态,前端页面来管理状态,前端页面其实本身就是各种UI的逻辑和状态,开发者可通过JavaScript构建智能合约应用程序。

<!--StartFragment-->

<!--EndFragment-->

以太坊中的Dapp智能合约则全是运行在以太坊EVM中,相比之下Arweave是一个类似硬盘或数据库的区块链,Arweave的去中心化应用在Permaweb层中运行着。Arweave的区块链结构以及存储的定位,与图灵机的纸带非常相似,开发者可以用代码自行管理应用状态,运用Arweave来记录这些状态到链上

设计思路:在传统的智能合约系统中(例如EOS和Ethereum),每个节点都会执行每笔交易,拒绝那些包含无效操作的交易。整个网络被调用来验证交易,这极大地增加了网络的负担。

而Smartweave采用Lazy-execution的思路,无需所有节点执行验证交易。当用户在前端必须得到最新合约状态(需要交互)的时候才会去执行验证。因为使用JavaScript语言,所以用户在浏览器内就可以直接运行所有交易,不需要链上节点运行。

一个应用程序的后端使用PHP还是Java都无所谓,任何开发者在熟悉Arweave的HTTP API以后(对开发者来说学习成本几乎为0)都可以讲Arweave作为区块链数据库,以基于存储的共识范式(SCP)—一种智能合约设计思路来开发出自己的去中心化应用

DApp = 前端页面 = 智能合约:Arweave中是可以直接存储不同content-type的文件的,可以把前端的页面直接存储到Arweave中,打开这个交易数据时就直接可以看到一个完整的页面(比如这个交易中存储的数据,点开就直接是一个渲染好的前端页面)举例如下:

在打开Arweave代码数据的同时,浏览器会渲染好页面,页面以及其源码均能查看。这在以太坊上是无法实现的,以太坊的智能合约对浏览器而言只是一串文本(字符),浏览器无法将其渲染成页面,当开发者在开发过程中,DApp的逻辑和合约的逻辑都可以写在前端中,然后通过HTTP API来将需要存储的交易和数据存储到Arweave上。

工作方式:在本地客户端(浏览器)完成合约的下载、执行验证以及交易提交。当开发者部署Smartweave合约,Smartweave会存储源代码最初状态以及和合约相关的交易(一个有序列表)。程序和交易存储在Arweave区块中。当合约调用者(用户)与Smartweave客户端使用合约源代码,从合约创始状态开始按顺序执行所有历史交易,并得到最新状态,无效的交易会被忽略。然后用户会评估它们对合约的调用,以提交新的交易,将生成的状态转换写入Areweave网络。用户对合约发起的调用(程序状态转换)实际上是作为一个新的交易传入Arweave。这个过程不断重复,新的用户不断地验证历史交易,并增加他们自己的新交易。

在这个模型中,Arweave网络被用作通用数据共识和共享层,客户端作为执行层,用户负责验证它们想要与之交互的历史上的历史交易并提交自己的新的交易

  • 优点:无需gas,合约交互成本在1美分以下;每个合约扩展性上限为用户带宽限制,甚至允许AI卷积网络,而不是传统区块链共识限制;降低了网络负担和费用(合约交互成本在1美分以下),提高了网络的运行性能
  • 缺点:不能迭代,不能更改,隐私暴露,透明公开

6.2 EXM

Execution Machine (EXM) 是一个开发人员平台,它支持在去中心化环境中创建和使用高可用性和高性能的应用程序。目前,EXM 是唯一支持基于区块链的无服务器功能的技术。通过使用 EXM,团队可以创建无数不需要使用钱包或令牌来运行此类应用程序的无信任应用程序。此外,EXM 显着降低了通常与 dApp 使用相关的延迟和维护成本,显着改善了用户体验并大幅降低了运行 dApp 的成本。 <!--StartFragment-->

<!--EndFragment--> 智能合约过去被认为是一个去中心化的程序,它将在区块链内通过共识阶段,所有不同的节点都需要就执行的最终结果达成一致。EXM的惰性评估合约保证了双方就结果达成一致所需的相同去中心化和信任,但不需要基于节点的执行,而是最终用户可以在需要时运行它。

惰性评估:如果智能合约的源代码和交易都保存在Arweave中,执行程序软件可以获取代码和交易并对其进行解释。就像一台获取代码并将其转换为机器代码的机器一样,该执行器可以获取永久信息并将其转换为软件。

可验证计算:它允许通过中心化使用智能合约来实现软件和数据的去中心化。这意味着,可验证计算可以被视为具有最终输出的集中式管道,从而实现完全去中心化。之所以给出“可验证计算”的名称,是因为集中管道中发生的任何事情都可以在历史的任何时间点由最终用户验证。这本质上允许利用中心化系统的优势,同时仍然保证去中心化的结果,这样,dApps 可以达到任何级别的可扩展性,并且网络停止或不良行为者的可能性为 0%,并且交互和可维护性的成本要低得多.

主要思想是智能合约的状态可以存储在中央服务器中,这允许更高的性能,因为在处理时不需要达成共识,但合约应该始终能够被任何用户延迟评估。

工作机制:

  • Executor:能够执行最新发送的交易并且能够通过惰性评估来回复交易的软件。
  • 处理器:负责接收单个或多个用户交易的集中式管道(系统)。在收到发送的不同批量交易后,处理器必须使用新数据重新评估智能合约。
    • 收到交易后,智能合约的最新状态必须升级并保存,以便用户访问。
    • 处理器负责对事务进行排序,通常按时间戳排序。
  • 传送带:在基于数据的区块链之间建立桥梁的集中式系统。
    • 处理器收到的所有交易都必须发送到传送带,传送带将保证将这些操作成功存储在像 Arweave 这样的基于数据的区块链中。

执行器、处理器和传送器实现后,只要遵守以下规则,就可以进行可验证计算:

  • 智能合约的源代码必须与执行者兼容,并且必须存储在基于数据的区块链中。
  • 智能合约必须以一种随着时间的推移完全确定的方式编写。

通过将智能合约的源代码存储在区块链中以及通过处理器发送给它并随后由传送带存储的交易,最终用户现在能够懒惰地评估最初在集中处理的数据系统。这样一来,中心化系统不再拥有也不代表真相的来源,因为他们所服务的智能合约状态的版本总是可以被验证和证明是错误的。

6.3 SCP基于存储的共识范式

<!--StartFragment-->

<!--EndFragment-->

在新范式中,区块链只需要确保存储在其上的数据的可用性和最终性,整个计算过程都转移到了链下。假设如果函数的所有输入都保持不变,则输出将始终相同。以z = x + y为例。如果xy的输入值分别为 1 和 2 并记录在链上,则z的输出值无论在何处计算函数,都将始终为 3。只要程序的所有参数都被确定性地记录下来,无论程序是否在链上运行,输出都是不变的。换句话说,该程序实际上可以由任何人在链下的任何地方运行。鉴于计算过程与链完全解耦,参数完全依赖于确定性存储。所以它被称为基于存储的计算范式。 图11:SCP流程示意图

如上所示,我们可以编写一个程序并将其代码上传到区块链(区块高度为102)。任何人都可以从区块链下载代码并在链下运行程序。而程序的输入和输出都来自于区块链,它起到了磁带的作用。由于区块链的可追溯性和不变性,链下程序的输入和输出与链上程序的输入和输出相同。也就是说,以区块链的确定性参数作为输入,程序生成的状态也是确定性的。

在基于存储的计算范式中,程序的源代码、输入和输出存储在区块链上。当您使用来自区块链的可信代码运行程序进行链下计算时,只要输入是来自链的可信参数,输出就必须一致。换句话说,任何人都可以运行程序,并且输出是一致的,这样计算是可信的。

基于存储的计算范式具有以下优点:

  1. 它支持任意复杂度的计算。计算能力取决于链下机器的性能;
  2. 它通过分离存储和计算来降低共识成本。计算成本将由应用程序运营商(即离线计算机)承担;
  3. 它具有可组合性和分片能力。应用运营商可以根据自己的需求下载数据。当多个应用程序相互组合时,运营商只需要下载这些应用程序的数据,而不需要下载所有数据(例如,一个 DApp 必须在整个 GETH 客户端上运行);
  4. 它具有出色的可扩展性。一方面,较低的共识成本增加了可扩展性。另一方面,除了下载分片之外,该范例还支持上传分片。因此,性能仅受网络带宽的限制;
  5. 它对编程语言没有要求。你只需要预先将目标程序的源代码和所有输入的序列化上传到区块链。

    7、附录

7.1 关系

区块纺、SPoRA和状态记忆的关系:通过blockweave、SPoRA和状态记忆的设计,矿工不需要同步所有的块,同时会主动同步稀有块数据,保证平均存储数据数量保持一致。

  • 传统区块链的全节点需要 下载所有的数据,比较浪费资源。
  • 原来的Arweave是矿工自发的下载稀有数据,这意味着部分数据可能被矿工遗漏,从而导致数据丢失或部分数据过度存储的问题。
  • 现在的Arweave是代表矿工主动下载稀有数据从而达到数据存储的平衡,数据的具有相同的副本数,在避免资源浪费的同时最大限度地保证了数据存储的安全性。

Blockweave和Permaweb的关系:

  1. Blockweave是Permaweb的底层数据结构.
  2. Permaweb是一组驻留在blockweave上的数据、网站和去中心化应用,可以通过普通Web浏览器访问.

    7.2 块数据结构

    交易 零到多个交易的列表
    块尺寸 交易数据的字节数总和
    时间戳 十进制的Unix时间戳,表示开采区块的开始时间
    奖励地址 最多32个字节。如果它与前一个区块的电子钱包列表中的某地址匹配,则该地址获得奖励
    前一个区块 前一个区块的独立哈希
    高度 此块在区块纺中的序号,从零开始
    区块纺尺寸 此区块尺寸与前一块的区块纺尺寸之和
    存储基金 基金金额,以Winston为单位
    哈希列表 从前一块到创世块的全部独立哈希列表
    哈希列表默克尔根 前一块的的哈希列表梅克尔根+前一块的独立哈希,取SHA-384散列计算结果。对于创世块,该值为空。基本上这就是从创世块到前一块的完全不平衡默克尔树的根
    钱包列表 所有曾经收到过AR的钱包的列表,即执行本块交易后的全部活跃钱包。该列表按钱包地址排序
    块数据段 串接一些内容的SHA-384散列结果
    非独立哈希 块数据段+Nonce的SHA-384散列结果
    Nonce PoW寻找合适的Nonce,以产生符合难度标准的非独立哈希,最大512字节
    难度 PoW哈希必须大于的数字。该值是从前一个块继承而来,除非本块是难度调整块,则难度根据目标出块时间与实际出块时间之间的比例增加或减少
    最后难度调整 最后一次难度调整的时间戳。如果本块是难度调整块,则该值应为本块的时间戳
    累积难度 本分叉前面区块的尝试散列计算预期次数的汇总
    独立哈希 对一些内容的深度哈希
    序列化表示形式 一些内容的串联
  • 钱包列表: <!--StartFragment-->

<!--EndFragment-->

  • 块数据段(一些内容):

<!--StartFragment-->

<!--EndFragment-->

  • 独立哈希(一些内容): -<!--StartFragment-->

<!--EndFragment-->

  • 序列化表示形式(一些内容): <!--StartFragment-->

<!--EndFragment-->

7.3 区块影数据结构

区块影是完整区块的精简版,精简掉的数据可以从其他数据中重建。与完整区块相比,区块影极小,便于在网络中的节点之间快速低成本地传播。 区块影与完整区块的区别是:

  • 交易:区块影只包含交易ID列表。当区块影通过网络传播,接收到的节点很可能已经在内存池保存了交易,从而可以从交易ID列表重建完整的交易列表。

  • 哈希列表:哈希列表被精简为仅包含前50个条目。可以从前一个完整区块获取哈希列表,在前面加上前一个块的独立哈希,来重建完整的哈希列表。

  • 钱包列表:不包含钱包列表。可以通过前一个完整区块的钱包列表和本区块的交易来重建完整的钱包列表。

    7.4 交易数据结构

    数据 介于0到10,485,760字节之间的任意数据
    发起者 签署此交易的RSA密钥对的公钥
    金额 发送到另一个钱包的AR数量,以Winston为单位
    目标 指定的AR收款人的钱包地址,不能对有效性进行验证。最多32个字节
    奖励 发起者向存储基金支付的AR数量,以Winston为单位
    标签 任意数量的标签,其中序列化表示最多2048个字节
    交易锚点 交易发起者的上一笔已打包交易的ID,或者最近50个块之一的独立哈希,第一笔交易该值为空;
    签名数据段 将一些字段按顺序串联
    签名 签名数据段的RSA-SHA256签名,使用发起者RSA密钥对
    ID 签名的SHA-256散列结果
    序列化表示形式 将一些内容串联
  • 标签:

<!--StartFragment-->

<!--EndFragment-->

  • 签名数据段(一些内容):

<!--StartFragment-->

<!--EndFragment-->

  • 序列化表示形式(一些内容):

<!--StartFragment-->

<!--EndFragment-->

关于 PermaDAO:Website | Twitter | Telegram | DiscordMediumYoutube

0.png

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
PermaDAO
PermaDAO
0x40F9...8718
Arweave 生态系统的共建者 DAO。 @ArweaveEco will be adopted by more developers. All projects of Arweave ecology can post their tasks and rewards here. @everVisionHQ@permaswap@ArweaveSCP