在Swarm存储数据
在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重新上传内容。
上一篇: java String 转成Double二维数组的方法
下一篇: docker的基本操作
推荐阅读
-
Swarm加密存储
-
在Swarm存储数据
-
MemSQL 入门体验小记 博客分类: 数据-存储-交换 memsqldatabase数据库关系型数据库内存数据库
-
备份远程主机上mysql,mongodb上数据,在docker容器中导入
-
虚拟机docker中的MySQL数据库在宿主机上连接不上
-
在linux下定时备份mysql数据库
-
项目在本机上可以运行,部署到Linux上显示连接不到数据库
-
Coolite Cool Study 1 在Grid中用ComboBox 来编辑数据
-
在Action中以Struts2的方式输出JSON数据的实例
-
在asp.net(C#)中采用自定义标签和XML、XSL显示数据