首页 资讯 正文

PoC技术分析系列(二):一文讲透PoC的前世今生

BTCHD 2019年07月05日 06:25

PoC是继PoW、PoS等共识协议后出现的又一种共识协议,目前使用PoC作为共识协议的数字货币有Burst和BHD两种,介绍PoC的资料不多,而且有的只是介绍PoC的特点,例如”硬盘挖矿“,”节约能源“,这样流于表面,有的直接介绍PoC的技术细节,让人不识庐山真面目,并没有把PoC的来龙去脉和原理讲清楚,因此本文对PoC的前世今生进行通俗而尽可能准确的讲解。

g0P4nVbJ3rnh8HvOOG0QssJ0XtcW59iUe9T0CPGe.png

共识算法作为数字货币的核心算法之一,都有很深厚的数学基础作为支撑,就像Bitcoin采用的PoW,其实并不是Bitcoin发明的,而是在其出现十多年前就已经有学者提出了,PoW之前一直用于反垃圾邮件等网络和服务攻击行为,简单的说,就是服务使用者需要提供一定的工作量证明之后才能使用服务,例如发送邮件,这样就通过增加攻击者的成本来避免无成本的恶意行为。中本聪的贡献在于将PoW用于去中心化的数字货币系统,成功的解决了双花问题。由此也可见,绝大部分创新都不是凭空出现的,都是站在前人的成绩之上做出的。作为第一个知名的采用PoC的数字货币Burst和Bitcoin非常相似(其实Burst不是第一个PoC数字货币,就像Bitcoin也不是第一个数字货币)。

PoW这类算法具备以下一些特点:

  1. 计算答案需要花费一定的时间,但是如果有人告诉你他算出答案,你来验证答案是否正确却非常非常快

  2. 计算答案没有什么快捷算法,只能一次一次的计算(ASCI只是加快了每一次的运算速度)

  3. 对于正常的用户计算答案的时间是可以接受的,例如几秒钟,但是如果一个攻击者需要发送一百万封垃圾邮件那么就需要付出非常大的成本。

或者说只要具备类似特点,也可以让服务使用者能够付出一定的成本(不一定是计算),都可以实现PoW类似的功能,其实很多网站用到的验证码也可以说是同样的算法。

PoC,即Proof-of-capacity,开始提出时称作Proof of space(PoS),而现在提PoS一般指的是Proof of stake (PoS),是在2013年左右由University of Warsaw(华沙大学)的Stefan Dziembowski等人提出。华沙大学位于波兰,听说过的人估计不多,但却是波兰最好的大学,在欧洲和世界都有一席之地。作为PoC生态中的每一个人,我们应该知道这些前辈学者。

PoC和PoW是类似的算法,它将PoW中需要付出的计算资源改为付出一定数量的存储空间。PoC的提出者们注意到用户一般都有一定数量的空闲存储空间,这样应用PoC几乎是免费的,而即使用户有空闲的CPU,但是运算需要消耗不少的电能。

PoC算法由证明者P(Prover)和验证者V(Verifier)组成,算法分成两个阶段,第一个阶段是初始化阶段,V可以随机生成一个例如100GB大小的文件发送给P进行存储,而V只需要存储这个文件的一小部分。第二阶段V需要验证P是否存储了指定的文件,V可以让P发送一个指定位置的文件片段来进行验证,这样P为了正确回答问题,必须保证整个文件,而V只需要保存一段数据即可。

在这个算法中,V在两个阶段都是很简单的,而P虽然在初始化阶段比较费劲,但是在验证阶段只需要读取一小段数据,也是很快的。但是问题是在初始阶段,V必须发送给P一个非常大的文件,这在当时的网络条件下是不可行的。但是5G已经来到,是不是又具有可行性了呢?

以上就是PoC的算法原理,和现在的过程很不一样?如果把初始化阶段调整为文件不是由V生成再发送给P,而是由P自己根据特定规则自己生成,是不是就是现在的P盘过程?而这个生成规则就是P使用一串数字进行特定运算。这串数字在Burst中就是自己的数字Account ID,在BHD中称为算力ID,其实是一回事,你可以用BHD生成的脑密码登陆Burst钱包,这也是一次P盘可以同时挖多种PoC数字货币的原因所在!

生成Plot文件

XKuRSPFqmeqCf3fGdOkOFWtdyUvpPPCjOdkuFa4j.png

而在验证过程,就是Burst/BHD的挖矿过程,矿工通过GetMingInfo接口获得下一个出块的验证要求:

6Y4P95YMoZBSzB1DgEdJ5KGtyfkS848mFgzt3Ysc.png

通过预设规则换算成文件读取位置

Scoop Number就是PoC算法原理中需要随机指定的位置

l1jrZ8gaTENsJLG9hCqC2TjXN83bNFhh79TZGSOk.png

I7kjsxZP6BSMKHfrB1PDaRKMDq2veiAkEm4e4mZx.png

矿工得到换算出的Deadline,调用SubmitNonce接口向钱包(或矿池提交答案),同时要提供Plot ID(每一次的Scoop Number是固定的),钱包在收到答案后可以通过Plot文件生成规则快速生成指定Scoop Number和Nonce的文件片段,而不必生成全部文件,从而验证你声称获得的Deadline是不是真的从你的文件中查出来的,而每一个矿工都可以独立验证最后胜出的答案有没有作弊,或者说Burst/BHD等数字货币有没有在这个环节进行造假。

通过上面的讲解,是不是和最初的PoC算法原理本质上是类似的?PoC算法还会不断发展变化,但是万变不离其宗,理解了原理就能一通百通。以上我们通俗而尽可能准确的讲解了PoC的算法原理,其实PoC是基于更复杂的数字问题:hard-to-pebble graphs,以后可以单独写一篇文章。

既然PoW/PoC等算法是基于数学问题,就可能存在针对算法本身的攻击和漏洞,PoC就存在 time-memory trade-offs(即以时间换空间)等可能的问题,需要对协议算法进行更精巧的设计,PoC协议也在不断的发展,从PoC1到PoC2,从而具有更好的安全性。

最后提一句PoC3,通过之前的讲解可以看到PoC是通过按照一定规则生成大文件来进行验证,这些文件本身并不是真正有意义的文件,如果PoC算法能够利用有意义的数据来进行验证,那就更完美了,这也是PoC3期望解决的问题,让我们一起期待PoC越来越好!

参考资料:

1, Proofs of Space,Wikipedia

2, Proofs of Space,Stefan Dziembowski

2, Burst White Paper

2, Burst Wiki

3, BHD White Paper

如果您觉得文章不错,请给作者打赏0.1BHD:32esGUrk1S3BZeux7vLkBriY4r5BCvbbZt欢迎共同探讨学习

     

大将生来胆气豪,腰横秋水雁翎刀。风吹鼍鼓山河动,电闪旌旗日月高。天上麒麟原有种,穴中蝼蚁岂能逃。太平待诏归来日,朕与将军解战袍。欲知后事如何,且听下文分解!

本文转载自AIKing(微信号:aiking2018)2019.7.2