介绍
以往人们托管数据通常有两种方式:自我托管和上传到可信的第三方机器上托管。就第三方托管而言,我们之所以相信托管方(托管方通常是公司),主要依靠的是托管方的长期运营在客户中所积累的口碑和信誉。而对于用户自己托管,则要求用户的计算机始终保持在线,这往往是不切实际的。
如今,人们对数据存储有了另一种行之有效的方法,即去中心化存储,换言之,数据将存储在陌生人的电脑上。要让这一存储模式正常运转,就必须要采取相应的激励机制:一方面要防止过量数据的上传而占满整个存储空间;另一方面又要鼓励人们提供自己的存储空间。 显然,提供存储空间是有成本的。因此,上传者(Uploader)要付费,存储节点(Storer)要收费,这样系统才能自我维系,良性发展。
去中心化存储方案与之前提及的用户自我托管和第三方中心化托管方式形成了鲜明的对比。中心化托管方(如 Dropbox)能够识别上传者身份,对非付费用户采取限制措施。而在自我托管中(如 bittorrent,也称 BT 种子),做种者(Seeder)需要自己承担存储内容的成本,但却得不到相应的好处。如果种子内容颇受欢迎,那么其他人也可能会加入到做种行列,而这种共享行为模式往往靠的是大公无私的心态。然而,由于做种共享行为是自愿的,所以并没有一种激励机制来防止他人滥用做种者的存储空间。
在 Swarm 网络中,记账的代币为 BZZ。上传者根据自身所需的存储空间大小和使用时长向存储节点支付租金。所有上传者的租金付费模式都是相同的,并通过链上租金预言机(Rent oracle)对租金做出适时调整,从而平衡存储的供需关系。
租金会以一定的机率定期重新分配给存储节点。这种分配方式与当前流行的 PoS 共识机制中的节点获得权益挖矿和交易手续费的分配方式类似。
为了参与到由上传者到存储节点的 BZZ 代币分配,存储节点必须先向智能合约存入 BZZ 作为押金,该押金不可退还。只要存储节点按照协议规则,存储应当存储的内容并记录了下来,那么他们将有机会被选中作为奖励对象。存储节点的押金占比越高,则选中的机率越大。
下面,我们将介绍关于费用支付和租金再分配的关键环节。
上传者的费用支付
在 Swarm 网络中,内容以数据块(最多 4kB)的形式上传和下载。由于为每一个数据块进行链上付费并不现实,因此对上传数据的付费是批量进行的。支付时,上传者会注册一个与他的私钥相对应的公钥,并收到一个批次 ID(Batch ID)。(注:为了防止读者混淆 chunk 和 block 的中文译名,全文如无特别说明,chunk 统一翻译为数据块,block 统一翻译为区块。)
在上传一个数据块时,上传者需要使用私钥为每个数据块、批次 ID 以及其他相关元数据一起签名。在这里,这种与元数据一起的签名被称为“邮票”(Postage Stamp),因为它与传统邮件有相似之处。邮票就是存储内容的支付凭证。在链上购买一个批次后,该批次的余额与支付的金额相等。
邮票是费用支付的单位,包含在批次中。
根据存储时长,存储租金会在相应的批次余额中按比例逐渐扣除。当余额降至 0 时,相应的批次被视为已过期,且状态变为未支付状态;存储节点可对其进行垃圾回收(Garbage collection)。
垃圾回收是协议中定义的一种操作,它会从网络中移走/删除已到期的批次内容。垃圾回收的操作在存储节点上持续进行,将未支付的内容从存储空间移至缓存中,以便腾出更多空间存储更有价值的数据。
任何持有 BZZ 的用户都可以随时对尚未到期的批次进行充值。因此,人们只需对相应批次进行充值,就能持续维护自己的数据,并不需要为此专门搭建 Swarm 节点。
存储节点的奖励
租金会定期从全网的批次金额中扣除并进入奖励池。智能合约会定期进行租金再分配。只要存储节点存储了协议分配给他的内容并做了日志记录,那么存储节点就有可能获得奖励。
要参与再分配,存储节点需要做好以下事项:
- 加入 Swarm 网络并下载协议所分配的全部数据。只有当存储节点与全网完全同步时,节点才能参与再分配。
- 向质押合约中存入押金。 当前最低质押门槛为 10BZZ。这一门槛未来可能会做调整。
- 保持在线并及时同步。 这样当新一轮租金再分配到来时,存储节点可以检查他们的邻居节点(neighborhood)(被分配存储相同内容的节点为邻居节点)是否被选中。如果被选中了,那么这些存储节点可以对自己的存储内容进行特定计算(即随机抽样)并将结果提交给再分配合约。这会先后发生在两个阶段,承诺阶段(Commit)和揭示阶段(Reveal)。因此,存储节点承诺自己的计算结果时是无法知道其他邻居节点的计算结果的。
- 当前,每一轮时长约 15 分钟。当然这个时间是可调整的。
对于正确结果达成一致的存储节点,将按照各节点的押金占比进行抽选,最终会有一个节点幸运胜出。胜出节点必须执行链上交易来领取它的奖励,奖励来自上轮的全部租金,如果上上轮的租金未被及时领取,那么这些租金会被累计到上轮一并领取,依次类推。
存储租金的再分配流程
只要储存节点不违反协议规定(例如节点做了承诺,但未能揭示结果),押金可以在未来的轮次中循环使用。如果节点违反协议规定,那它的押金会被冻结甚至部分或全部被罚没。
预期的奖励金额计算公式为
存储租金则是存储量与租金单价的乘积,租金单价由租金预言机决定:
租金预言机
每一轮,智能合约都会对支付内容的金额与提供的存储量进行比较。如果比较结果的冗余度在可接受范围内,那么租金不变。如果支付内容的金额过多,则租金上调;如果提供的存储量过多,则租金下调。
因此,如果租金对于存储节点来说过低而无法获利,那租金将会上涨;如果租金对于上传者来说过高,那租金会下降。最终租金在供需双方间达到动态平衡,租金金额所能承担的存储空间大约是实际存储内容的四倍,即四倍的存储冗余度。
可以预见的是,有相当数量的存储节点会选择云服务商,为了让这些节点能够盈利,合理的租金金额大致与云服务商费用相当,里头包含了四倍左右的存储冗余。
价格调整
即使在租金预言机运行之前,实际的存储价格也会增长。增长的金额以 PLUR 计,PLUR 是 BZZ 代币的最小单位。单价会从 4PLUR/数据块/区块(4PLUR/chunk/block)上升至固定的 24,000PLUR/数据块/区块,从而使得 Swarm 数据存储价格与中心化云服务商的价格相当。这样,储存节点能够以合理的成本向上传者提供存储服务。
价格调整将在 Phase 2 主网发布时进行,这也将是去中心化预言机取代前的最后一次手动调价。
结论
Swarm 网络目前正在运行中。随着上述机制的落地,它将自动维系存储节点与上传者之间的动态平衡,从而在经济层面实现自给自足。
与此同时,在租金预言机正式上线前,合理的固定租金应当能够激励绝大多数储存节点在无重大补贴的情况下继续运营。
接下来,我们将继续科普这一系列,讲讲租金预言机的工作原理。请订阅我们的 Medium 账号以获取第一手资讯。
近期活动
- 持续关注 Swarm 获取最新消息。11 月 24 日,在线,加入月度生态线上会议。
- 冬至活动,在线,12 月 21 日
- WAM 黑客马拉松,在线,2023 年 1 日-21 日
- Swarm 峰会,待定,2023 年 6 月 21 日
请注意,文中关于涨价的信息已在 2023 年 2 月 21 日进行了更新。之前的信息表明,价格将会提升到 6,000PLUR /数据块/区块的固定值,但信息更新后,实际价格将增加到 24,000PLUR /数据块/区块的固定值。
Discussions about Swarm can be found on Reddit.
All tech support and other channels have moved to Discord!
Please feel free to reach out via info@ethswarm.org
Join the newsletter! .