当前位置: 首页 > news >正文

以太坊共识机制

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

以太坊常用的三种共识机制(算法):PoW(Proof of Work),工作量证明机制;PoS(Proof of Stake):股权证明机制;DPoS(Delegated Proof of Stake),授权股权证明机制。这些共识机制都能在现实生活中找到对应的经济模型,吸引人们参与其中,组成安全网络,并有序运行。但是,长期来看它们各有优缺点,都存在失败的可能。

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

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

1.基本原理

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

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

2.优点

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

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

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

3.缺点

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

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

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

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

1.基本原理

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

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

2.优点

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

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

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

3.缺点

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

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

1.基本原理

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

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

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

2.优点

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

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

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

3.缺点

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

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

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

原文由网友imfly编写,最早发布于技术社区github

分享两个以太坊开发教程:

1.以太坊 DApp 实战开发入门

2.去中心化电商 DApp 实战开发

转载于:https://my.oschina.net/u/3837977/blog/1801233

相关文章:

  • 浅析NSTimer CADisplayLink内存泄露
  • hdu 2227
  • ViewPager+RadioGroup实现标题栏切换,Fragment切换
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • PyTorch快速入门教程五(rnn)
  • 故障排查
  • 腾讯云服务器 安装监控组件
  • CRM系统客户形成需求和认知的五大因素
  • 【leetcode】55. Jump Game
  • node.js 学习(二)
  • 内华达州PUC特准3.2万光伏用户优惠太阳能补贴费率
  • 文件读,写,拷贝,删除
  • 神州数码网真解决方案助山西电力信息高速化
  • 大数据正在改变企业决策方式
  • Centos 7 配置tomcat服务器
  • 网络传输文件的问题
  • 《深入 React 技术栈》
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • RxJS: 简单入门
  • Vue2 SSR 的优化之旅
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 让你的分享飞起来——极光推出社会化分享组件
  • 数据仓库的几种建模方法
  • 算法系列——算法入门之递归分而治之思想的实现
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​Java并发新构件之Exchanger
  • #define用法
  • #Linux(权限管理)
  • $.proxy和$.extend
  • (09)Hive——CTE 公共表达式
  • (4)Elastix图像配准:3D图像
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (强烈推荐)移动端音视频从零到上手(上)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转载)从 Java 代码到 Java 堆
  • ***监测系统的构建(chkrootkit )
  • .NET Core WebAPI中封装Swagger配置
  • .net 获取url的方法
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .so文件(linux系统)
  • @Validated和@Valid校验参数区别
  • [20170713] 无法访问SQL Server
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [Android学习笔记]ScrollView的使用
  • [C++ 从入门到精通] 12.重载运算符、赋值运算符重载、析构函数
  • [CLR via C#]11. 事件
  • [Codeforces] probabilities (R1600) Part.1
  • [codevs 1515]跳 【解题报告】
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符