深圳市龙华区振华时代广场10整层
18165737729

存储节点有哪些操作协议?

存储节点的4类操作协议,包括添加担保品、接受订单、密封数据片段及提供存储证明。

1.添加担保品

存储矿工在进行存储交易之前,必须先在区块链上存放担保品,矿工通过调用Manage.PledgeSector担保。这样做的目的是防止矿工恶意接受订单,造成用户数据丢失,或不能正常提供服务。担保品的抵押时限是提供服务的时间。如果矿工为他们存储的数据生成存储证明,这部分抵押品就会返还给用户;如果存储证明失败了,就会扣除一定数量的抵押品作为惩罚,并将其作为用户的补偿。

Manage.PledgeSector是这一操作的接口,它的输入为当前配置表、抵押资产Pledge。执行PledgeSector后,会生成一条抵押交易提交到区块链账本,交易金额与抵押金额相同。交易信息和抵押资产一并添加至AllocTable中。输出为更新后的AllocTable。

2.接受订单
存储节点会向存储市场和区块链提交报价单,订单成交后,成交单会提交到区块链确认。用户则开始发送自己的文件数据,存储矿工接收到数据,运行Put.ReceivePiece。数据被接收完之后,矿工和用户签收订单并将其提交到区块链。

存储节点接受订单的流程:提交存储订单到区块链 Put.AddOrders ;匹配订单Put.MatchOrders;接收文件片段Put.ReceivePiece。AddOrders和 MatchOrders都与用户执行操作相同。

Put.ReceivePiece用于接收存储矿工的存储数据,其输入参数有矿工签名密钥、订单簿、报价单、出价单及数据片段。调用该方法后,DSN会首先检查出价单的合法性,随后存储文件,同时生成成交单,并将存储文件指纹放入成交单中。出价单获取用户的身份,将成交单发给用户。

3.密封数据片段
存储空间被分为多个扇区,并存放DSN传来的数据片段。网络通过分配表来跟踪每个存储矿工的扇区。当某个存储矿工的扇区填满了,这个扇区就被密封起来。这一操作需要一定的时间,对应存储证明部分的Setup操作。将扇区中的数据转换成为唯一且独立的副本,然后将数据的唯一物理副本与存储矿工的公钥相关联。密封的目的是,给存储证明设置一些难度,防止矿工进行存储攻击。密封的时间会远长于挑战过程给定的时间。只有密封并且保存独立副本的矿工,才能通过挑战;而期望使用一个副本来接收多个订单的矿工不能通过挑战,无法按时生成存储证明。

Manage.SealSector为密封函数,它的输人为矿工密钥、扇区序号,以及当前分配表。其过程如下:现在矿工希望对S扇区进行扇区的密封。首先,我们找到全部的文件片段;接着,我们对文件片段进行可验证时延加密(加密时间长,解密时间短)。其输出该扇区的存储证明,调用时空证明setup操作。

4.证明
当矿工分配好数据后,矿工需要持续生成存储证明,以确保他们没有在两次提交证明之间丢失了数据。生成的存储证明会同步到区块链上,由网络验证。Manage.ProveSector函数为生成某一扇区的存储证明,其输入为矿工的密钥、扇区序号,以及由验证者提供的挑战。该过程调用后,生成这一扇区的时空证明。生成时空证明时使用的是可验证时延加密的证明函数。输出为时空证明。