美文网首页
对存储量证明(Proof of Storage)的简单理解

对存储量证明(Proof of Storage)的简单理解

作者: Buffalo_Lv | 来源:发表于2018-06-24 13:08 被阅读97次

存储量证明(Proof of Storage, PoS)和工作量证明(Proof of Work, PoW)相比较而言,都是对某个问题进行计算求解,只是需要的计算资源不一样。工作量证明需要计算设备极其快速的执行计算步骤,才更有可能优先得出正确答案。而存储量证明则要求计算设备投入使用大量的存储空间才能完成计算任务。

存储量证明和权益证明(Proof of Stake)的缩写相同,注意根据上下文进行区分。有时候存储量证明也被称为(Proof of Capacity),但这又可能和(Proof of Concept)的缩写相同,同样需要注意区分。

PoW因消耗大量能源进行“看似无意义”的计算而备受诟病,若能开发出一些PoS算法能够做到和PoW一样简单高效,那么PoS就可能会战胜PoW,更好地推动区块链技术的升级。因为运行PoS的区块链系统需要投入的存储设备是可以循法使用的,正如磁带存储听起来似乎有些落伍了,但其仍然是海量数据备份的首选存储介质。PoW消耗掉能源之后,只留下了难以磨灭的哈希印记,能源无法在被循环使用,专用ASIC矿机被新品替代后,也没什么利用价值了。

这里举一个非常简单的PoS例子:Alice循环生成8192个256bit的随机数,一边生成一边通过网络发送给Bob,然后要求Bob按照相反的顺序再发送回来,即:先收到的随机数后发送,后收到的随机数先发送,这是典型的后进先出模式,堆栈式存储结构。Bob必须拥有8192*256个比特位存储容量,否则Bob无法按照相反的顺序将数据返回给Alice。

这个例子虽然简单易懂,但是缺点是要求Alice也得存储记忆等量的数据才能进行验证。因此可以做一次改进:

Alice循环生成8192个256bit的随机数,一边生成一边通过网络发送给Bob,然而Alice只随机挑选了16个随机数及其序号,并记下来,并要求Bob按照相反的顺序将数据发送返回。对于Alice,只需要16*256比特位的存储空间可以完成验证任务,而对于Bob,却需要8192*256个比特位存储空间才能完成证明任务。Alice还可以将这16个随机数有序拼接起来求出Hash值,和16个随机数的序号一起保存起来,然后发送序号给Bob,并要求其计算Hash值并返回,这样也可以验证Bob是否拥有8192*256个比特位存储空间。

但这个改进后的方案仍然需要消耗很多通信资源和通信时间。更专业的PoS算法已经被开发出来了,以降低通信要求,并提供更有效的证明与验证手段。这些算法的套路一般为:Alice给Bob发送或约定一个难题,而这个难题需要某个阀值以上的存储空间才能计算出来(memory-hard function,MHF),这样就实现了存储量证明的目的。而且出现了分别针对临时存储(比如内存)和持久存储(比如硬盘)的(proof of transient space ,PoTS)和(proof of persistent space,PoPS)。MHF的一个典型例子是Balloon Hash算法。

当计算节点A、B、C...共用同一个存储设备时,如何区分他们的身份呢?PoW可以防止女巫攻击(计算节点大量复制),PoS似乎难以做到这一点,也许可以要求不同的节点提供不同的证明数据,以避免存储空间的复用。

相关文章

网友评论

      本文标题:对存储量证明(Proof of Storage)的简单理解

      本文链接:https://www.haomeiwen.com/subject/nrgjyftx.html