《Nodejs开发加密货币》之十七:共识机制,可编程的利益转移规则

本文是关于加密货币入门文章的最后一篇。加密货币入门文章主要针对开发人员,从理论层面描述加密货币的架构思路,共计3篇。本文标题在真正写作的时候作了修改,没有延续上文最后的提示《机制,左右社会未来的根源》。写作本文时,比特币遭遇疯涨,当前是3876元/比特币。

前言

前面的文章中,我们说过,加密货币都是去中心化的,去中心化的基础就是P2P节点众多,那么如何吸引用户加入网络成为节点,有那些激励机制?同时,开发的重点是让多个节点维护一个数据库,那么如何决定哪个节点写入?何时写入?一旦写入,又怎么保证不被其他的节点更改(不可逆)?回答这些问题的答案,就是共识机制。

共识机制,可编程的利益转移规则。这个题目写出来,就有点激动,编程开发这么多年,我们尝试过很多方法,试图通过某种激励手段提高用户粘性,把用户留住。比如常见的积分机制、用户等级等,但是,没有任何一种方式,能与加密货币的共识机制相提并论。每一个区块链产品,本身就是一个小小的社会,一个由网络节点组成的自适应组织,这个组织的运行,要由共识机制来规范。

本文回答了“为什么加密货币无需监管”,主要内容包括机制的作用,加密货币共识机制的种类,它们各自的优缺点,以及亿书的改进计划。

机制,左右产品走向的根源

机制一词,原指机器的构造和动作原理,在社会学中的内涵可以表述为“协调各个部分之间关系以更好地发挥作用的具体运行方式。”

工作中遇到过一位好领导,他非常公道正派,一切事情按规矩办事,用制度说话。在他的领导下,整个部门都很有激情,心无旁骛,专心工作,上级领导也非常认可,升职加薪是常有的事情,人人都能收获满满。后来,因工作调整,我们很多人去了新部门,大家反映,再也没了当初的激情,因为工作不一定被认可,付出不一定有收获。

这个例子,可能很多人都遇到过,是最能直接体会一个社会、组织或部门当中机制运行规律的。在任何一个系统中,机制都起着基础性作用,左右着系统发展走向。在理想状态下,有了良好的机制,可以使一个社会系统接近于一个自适应系统(在外部条件发生不确定变化时,能自动地迅速作出正确反应)。正常的生物机体(如人体)就具有这种机制和能力。

机制的构建是一项复杂的系统工程。对于加密货币而言,共识机制包含各种激励制度和具体算法,比如:交易费用、区块奖励等。机制的关键因素是人,评判一个机制的好坏,往往要通过一段时间的观察,看看人参与和执行的积极性是否能够持续。如果不能持续,就预示着机制已经失败,系统或产品也将消亡。

实际上,加密货币的目标就是要建立一个“无需监管的自适应经济系统”。目前来看,支撑这个自适应经济系统的机制,常用的有三种,它们是:PoW,PoS,DPoS等,而且都能在现实生活中找到对应的经济模型。这些机制,吸引人们参与其中,组成安全网络,并有序运行。但是,长期来看,它们各有优缺点,都存在失败的可能。

下面我们看看这些机制的演进过程。

1.PoW(Proof of Work):工作量证明机制

基本原理

这是比特币采用的共识机制,也是最早的。理解起来,很简单,就是“按劳取酬”,你付出多少劳动(工作),就会获得多少报酬(比特币等加密货币)。在网络世界里,这里的劳动就是你为网络提供的计算服务(算力x时长),提供这种服务的过程就是“挖矿”。

那么“报酬”怎么分配呢?假如是真的矿藏,显然在均匀分布的前提下,人们“挖矿”所得的比重与各自提供的算力成正比,通俗一点就是,能力越强获得越多。

优点

机制本身当然很复杂,有很多细节,比如:挖矿难度自动调整、区块奖励逐步减半等,这些因素都是基于经济学原理,能吸引和鼓励更多人参与。

理想状态,这种机制,可以吸引很多用户参与其中,特别是越先参与的获得越多,会促使加密货币的初始阶段发展迅速,节点网络迅速扩大。在Cpu挖矿的时代,比特币吸引了很多人参与“挖矿”,就是很好的证明。

通过“挖矿”的方式发行新币,把比特币分散给个人,实现了相对公平(比起那些不用挖矿,直接IPO的币要公平的多)。

缺点

一是,算力是计算机硬件(Cpu、Gpu等)提供的,要耗费电力,是对能源的直接消耗,与人类追求节能、清洁、环保的理念相悖。不过,如果非要给“加密货币”找寻“货币价值”的意义,那么这个方面,应该是最有力的证据。

二是,这种机制发展到今天,算力的提供已经不再是单纯的CPU了,而是逐步发展到GPU、FPGA,乃至ASIC矿机。用户也从个人挖矿发展到大的矿池、矿场,算力集中越来越明显。这与去中心化的方向背道而驰,渐行渐远,网络的安全逐渐受到威胁。有证据证明Ghash(一个矿池)就曾经对赌博网站实施了双花攻击(简单的说就是一笔钱花两次)。

三是,比特币区块奖励每4年将减半,当挖矿的成本高于挖矿收益时,人们挖矿的积极性降低,会有大量算力减少,比特币网络的安全性进一步堪忧。

2.PoS(Proof of Stake):股权证明机制。

基本原理

这是点点币(PPC)的创新。没有挖矿过程,在创世区块内写明了股权分配比例,之后通过转让、交易的方式(通常就是IPO),逐渐分散到用户手里,并通过“利息”的方式新增货币,实现对节点的奖励。

简单来说,就是一个根据用户持有货币的多少和时间(币龄),发放利息的一个制度。现实中最典型的例子就是股票,或者是银行存款。如果用户想获得更多的货币,那么就打开客户端,让它保持在线,就能通过获得“利息”获益,同时保证网络的安全。

优点

一是节能。不用挖矿,不需要大量耗费电力和能源。

二是更去中心化。首先说,去中心化是相对的。相对于比特币等PoW类型的加密货币,PoS机制的加密货币对计算机硬件基本上没有过高要求,人人可挖矿(获得利息),不用担心算力集中导致中心化的出现(单用户通过购买获得51%的货币量,成本更高),网络更加安全有保障。

三是避免紧缩。PoW机制的加密货币,因为用户丢失等各种原因,可能导致通货紧缩,但是PoS机制的加密货币按一定的年利率新增货币,可以有效避免紧缩出现,保持基本稳定。比特币之后,很多新币采用PoS机制,很多采用工作量证明机制的老币,也纷纷修改协议,“硬分叉”升级为PoS机制。

缺点

纯PoS机制的加密货币,只能通过IPO的方式发行,这就导致“少数人”(通常是开发者)获得大量成本极低的加密货币,在利益面前,很难保证他们不会大量抛售。因此,PoS机制的加密货币,信用基础不够牢固。为解决这个问题,很多采用PoW+PoS的双重机制,通过PoW挖矿发行加密货币,使用PoS维护网络稳定。或者采用DPoS机制,通过社区选举的方式,增强信任。

3.DPoS(Delegated Proof of Stake):授权股权证明机制

基本原理

这是比特股(BTS)最先引入的。比特股首次提出了去中心化自治公司(DACs)的理念。比特股的目的就是用于发布DACs。这些无人控制的公司发行股份,产生利润,并将利润分配给股东。实现这一切不需要信任任何人,因为每件事都是被硬编码到软件中的。通俗点讲就是:比特股创造可以盈利的公司(股份制),股东持有这些公司的股份,公司为股东产生回报。无需挖矿。

对于PoS机制的加密货币,每个节点都可以创建区块,并按照个人的持股比例获得“利息”。DPoS是由被社区选举的可信帐户(受托人,得票数排行前101位)来创建区块。为了成为正式受托人,用户要去社区拉票,获得足够多用户的信任。用户根据自己持有的加密货币数量占总量的百分比来投票。DPoS机制类似于股份制公司,普通股民进不了董事会,要投票选举代表(受托人)代他们做决策。

这101个受托人可以理解为101个矿池,而这101个矿池彼此的权利是完全相等的。那些握着加密货币的用户可以随时通过投票更换这些代表(矿池),只要他们提供的算力不稳定,计算机宕机、或者试图利用手中的权力作恶,他们将会立刻被愤怒的选民门踢出整个系统,而后备代表可以随时顶上去。

优点

一是,能耗更低。DPoS机制将节点数量进一步减少到101个,在保证网络安全的前提下,整个网络的能耗进一步降低,网络运行成本最低。

二是,更加去中心化。目前,对于比特币而言,个人挖矿已经不现实了,比特币的算力都集中在几个大的矿池手里,每个矿池都是中心化的,就像DPoS的一个受托人,因此DPoS机制的加密货币更加去中心化。PoS机制的加密货币(比如未来币),要求用户开着客户端,事实上用户并不会天天开着电脑,因此真正的网络节点是由几个股东保持的,去中心化程度也不能与DPoS机制的加密货币相比。

三是,更快的确认速度。比如,亿书使用DPoS机制,每个块的时间为10秒,一笔交易(在得到6-10个确认后)大概1分钟,一个完整的101个块的周期大概仅仅需要16分钟。而比特币(PoW机制)产生一个区块需要10分钟,一笔交易完成(6个区块确认后)需要1个小时。点点币(PoS机制)确认一笔交易大概也需要1小时。

缺点

前几天,比特股的作者发表了一篇被广泛认为很傻的文章(见参考),预言DAO(去中心化组织)和DAC(去中心化公司)都将失败。文中披露了大量实践经验,基本算是DPoS的问题。概括起来,主要是:

一是投票的积极性并不高。绝大多数持股人(90%+)从未参与投票。这是因为投票需要时间、精力以及技能,而这恰恰是大多数投资者所缺乏的。

二是对于坏节点的处理存在诸多困难。社区选举不能及时有效的阻止一些破坏节点的出现,给网络造成安全隐患。

4.亿书对DPoS机制的改进

不过,也不可否认,DPoS机制仍是是目前最安全环保、运转高效的共识机制。存在的问题,也是可以克服和解决的。针对DPoS的问题,亿书结合自己的特点,创新提出四点改进计划。

(1)熔断机制

增加反对投票功能,对于破坏节点的反对投票率达到一定数量,就会促发“熔断机制”,强制个别受托人节点降级,减少对网络的破坏可能性。

(2) 信用系统

亿书,鼓励知识分享,节点和用户之间会有频繁交互,用户对节点用户的反馈与好评,将是该节点信用积累的一部分。亿书将充分利用这些信用信息,帮助社区用户遴选优良节点。

(3) 扩大规模

101个受托人,仅仅是相对合理的经验数字。亿书,会进一步优化算法,提高网络遴选的性能,采取租赁、出售等方式,鼓励去中心化应用的开发者、出版商等第三方用户自建节点,从而更好的服务用户。

(4) 实名认证

匿名与安全是相对平衡的过程。亿书倡导提供公开、透明的服务,鼓励节点受托人实名认证,公开有关信息,接受大家监督,从而获得社区的广泛认可。对于长期表现良好的节点,亿书将给出名单列表,显示在用户帐号里。

总结

这篇文章介绍了目前大部分加密货币采用的共识机制(算法),并没有介绍瑞波币采用的瑞波共识机制,因为严格意义上来说,人们认为瑞波币不是去中心化的,同时瑞波机制除了它自己也没有发现被其他加密货币采用,所以不具备普遍性,这里就不再讨论。

实践证明,设计良好的自适应系统,必须有完善的机制作为支撑,并充分考虑人的因素。人类是复杂的,特别是人类的群体行为,更加不可预测,这些机制在最初都是设计良好,但是谁又能预料在不久的未来会出现其他的状况呢。中本聪可能也没有想到,比特币会走到今天这样。

这一篇到了设计与编码的临界点,接下来就到了不得不编码的地步了。让我们趁热打铁,通过阅读代码进一步学习研究这些奇妙的构想吧,请看下一篇:《Nodejs开发加密货币》之十六:DPoS机制的实现(源码解读)

链接

本系列文章即时更新,若要掌握最新内容,请关注下面的链接

本源文地址: https://github.com/imfly/bitcoin-on-nodejs

首发区块链俱乐部: http://chainclub.org

亿书官方网站: http://ebookchain.org

亿书开发QQ群: 185046161 (亿书为开源项目,欢迎各界小伙伴参与)

参考

为什么PoS与PoW不具有可比性

“去中心化的比特币:从自组织到专业化分工”读后感

Bitshares DPoS.

比特股创始人:The DAO 在走BTS的老路,或离死期已不远

机制解析

时间: 2024-11-08 22:24:14

《Nodejs开发加密货币》之十七:共识机制,可编程的利益转移规则的相关文章

《Nodejs开发加密货币》之二十四:DPOS机制(分布式共识算法)

前言 共识机制是分布式应用软件特有的算法机制.在中心化的软件里,再复杂的问题都可以避开使用复杂的算法逻辑(当然,如果能用算法统领,代码会更加简洁.高效),在开发设计上可以省却一定的麻烦.但在分布式软件开发中,节点间的互操作,节点行为的统一管理,没有算法理论作为支撑,根本无法实现.所以,要想开发基于分布式网络的加密货币,共识机制无法回避. 在第一个部分,专门用一篇文章<共识机制,可编程的"利益"转移规则>来介绍共识机制的作用,也对比了当前加密货币领域常用的三种共识算法原理和优

《Nodejs开发加密货币》之二十七:开发通用的HTML组件

人的懒惰常常是麻烦的开始.多数程序员都希望自己的工作一劳永逸,一次开发,到处使用,成了人人追逐的目标,我也不例外.最初写<Nodejs开发加密货币>系列文章,因为不喜欢设定好了去写,所以目录反复修改,索性弄了小工具gitbook-summary:在写入门文章的时候,反复搜索github,索性把检索与制图集成到一起,弄了个开发语言检索统计工具(见<Node.js让您的前端开发像子弹飞一样>文章实例):阅读源码的时候,手动整理Uml图很辛苦,干脆写成了js2uml工具(见<轻松从

《Nodejs开发加密货币》之十五:加密货币就是货币

这是一篇加密货币的入门文章,是对<Nodejs开发加密货币>的入门指南部分的补充,主要写给那些没有接触过比特币.加密货币的小伙伴,接下来的内容,都将与加密货币相关. 前言 "加密货币就是货币"听起来挺"白痴的".想想背后的意思,言外之意就是"加密货币可能不是货币",就非常值得玩味了.事实上,在我接触的很多朋友当中,一开始认为后者的更多.包括我自己,也是经过探究一段时间之后,才认定这个结论的. 惯性定律不仅存在于物质世界,也存在于人类的

《Nodejs开发加密货币》之十六:利益,魔鬼与天使的共同目标

前言 上篇文章<加密货币就是货币>吸引了很多小伙伴关注,非常感谢.同时说明,很多小伙伴因为对加密货币不了解(或者有误解),所以才会敬而远之,错失良机. 这篇文章,继续上一篇,仍然通过直白的语言来讲解技术.涉及到的内容包括未来趋势,应用场景和风险提示,让我们更直观地理解币圈里的一些概念,比如:智能合约等. 利益,主宰着人类行为 人活着到底是为了什么?我们每个人可能都问过自己这个问题.我们有时候踌躇满志,想要拥有一切.有时候又高尚地低下头,崇尚与世无争,无忧无虑.但在纷繁复杂的真实世界里,我们总会

《Nodejs开发加密货币》之二十一:交易

题外话:这篇文章,耗费了我大量精力,用UML表达javascript类及流程本来就不是什么容易的事情,用来描述加密货币交易这种验证逻辑非常多的代码更难,加之Nodejs的回调在这些代码里嵌套很深,所以如何把异步调用变成人类容易理解的顺序调用,也做了一番取舍,时间不知不觉就过了一星期. 所幸,赶在比特币减半的今天完成并发布这篇文章,也算在区块链火热的今天,<Nodejs开发加密货币>走到了一个关键节点:触及了加密货币的灵魂和腹地.动辄几千一枚的比特币等加密货币可能会消亡,但是背后的技术却蓬勃发展

《Nodejs开发加密货币》之二十六:轻松从Js文件生成UML类图

前言 上一篇<函数式编程入门经典>,罗嗦了很长,很多小伙伴看得云里雾里.这里提供一个实例,让大家切身感受函数式编程的奥妙和趣味.当然,仅仅为了举例而写代码就没有什么意义了,本书提供的例子都是承担了某项任务的具体项目或工具,这个例子自然也不能例外. 本书用到了大量的Uml类图,经常有小伙伴问我用什么工具画的.说实话,前几篇是我个人一点点手工整理的,但后来就感觉在浪费生命,作为程序员,怎么可能容忍这样的事情反复发生.所以,就有了 js2uml(见参考)这个小工具.只不过,当初目的单一,仅仅使用正则

《Nodejs开发加密货币》之八:一个精巧的p2p网络实现

发布本文时,比特币价格 ¥2909.92 / $448.29 .为什么一个凭空设计出来的加密货币如此受追捧?为什么微软.IBM等巨头纷纷进入?为什么尝试了解比特币的技术人员,都会被深深吸引?它到底有什么诱人之处?<Nodejs开发加密货币>,让我们一起探索其背后的密码. <Nodejs开发加密货币>,目的是提供加密货币(亿书币)的详尽开发文档,涉及到使用Nodejs开发产品的方方面面,从前端到后台.从服务器到客户端.从PC到移动.从IO密集型到计算密集型.从中心化到去中心化.加密解

《Nodejs开发加密货币》之十:三张图让你全面掌握加密解密技术

关于 <Nodejs开发加密货币>,是一个加密货币产品的详细开发文档,涉及到使用Nodejs开发产品的方方面面,从前端到后台.从服务器到客户端.从PC到移动.加密解密等各个环节.代码完全开源.文章免费分享. 相关资源见 http://ebookchain.org QQ交流群: 185046161 前言 加密解密技术,涉及面很广,这里,把前人的研究成果汇总起来,通过图表的形式来帮助记忆和筛选,方便日后使用.内容主要包括两个方面,一个是场景与算法,一个是Nodejs的相关模块或组件.共三张脑图,具

《Nodejs开发加密货币》之七:入口程序app.js解读

入口程序app.js解读 发布本文时,比特币价格 ¥2873.95 / $443.95 .为什么一个凭空设计出来的加密货币如此受追捧?为什么微软.IBM等巨头纷纷进入?为什么尝试了解比特币的技术人员,都会被深深吸引?它到底有什么诱人之处?<Nodejs开发加密货币>,让我们一起探索其背后的密码. <Nodejs开发加密货币>,目的是提供加密货币(亿书币)的详尽开发文档,涉及到使用Nodejs开发产品的方方面面,从前端到后台.从服务器到客户端.从PC到移动.从IO密集型到计算密集型.