目前几款硬盘币都有使用POC共识机制,Burst、BTCHD的硬盘矿机使用POC2进行挖矿计算。
POC 是一种利用本地计算机硬盘驱动器里的闲置空间来进行挖矿的共识算法。大部分加密货币目前要么使用 POW 工作量证明机制,要么使用 POS 权益证明机制,不过也有使用 POC 作为共识机制的币种,比如:Burstcoin 。
优点:
它类似于 PoW,只是使用空间替代了计算。因此更加环境友好。
可用于恶意软件检测。通过确定处理器的 L1 缓存是否为空(例如,具有足够空间在没有缓存未命中的情况下计算 PoSpace 过程),或是包含一个拒绝被逐出(evicted)的例程。
可用于反垃圾邮件措施,以及防范拒绝服务(DoS)攻击。
不足:
激励机制可能存在问题。
目前 proof of capacity 存的 plot 文件都是一些没什么用处的信息和数据,除了用来挖矿,就毫无用途。
使用者
Burstcoin、BTCHD、Chia、SpaceMint。
类型:协同型共识
解释:PoSpace,也称为 PoC,通过分配一定数量的内存或磁盘空间用于解决服务提供者所提供挑战的方式,显示了某个人对某个服务(例如发送邮件)具有合法的兴趣。该理念是由 Dziembowski 等在 2015 年形式化定义的。虽然 Ateniese 等人的论文名称也是“Proof-of-space”,但它事实上一种采用 MHF(Memory Hard Function,一种计算代价取决内存的哈希算法)的 PoW 协议。
PoSpace 非常类似于 PoW,只是使用存储替代了 Pow 中的计算。PoSpace 与 MHF 和可回收性证明(PoR,Proof of Retrievability)有关,但也在很大程度上存在着差异。
PoSpace 是由证明者 (Prover) 发送给验证者 (Verifier) 的一小块数据,该数据确认了证明者已经保留了一定量的空间。出于实用性上的考虑,验证过程需要尽量高效,即消耗尽可能少的空间和时间。出于公平性上的考虑,如果验证者没有保留所声明数量的空间,那么它应该难以通过验证。PoSpace 的一种实现方式是通过使用一个难以实现 Pebbling 的图。验证者请求证明者构建对一个“非 Pebbling 图”标记。证明者提交标记,进而验证者请求证明者在提交中开放多个随机位置。
POC 和 POSAT 里的空间证明机制本质上没有太大的区别。
POC 和 POW 一样,都需要利用到哈希函数的功能。
如果你了解过比特币,哈希函数应该很好理解。简单来说,哈希就是把输入转换成一串特定 ID 的过程,而且,这个过程是不可逆的。
比如,如果你用的是比特币的 SHA-256 哈希函数,输入“dog”这个单词,就会输出:
cd6357efdd966de8c0cb2f876cc89ec74ce35f0968e11743987084bd42fb8944
但如果你把这个单词稍微改成“doge”, 那么哈希的结果就会变成:
c4e793c81ee40370d827d0cbe748d246cffca2cbe959383edf0976d041ece9e5
因为输入不同,两个输出也完全不同。最重要的是,你没有办法从输出的这串数字里面推导破解出原始的输入值。
Proof of Work
POW 和 POC 非常相似。但是,POW 非常消耗算力和电力资源,同时你时不时就要对挖矿的设备进行升级和修复。
POW 的原理简单
矿工首先把自己处理的交易打包到区块里面;
区块里面所有的数据,包括上一个区块的哈希值,必须经过一个哈希函数的运算,生成新的哈希值,这个新的哈希值同时必须满足某个条件,比如前 30 位的数字为 0 ;
矿工们不停地改变区块头的某个数字,生成新的哈希值,然后看它是不是符合前 30 位数字为零的条件。因为哈希函数是不可逆的,你只能一直换数字不停的猜。这个猜数字的过程就是挖矿;
如果你能猜到正确的那个数字,就代表你的确付出了不少算力,这个数字就是你的工作量证明。而拥有更多算力的人显然能更快的穷举数字,也就能更快地算出正确的哈希值;
最终,最快算出来的那个矿工,把正确答案广播给网络里的其他矿工节点,其他节点验证是不是正确答案,是的话,交易就生效了,矿工获得比特币奖励,交易数据打包写入区块中,然后继续向下一个区块出发。
Proof of Capacity 简要概述
相比 POW 不停改变区块头的某个数字来猜测正确的哈希值,POC 把你猜数字的工作量变成了硬盘空间里的“测绘”(plotting)的工作量。每个区块都会绑定一个专属的“谜题”,在挖矿还没开始前,网络就会把破解这个谜题的计算方法(solutions)储存在你的硬盘空间里。这些计算方法有的比较快,有的比较慢,如果你的硬盘里恰好有一个计算方法,是目前最近产生的这个区块里的谜题所对应的“最快解”,那么你就赢得了这个区块的记账权——挖矿的奖励就是你的了。
POC 背后真正的挖矿算法,如果要实时计算的话是非常复杂的,而产生一个区块的时间又太短(平均每 4 分钟产生一个新的区块),因此这种挖矿的计算方法必须提前存储在硬盘驱动器的空间里。最终,如果你在硬盘空间里拥有越多的计算方法(也被称为plots),你用最快的速度去破解当前这个区块的谜题,实现的概率也就越大。
Proof of Capacity 的一个类比
想象“你的硬盘空间里塞满了一大堆的彩票,当彩票生成一个随机数字开奖的时候,你就在硬盘里找和这个随机数字最接近的那一张”。如果你有数字最接近的那一张,那么你就中奖了。这大概就是 POC 一个基本原理的类比。而使用这种机制最好的一点是:你可以在不同次的抽奖过程中连续使用同一块硬盘。你不需要额外消耗些什么。
Proof of Capacity 技术概述
POC 包括两个部分:
硬盘空间里的测绘(plotting)
背后真正的挖矿过程
根据你的硬盘空间的大小,需要花费数天或者数周的时间才能生成你独特的测绘(plot)文件。测绘 Plotting 使用的是一种很慢的哈希函数,名叫 Shabal ,它和比特币使用的 SHA-256 哈希函数不同。因为 Shabal 哈希非常难计算,我们需要对它进行“预计算”(precompute),然后把结果存储在硬盘空间里。这个过程就叫做测绘,Plotting 。
Plotting
当你在 Plotting 的时候,也就是为你的硬盘空间创建 plot 文件,你同时会创建一个叫做nonces 的东西。nonces 是通过数据不停重复哈希产生的,这些数据包括你的账户 ID 等等。如果你为 Plotting 分配越多的硬盘空间,那么你就能存储越多的nonces 。一个nonces 最终会包括 8192 个哈希表。这 8192 个哈希表是成对出现的,每对被称为 scoop 。每个 scoop 会被分配一个从 0 到 4095 的标号数字。
在挖矿过程中,你从 0 到 4095 计算每个 scoop 的标号数字。我们假设你最终算出的数字是 42 ,那么你就要去编号为 42 的 scoop 里取出它里面的数据,利用这个数据计算出一个时间,这个时间被称为 deadline 。重复上面的过程,直到每个 scoop 都被你计算过一遍,你再从所有计算出的 deadline 里面,硬盘矿机是支持通过共享硬盘存储空间来挖矿的挖矿设备。 不同于普通电脑,硬盘矿机是通过多张高容量硬盘,定制化、高兼容的机箱,以及专业的矿机架等专门针对挖矿需求,硬盘矿机极具扩展性,能针对不同的存储类虚拟货币运行不同的算法,做到一机多用。在比特币矿机更新换代速度日益放缓且投资回报日渐下降的今天,硬盘矿机不失为更好的区块链行业投资选择。贝特曼BT24 硬盘挖矿机(IPFS硬盘矿机),适用于各种POC虚拟货币挖矿,IPFS挖矿,功耗低、噪音小、杜绝ASIC芯片、实现人人挖矿,满足了众多消费者的需求,咨询V:Bit-miner。
找出代表最短时间的、数值最小的那个 deadline 。这个 deadline 就代表了“自从上一个区块被生成之后,到你生成下一个区块之前,系统必须等待的时间长度(多少秒)。如果在这个时间长度里面,没有人生成下一个区块,那么你就获得了生成一个区块的权利,挖矿的奖励也就归你了”。
最后
Proof of Capacity 对经典的 POW 工作量证明机制来说,是一种非常有趣的共识算法的尝试。它旨在增强更多的去中心化的矿工节点,同时减少更多的电力算力资源的浪费。当然,目前这种新的共识算法还没有经过实践的检验,只有时间能够告诉我们 Proof of Capacity 在共识算法里面最终能达到一个什么样的位置。
(完)
作者:Paul Andrew
翻译:Retric