写点什么

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

  • 2020-10-29
  • 本文字数:4525 字

    阅读完需:约 15 分钟

重新信仰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:381715

评论 1 条评论

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

Docker多阶段构建实战(multi-stage builds)

程序员欣宸

Docker 9月月更

Code For Better 谷歌开发者之声——Google Cloud谷歌云

Fire_Shield

云原生 Google Cloud 9月月更

自动化测试神器playwright的安装及常见问题解决

迷彩

playwright 学习记录 9月月更

大数据调度平台Airflow(七):Airflow分布式集群搭建原因及其他扩展

Lansonli

airflow 9月月更

Http轮询分为长查询和短查询总结

知识浅谈

HTTP 9月月更

INFINI 产品更新啦 20220923

极限实验室

elasticsearch console Gateway infini 极限实验室

19道高频vue面试题,顺便写一下自己的答案

bb_xiaxia1998

Vue 前端

SpringBoot初识

十八岁讨厌编程

Java 后端开发 9月月更

[SpringBoot]配置文件格式、yaml配置及读取

十八岁讨厌编程

Java 9月月更

Web3.0 杂谈 -#003(49/100)

hackstoic

Web3.0

JavaWeb核心之ServletContext

楠羽

Servlet 笔记 9月月更

react20道高频面试题答案总结

beifeng1996

前端 React

跟我学Python图像处理丨带你掌握傅里叶变换原理及实现

华为云开发者联盟

Python 人工智能 企业号九月金秋榜

关于 Angular 应用 tsconfig.json 中的 lib 属性

汪子熙

typescript 前端开发 angular web开发 9月月更

Serverless遇到 FinOps: Economical Serverless

华为云开发者联盟

云原生 后端 企业号九月金秋榜

2022-09-23:整数数组 stations 表示 水平数轴 上各个加油站的位置。给你一个整数 k 。 请你在数轴上增设 k 个加油站, 新增加油站可以位于 水平数轴 上的任意位置,而不必放在整数

福大大架构师每日一题

算法 rust 福大大

【云原生 | 从零开始学Kubernetes】六、Pod的镜像拉取策略与各种机制

泡泡

Docker 云计算 云原生 k8s 9月月更

数据库系统是什么?它由哪几部分组成?

乌龟哥哥

9月月更

VUE v-bind 数据绑定

HoneyMoose

js常见手写题总结

helloworld1024fd

JavaScript 前端

Struts实现登录

Struts2 9月月更

深度剖析Istio共享代理新模式Ambient Mesh

华为云开发者联盟

云计算 云原生 后端 企业号九月金秋榜

速刷html一周目(下)

吉师职业混子

9月月更

跟着卷卷龙一起学Camera--LTM

卷卷龙

ISP 9月月更

前端面试经常被问的题目,自己总结了一下

loveX001

JavaScript 前端

这些react面试题你会吗,反正我回答的不好

beifeng1996

前端 React

融云员工服务台,跟“干不完”说再见

融云 RongCloud

IT职场

【云原生 | 从零开始学Kubernetes】五、Kubernetes核心技术Pod

泡泡

Docker 云计算 云原生 k8s 9月月更

TCP协议和UDP协议详细介绍

阿柠xn

TCP 计算机网络 协议族 UDP协议 9月月更

js高频手写题总结

helloworld1024fd

JavaScript 前端

NFTScan 与 ET.XYZ 在 NFT API 数据层面进行深度合作

NFT Research

区块链 NFT web3

重新信仰PoW:无币区块链和经济工作量证明_区块链_阚嘉_InfoQ精选文章