欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在Swarm存储数据

程序员文章站 2024-03-12 11:08:38
...

在Swarm存储数据

保持Swarm数据活跃

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

节点钱包充值

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

curl -XPOST "http://localhost:1635/chequebook/withdraw/?amount=1000"

购买邮票包

邮票是分组/批产生的,这样存储节点可以根据本地信息计算数据块上的邮票的有效性。也可以保证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重新上传内容。