写点什么

重新信仰 PoW:无币区块链和经济工作量证明

2020 年 10 月 29 日

重新信仰PoW:无币区块链和经济工作量证明

工作量证明自从区块链出现的那一天开始,就充满了争议。短短几行代码就可以实现神奇的工作量证明,解决拜占庭将军难题。但是,挖矿消耗的电量是巨大的,造成了资源浪费。人们在尝试寻找一种有用的工作量证明,比如用计算来寻找外星人,或者用来做深度学习训练。


以太坊的创始人 V 神在 2014 年写过一篇博客,列出了与区块链相关的多个密码学问题,在 5 年后也就是 2019 年,V 神又写了一篇博客来回顾 5 年内密码学的进步:其中在”有用的”工作量证明上,他悲观的评论到,有可能做不到。


我们的灵感就来源于 V 神的这篇博客,在意识到寻找有用的工作量证明是区块链世界中的难题以后,在 2020 年初新冠期间,我们发现了一种使用工作量证明的用途:用于文件的复制证明。12 年来,我们第一次的升级了中本聪的工作量证明,如果说中本聪的算法是 1.0 版本,那么我们很有可能发现了这个算法的 1.5 版本。


今天起,我们公开了 EPoW(Economic Proof of Work ),中文称之为经济的工作量证明。这使得工作量证明中所做的工作可以是有用的,用于文件的复制证明。但是绝妙之处在于,做复制工作的同时,可以产生免费的工作量证明。在研究中,除了算法本身,我们还讨论了这个算法对于区块链生态的可能影响。


点击查看相关论文https://eprint.iacr.org/2020/1117


中本聪和虚拟币最初的故事:2008 年金融泡沫时的中本聪,不管是否富有,都无法用自有的资金去支持比特币这样一个项目。使用法币来支付矿工,即使在今天也是疯狂之举。中本聪以及后来的区块链缔造者们暂时都离不开虚拟币这个选项,因为虚拟币可以一文不值,也可以价值连城。支付矿工在当时一文不值的比特币,作为回报,无异于创业公司期许给员工的期权,大概率会在几年以后一文不值。但也同样吸引了一帮疯狂的伙伴,参与到这个近乎神奇的项目中。和这个时代的其他主流商业奇迹不一样,有了虚拟币的参与,比特币不再需要风险投资。


挖矿在一开始是门槛很低的游戏,只要你愿意参与,就一定能获得比特币。越早参与,收益越高,极大了激励了早期参与者。在前两年的区块链火爆行情下,一度出现过币价一定涨的现象。不同于空气币的忽悠,比特币一定时间内持续涨价是有很有逻辑的:共识和稀缺是比特币价值的基础,成本是比特币的价格基础。比特币便宜了,矿工怎么交电费,怎么发工资?


把比特币比作郁金香泡沫,我认为是不恰当的,比特币本身没有拉人头传销现象。推动价格的是成本,而非旁氏骗局。另外,由于知名度等历史原因产生的共识,它已经成为了价值的锚定,数字黄金。


比特币固定时间的恒定产出量,跟全世界算力多还是少毫无关系。大白话就是,无论我用多少电,造多快的矿机,比特币每小时都只产出那么几个,矿工之间谁挖多了,其他人必然挖少。这是工作量证明算法被诟病的主要原因,但其实是比特币的设计问题。即使达成共识,提高单位时间产量,拥有更多可以流通的比特币,也无法解决问题。


比特币或许会走出人类历史的舞台,但是区块链应该会成为舞台。


值得思考的问题是,区块链和虚拟货币是天生不可分的吗?使用区块链的创业者,一定要把自己投身到如此高风险的金融游戏中,失败了只能跑路吗?


曾经一个区块链大佬对我说过,在这个行业混,必须有自己的币。我那时是不信的,但是之后仔细思考,我竟无法反驳?连中本聪都做不到无币区块链,有可能存在吗?


我们先理解,为什么区块链一定得有虚拟币?为了支付矿工的资源投入成本。单靠信仰让每个矿工自掏腰包挖矿,矿工们可不干。


一个电子现金系统的基石是什么?安全。没有了安全,再多奖励也只是浮云。比特币的设计之所以奖励矿工而不奖励全节点,就是在奖励为安全做工作的人。只可惜,中本聪的工作量证明,其实是算力证明,算力是否产出了实际的价值?是的,保护了比特币安全,但仅仅如此。我们戏称这样的工作量证明是磨洋工证明。


为了得到虚拟币,主动提供算力来交换,而虚拟币产量固定,这些因素必然会造成能源浪费。


在我们提出的经济工作量证明中,我们将区块链安全所需的工作量证明,变成一种副产品:“有用的”工作的副产品。这将改变区块链设计中,为了得到保护自身安全的工作量,采用虚拟币作为奖励机制。


我们提出的”有用的”工作,就是做复制证明。复制证明是区块链存储的核心算法。


区块链存储


云计算,云存储已经普及。相比我们使用本地硬盘存储数据,我们日常生活中,广泛的使用云服务,比如在线视频,音乐,都是广义的云存储。


但是,云上的数据都是由公司负责维护的,数据的安全由公司的技术团队保障。


用户和服务商之间,只有 SLA 作为保障,数据丢了,只能赔偿。用户甚至无法审计服务商的内部运作和存储格式。


链下的数据会被移动,删除。只有数据本身被区块链托管,复制,定期检查,才有可能保证数据安全。


由多方提供资源的区块链,完全解决了数据透明的问题,数据在不同服务方迁移能力是必选项。但是区块链存储也面临新的问题,就是资源提供方不一定会诚实的履行自己的承诺。一旦可以作弊来节省资源投入,很快其他人就会效仿。在区块链存储这方面,我们经常用抄作业问题来解释:简单说,一个班的同学必须至少有一个人自己做了作业,这样全班才有作业可抄。同样的道理,文件存到多方,即使部分节点删除了文件,那么还有可能从其他诚实的节点恢复文件。如果连最后一份文件的拷贝都被删除了,那么这个文件就永远无法恢复了。


解决这个作弊行为的方案就是复制证明。


假设三个存储节点自己有唯一的名字,那么同一份文件被三个存储节点存储时,按照约定我们不存文件的原文,而是存储用各自的名字编码的文件复制。这样同一份内容在三个节点的硬盘上,存为三份唯一的文件,解码后的结果是一样的。


最后,复制还有一个特点就是编码慢,解码快。理性的矿工宁可花钱购买硬盘存储,也不会选择删除复制文件重新生成,因为成本更高。


复制证明是区块链存储的关键技术!


工作量证明


中本聪提出的工作量证明,提出了以计算能力作为选票,形成共识。因为在计算机世界,身份是很容易伪造的。一个矿工为了被选举成功(并得到成功后的收益),可以创建任意多个身份,来获得更高的回报。这被称为女巫攻击。


Data = “Data to write into next block”


User = “Miner identity”


Difficulty = “Next block generation Difficulty”


Nonce = 0


While True:


If Hash(Data+User+Nonce) < Difficulty:


Break


Nonce += 1


因为计算资源(CPU,GPU)是需要花钱买的,有限的。所以用计算资源的工作成果作为选票,形成共识。这里工作量证明有几个作用,以比特币为例 1.保护区块链的安全,因为投入了硬件和能源资源,所以其他人攻击的成本更高 2.选举,决定谁有权生成下一个区块,有手续费 3.初始币的分配,决定市场上最初的钱是哪里来的


其中,初始币和手续费是吸引矿工投入资源挖矿的重要激励。随着币价升高,人们也更愿意投入更多资源。一旦在区块链中移除虚拟币的设计,就没有矿工会投入资源。


作为回报,区块链得到了自己需要啊安全保护,巨大的算力保护着区块链本身,不被恶意的分叉,双花。


工作量证明的最大问题


耗电。由于比特币的总量稀缺,币价较高,所以为了赚取初始分配的比特币,矿工马力全开的争夺,这造成了能源的浪费。对于用户来说,矿机输出的工作量证明仅仅是保护了区块链的安全,并没有其他的实际用途。


PoS 的提出就是为了创建低耗能的区块链,DPoS 则是性能上的改进。这方面介绍的文章较多,这里就不再展开。


需要指出的是,我们认为共识算法与区块链性能之间没有必然联系,使用 PoW 也能设计出高性能区块链。


EPoW 是一种复制证明


EPoW 是一种复制证明,它使用 PoW 算法来做复制证明需要的编码工作。这样的算法符合复制证明中编码昂贵(慢),解码便宜(快)的原则。


在此之前,业界先驱 Filecoin 提出过使用 VDF 和零知识证明的算法实现的复制证明。相比,我们的算法实现起来非常的简单,并且可以在超低规格的服务器上运行,比如树莓派。


除此以外,EPoW 可以在复制数据的同时也生成工作量证明,保护区块链的安全。


我们以矿工的视角来思考,我只有一份算力(硬件),是应该用 EPoW 做复制证明,还是用来生成工作量证明以保护区块链安全?理性的矿工一定会选挣钱的那个选项。


这正是 EPoW 的绝妙之处:在做复制证明的同时,我们可以得到免费的工作量证明。在 EPoW 中,PoW 是工作产生的“副作用”,只要还有文件存储“工作”需要处理,我们就能在工作的同时,产生工作量证明。


以往,我们为了获得虚拟币而工作,努力消费更多的电力换取虚拟币,从区块链角度看,得到了工作量证明以保护链安全。现在,矿工为了挣钱(法币)而按需工作(有新文件需要复制证明时候工作,没有则不工作),顺带产生免费的工作量证明,来保护区块链安全。


既然还是用到 PoW 算法,为什么 EPoW 是经济的?


因为我们去掉了激励方式,虚拟币。以往,为了得到币,矿工会开足算力争夺“初始币分配”,也就是挖矿。但是无论我们投入多少资源,比特币的产出是恒定的。所以单位币需要承载更对的价值(涨价),这是币价一定涨的内在逻辑,因为挖矿成本(难度)在增加。


我们用复制证明编码并存储文件,这是一种切实的工作。EPoW 能输出复制编码和工作的证明,虽然消耗了能源,但这是理性的。一旦没有新的复制任务,矿工不会主动消耗电力创建无意义的工作量证明。所以我们的算法是经济的工作量证明,就像运行在经济省油模式的汽车,以节约能源为目标。


为什么 EPoW 是无币区块链的关键技术?


区块链设计以虚拟币作为奖励,原因就是它的价格对于法币是浮动的。如果以法币来做激励,那么挖矿的成本一定会被控制在预期收入以内,区块链就不可能从矿工处得到越多越好的算力来保护区块链。


使用 EPoW,用户将存储需求交给区块链,并支付法币,这样矿工已经得到了回报。资源提供方付出资源展开“有用的”工作,并得到稳定的法币回报。在此过程中,工作量证明已经随之产生,无需区块链再给额外的奖励。这避免了使用虚拟币来激励矿工,同时也避免了无畏的资源浪费。


EPoW 对现有已投入的区块链算力挖矿的硬件有什么影响?


老旧的矿机,由于生产的时候技术限制,单位能源产生的算力较低。这些老旧的矿机挖矿挣到的钱还不够支付消耗的能源,它们有关机价。也就是说比特币的价格如果低于一个点,这些老矿机宁可关机,因为开着也是亏本。然而这些早期投资依然能产生可观的算力来保护区块链网络,如果他们可以找到适当的理由来使用这些算力,如果有人可以支付开机成本。


EPoW 是一种有用的 PoW,使用 EPoW 设计的区块链可以”复活”很多老的矿机,使得我们过去在算力上的投资没有白花。


对现有矿池有什么影响?


加入矿池,本质上是向矿池出售算力换取稳定的回报。


对于区块链的风险,是矿池控制了大量算力,一旦某矿池超过 50%,它就有了作恶的能力。矿池的出现可能是中本聪没有预料到的,区块链更欢迎分散的算力。


由于 EPoW 本地使用了算力,所以从矿池接一些任务进行计算的外包式挣钱法,就有点不太合适。使用 EPoW 本来就可以通过贡献资源来挣钱,而如果是比特币,没有巨大算力的情况下,不加入矿池,坚持独立挖矿,爆块的概率比中彩票还低,很有可能一整年颗粒无收。


EPoW 将使得区块链再次回到独立挖矿的田园时代,矿池将不再有能力获得寡头算力,这将极大的保障区块链安全。


作者介绍:


阚嘉,西交利物浦大学博士研究生


2020 年 10 月 29 日 08:381016

评论 1 条评论

发布
用户头像
你是不是不知道ipfs 和 filecoin。。。
2020 年 10 月 29 日 15:55
回复
没有更多了
发现更多内容

中华石衫 Elasticsearch 顶尖高手系列课程

escray

elasticsearch elastic 28天写作 死磕Elasticsearch

week7-homework

J

程序员练习算法的几个实用技巧

Phoenix

算法

第七周 学习总结

简简单单

Java并发编程实战(3)- 互斥锁

技术修行者

Java 并发编程 多线程

微信视频号的不同 | 视频号28天(03)

赵新龙

28天写作

python自学 第一章 初始python

WEB前端修行日志

Python

大作业2

钟杰

4.5万字手把手教你实现MySQL TB级数据存储!!

冰河

MySQL 分布式 微服务 数据存储 mycat

数仓面试高频考点--解决hive小文件过多问题

五分钟学大数据

大数据 hive 面试题 数仓

反对没有节制的加班文化

熊斌

管理 职场 工作思路 28天写作

有关架构设计原则的总结

跳蚤

创业也是要帮助他人突破认知 Jan 10, 2021

王泰

28天写作

RocketMQ如何保证消息可靠性

双儿么么哒

RocketMQ

面试官:换人!赶快换人!连 CopyOnWriteArrayList 都没听过!

xcbeyond

Java 28天写作 CopyOnWriteArrayList

架构师培训第二周课后作业

跳蚤

从大局着眼,立微处发力

张老蔫

28天写作

第12周作业

Jack

Windows10 Kafka Docker 集群搭建

Docker kafka

汽油车最简知识——28天写作Day2/28

mtfelix

28天写作 电动汽车

技术人小故事-团队愿景篇-第2段

Ian哥

28天写作

week7-总结

J

MySQL慢查询(下):问题解决,干货总结

flyer0126

MySQL MySQL 高可用 MySQL优化 28天写作

堡垒机是什么?

网络技术平台

HDFS SHELL详解(3)

罗小龙

hadoop 28天写作 hdfs shell

架构师系列 13 Spark 大数据处理在金融领域中的应用

桃花原记

生产环境全链路压测建设历程 25:FAQ 7、8 正常业务保护和外调接口的处理

数列科技杨德华

28天写作

Java程序经验小结:谨慎的使用本地方法

后台技术汇

28天写作

第七周 性能优化作业

简简单单

创业失败启示录|校园里的蓝色单车(分析篇)

山下青城

创业 28天写作 创业失败启示录 青城

Java Kafka 简单示例

Java kafka

飞猪Flutter技术演进及业务改造的实践与思考

飞猪Flutter技术演进及业务改造的实践与思考

重新信仰PoW:无币区块链和经济工作量证明-InfoQ