速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论 1 条评论

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

李宏毅《机器学习》P1-P2 学习笔记

Clarke

强大的爬虫框架 Scrapy

梦笔生花

Scrapy scrapy框架 10月月更

Spring之DI依赖注入

楠羽

笔记 spring】 10月月更

谈谈前端性能优化-面试版

loveX001

JavaScript

Python进阶(十)Python 编程规范

No Silver Bullet

Python 编程规范 10月月更

详解CAN总线:CAN总线报文格式—帧间隔

不脱发的程序猿

汽车电子 CAN总线报文格式 详解CAN总线 CAN帧间隔

Spring Boot「02」日志配置

Samson

Java spring 学习笔记 spring-boot 10月月更

字符串拆分----split()关键字

魏铁锤

10月月更

Qt | 深入了解Qt的委托类

YOLO.

qt 10月月更 C++

Qt | Qt的动画框架和类

YOLO.

qt 10月月更 C++

网络安全【漏洞安全】反序列化漏洞深入分析

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

Web前端 | HTML5学习

亮点

html web前端 10月月更

大数据ELK(二十一):Logstash简介和安装

Lansonli

Logstash 10月月更

vivo互联网机器学习平台的建设与实践

vivo互联网技术

人工智能 机器学习 推荐系统

2022-10-10:以下go语言代码输出什么?A:[1 2 3 0 1 2];B:死循环;C:[1 2 3 1 2 3];D:[1 2 3]。 package main import “fmt“

福大大架构师每日一题

golang 福大大 选择题

研发效能领域的“百科全书”重磅来袭!

博文视点Broadview

LinkedList源码分析(四)

知识浅谈

linkedlist 10月月更

SeaTunnel连接器V1到V2的架构演进与探究

Apache SeaTunnel

API 数据集成 连接器 Apache SeaTunnel 数据集成平台

Spring JPA 如何进行无参数查询布尔类型

HoneyMoose

IDEA的Docker插件实战(Docker-compose篇)

程序员欣宸

Docker Docker-compose 10月月更

数据结构学习,栈篇(链式栈)

IC00

读书笔记 数据结构 算法 10月月更

cstdio的源码学习分析08-设置文件流buffer函数setbuf

桑榆

源码刨析 10月月更 C++

数据中台与业务中台的区别与联系

阿泽🧸

业务中台 10月月更

Java 泛型

Yeats_Liao

后端 Java后端 Java core 10月月更

践行ESG理念,缘何成为消费金融行业共识?

易观分析

金融 ESG

年底前端面试题总结(上)

loveX001

JavaScript

AndroidStudio最新版(2021.1.21)编译C++代码生成so文件

中国好公民st

c++ Android; 10月月更

一文搞懂CAN总线协议帧格式

不脱发的程序猿

汽车电子 CAN总线 CAN总线协议帧格式

requests的介绍

梦笔生花

Python requests 10月月更

Beautiful Soup库的介绍

梦笔生花

Python BeautifulSoup 10月月更

数据库自动化运维实践

穿过生命散发芬芳

数据库运维 10月月更

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