天天看点

在Swarm存储数据在Swarm存储数据

在Swarm存储数据

保持Swarm数据活跃

Swarm中包括了网络中所有节点的所有存储空间,也叫做DISC(分布式不可更改存储数据块)。只有数据块上邮票的拥有者节点具有写权限。

节点钱包充值

要启动Bee节点,你应该已经提供了相应数量的gETH(用作gas费用)和gBZZ(用作跟其它节点交换数据)。这些会在你的节点第一次启动的时候转入到节点对应的支票地址。为了购买邮票包,你就需要给你的钱包充入gBZZ。最简单的方法就是直接从你的支票本中提现。

购买邮票包

邮票是分组/批产生的,这样存储节点可以根据本地信息计算数据块上的邮票的有效性。也可以保证Swarm中数据的隐私性。

整个swarm地址空间被分成2^16也就是65536个不同的数据桶(bucket),数据桶的深度为16。然后在数据桶中创建邮票包。上传以后,每个文件会被拆分成许多大小4kb的数据区块(chunk),然后分配到某个数据桶。

创建邮票包时需要指定两个值,深度和数量。

数量

表示邮票包代表的gBZZ数量。购买整个邮票包需要支付的gBZZ会根据数量和邮票包深度来计算。

支付数量形成了当前邮票包的余额。余额会随着时间和数据块在Goerli区块链中的使用逐渐减少。

深度

邮票包的深度定义了每个数据桶可以分配的数据块(chunk)数量。每个数据桶中的数据块数量 =

2^(batch depth - bucket depth) = 2^(batch depth - 16)

.

邮票包深度和数量的计算

邮票是Swarm中最新引入的功能,主要考虑如何更好的使用邮票包,还处于早起概念阶段。

现在,开始上传内容的最简单方法就是购买一个足够大的邮票包。否则,邮票包不够大,就会出现大量的数据块被分配到同一个数据桶的情况。

具体的数量取决于你想要在swarm中保存数据的时长。由于价格是波动的,很难准确预测你的数据块会用完所有余额;然而可以根据当前价格和剩余金额来大概估算。

就当前情况,我们建议你为邮票包设置深度为20,至少10000000数量。这应该可以让你上传相当一些数据,并且保证在可见的将来这些文件一直保存在Swarm中。

注意:当购买邮票时,默认你已经同意从账户中扣除相应数量的gBZZ。尽管你的账户余额会随着时间逐渐减少,邮票包中的gBZZ是无法退回的。这也是Swarm分布式设计思想的结果,具体参考Swarm白皮书。

curl -s -XPOST http://localhost:1633/stamps/10000000/20
           

购买了邮票包后,其它Bee节点需要同步并且注册相应的邮票包。取决于网络状况,这个同步过程可能需要几分钟时间 。

计算邮票包余额

你的邮票包需要保持足够的余额,以便其它Bee节点依据“邻里规范”为你的数据提供存储和服务。因此你需要定期检查余额,并根据需要充值。

curl localhost:1635/chainstate
           

以上命令会显示当前单个数据块的价格(单位GPLUR, GBZZ的最小单位)。

很快,信息也会加入到你的账户总票据信息中。当前这个阶段,你需要针对每个新创建的邮票包ID重新上传内容。

继续阅读