一、存储成本和挖矿奖励
1.1 永久数据存储的成本
由于 Arweave 的核心功能是为其用户提供永久存储,因此必须定义这种存储的定价机制。
作为计算永久存储一份数据的成本的前提,我们必须首先定义单个时间段的数据存储成本:
自数字数据存储技术诞生以来,商用存储介质的 GBh 成本一直在大幅下降(见图 1)。在过去 50 年中,GBh成本的年均下降率为 30.57%。
仔细而保守地推断数据存储成本下降的模式,为无限期的数据存储提供有限的成本提供了机会。
永久存储的成本可以建模为随时间下降的存储成本的无限总和:
交易定价
与上述成本模型一致,Arweave 协议采用了存储捐赠机制。该机制允许网络随着时间的推移向矿工分发适当数量的代币,以持续激励永久存储任意数量的数据。
Arweave 网络中的交易定价由两个部分组成:对永久存储成本的高度保守估计,以及即时发布的交易奖励,以激励矿工接受新交易进入新区块。
1.2 交易定价
与上述成本模型一致,Arweave 协议采用了存储捐赠机制。该机制允许网络随着时间的推移向矿工分发适当数量的代币,以持续激励永久存储任意数量的数据。
Arweave 网络中的交易定价由两个部分组成:对永久存储成本的高度保守估计,以及即时发布的交易奖励,以激励矿工接受新交易进入新区块。
交易定价计算如下:
1.3 储存禀赋
为了使 Arweave 挖矿能够长期保持盈利和可持续性,必须遵循以下基本原则:网络在任何给定区块发出的奖励必须大于维持该区块编织所需的总价值支出。具体来说:
虽然这一限制可以通过持续从捐赠基金中释放代币来自然满足(假设法定代币价格稳定且PGBB预测准确),但当矿工已经通过其他方式超越盈利能力时,协议会避免释放捐赠基金代币。这种机制进一步加强了网络的经济稳定性,以抵御代币价格和存储介质价格的波动。为了实现这种稳定效果,挖矿奖励机制仅在维持区块编织所需的价值支出超过通胀区块奖励和即时释放的交易费用所释放的价值的情况下才从捐赠基金中扣除。
矿工生产一个区块的奖励由三部分组成:
Rfees是挖出一个区块的所有交易所收取的TXfee金额总和:
每个区块的通胀奖励都是预先定义的,并以仅取决于区块高度的速率逐渐减少,如下所示:
如上所述,只有在Rinflation和Rrewards不超过网络在区块期间维持其存储负担的成本的情况下,从捐赠中获取的数量才为非零。鉴于存储相对于哈希的成本极低,存储负担可能不会达到矿工需要从捐赠中获取的程度,直到永久网络比当前的“表面网络”大很多倍(根据互联网档案馆年度网络抓取的大小估计)。这意味着存储捐赠将获得大量的代币“浮动”(可能在数年内积累),然后才需要在实践中定期使用它。
从捐赠基金中提取的代币总数按以下方式计算:
Prop函数从捐赠中获取基本奖励,并使其与挖掘新区块所需的召回区块的大小成比例,相对于 Arweave 网络中区块的平均大小。这确保了在单个区块明显大于或小于其他区块的情况下,矿工能够获得适当的激励,以均匀地将数据存储在网络中。
最后,可以计算出要转移到下一个区块的捐赠:
1.4 总结
如上存储成本分析,以及经济学设计中,存储成本持续下降是重要的前提。这可以通过一系列数据以及技术分析可以得知,这在很长一段时间内都将会是正确的。存储成本的下降比率称为Kryder Rate。
在AR中,使用Kryder + 模型,它考虑了一些其他因素:多副本成本,电力,及运营成本。这些成本与存储成本类似,也会是按比例下降的,只不过参数有些不同。AR通过向用户收取 200 年存储成本来达到永久存储,因为那之后的存储成本,预估可以接近0.
二、存储价格的稳定
用户以AR支付存储费用,但AR的价格是浮动的,因此AR采取一种措施,让存储价格能稳定在法币上。
三个因素影响存储成本:
- 正在存储的数据大小
- 目前永久存储 1 GB 数据的法定成本
- AR(Arweave 的原生代币)的法定价格
注:费用公式考虑到了 AR 价格波动,因此将其稳定为法定货币。AR 价格的通货膨胀和通货紧缩不会对存储价格产生任何影响。
为了确定 AR 的法定价值,Arweave 使用代理措施,而不是依赖外部预言机 - 它根据以下因素估计代币的价值:
- 基线:AR在历史特定时刻的参考价格。
- 变化:AR 奖励相对于基线的相对变化。
AR 奖励的变化本身取决于两件事:
- 网络难度(直接关系):难度增加意味着更多矿工有动力参与生态系统——这是AR价格上涨的信号。
- 通货膨胀奖励(反比关系):随着通货膨胀奖励减少,AR 的价格应该上涨,以跟上采矿成本。
一堆代码和计算后…
注意上面的Priceusd是美元的价格,也就是AR价格的倒数。例子:
- 网络难度:如果网络难度增加 2 倍,上面计算的值会减少一半,AR 的估计值会增加一倍(因为越来越多的矿工发现网络挖矿利润丰厚)
- 通货膨胀奖励:如果通货膨胀奖励减少到初始奖励的1/4,则上面的计算值按比例减少(4x),AR的预估价格翻倍
反之亦然。
请注意,存储成本不取决于AR的价格,而是取决于随着时间的推移矿工支付的实际价值!这意味着,如果出于某种原因,美元购买力增加,分配给矿工的 AR 数量将超过必要的数量,导致更多矿工涌入系统,并随后调整该机制对 AR 代币价格的估计。
上述价格稳定机制依赖于几个假设:
- Arweave 挖矿的市场是高效的。这意味着 AR 价格的所有变化都会很快被矿工利用。这个假设可能过于理想化,因为它没有考虑 AR 挖矿的复杂性、时间滞后和进入壁垒。
- 通货膨胀奖励是挖矿奖励的当前主要部分,因此通货膨胀奖励与 AR 价格之间是互惠的关系。实际上,虽然通货膨胀奖励目前占矿工总奖励的很大一部分,但由于通货膨胀时间表,它们将逐渐形成较小的部分。考虑到这一点,在未来的更新中,协议将根据分配给矿工的全部奖励(而不仅仅是通货膨胀部分)来稳定价格。
三、出块
AR出块的目标是尽可能增加对数据的复制副本。在挖矿过程中,会产生大量简洁随机存取证明Succinct Proofs of Random Access (SPoRAs)。具体参考 https://github.com/ArweaveTeam/arweave-standards/blob/ans-103/ans/ANS-103.md
前提:
- 机制的核心是要连续读取历史数据块,每个数据块都有个offset,所有的数据都能够通过offset被索引到。
- 共识机制需要一种确定性但不可预测的方式来选择候选块作为挑战。选择候选块不能太容易,太容易的话,矿工就会只存那些会被选中的块。这里使用RandomX算法。
算法:
每个块都唯一地定义一个搜索空间 [0, weave size at a certain block (Search Space Upper Bound)],目前默认搜索空间是所有数据的10%。
- 生成随机数nonce,使用RandomX,计算出Merkle tree的hash的hash(Hash 0),这个merkle tree包括当前状态,待选区块,nonce。
- 通过H0,上一个块的hash(PrevH),和搜索空间边界,计算出唯一的recall byte。
- 搜索本地的区块,寻找包含这个recall byte的数据chunk,找不到就从a重新开始。
- 计算H0和包含recall byte的数据的块的快速hash。
- 检查这个快速hash是否比当前的链的难度值大,如果没有,就从a重新开始;如果有,就打包并发布区块。(包含Nonce和chunk)
这个chunk和包含它的块的merkle证明,被称为Succinct Proof of Random Access (or SPoRA) 。这种算法会让矿工在CPU和存储之间进行权衡,矿工存储的数据副本越多,越可能走到h。
对网络搜索空间的限制(a步骤)可以激励矿工存取那些比较冷的数据。
搜索空间(Search Space Upper Bound)的选择:
搜索空间需要足够大有两个原因:
- 使得按需下载整个搜索空间的成本过高。
- 使得通过散列来弥补数据缺失的成本过高。
另一方面,搜索空间需要足够小,以激励矿工复制较稀有的数据,这将使他们比在相应区块上复制较少相应区域的矿工更有优势。
当前搜索空间大小为数据的 10%。在这种情况下,10% 的矿工在网络中存储独特的 10% 的数据,而每个人都存储 90% 的数据,其效率大约是其他矿工的 1.2 倍。它适用于计算 RandomX 哈希所需的时间与查找块所需的时间的各种比率。