当前位置: 首页 > 编程日记 > 正文

EOS共识机制——DPoS代理权益证明

链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。

在这里插入图片描述
区块链共识机制与它的演进,是由于区块链式去中心化而且分布式的系统,必须要有一套放诸四海皆准类似宪法的规则,来规范如何证明谁能够获得记账的权利全并且得到奖励,还有意图危害系统将会受到甚么惩罚,来维持整个系统稳定发展。

区块链(Blockchain)其实就是账本串连在一起,每一块的账本都记录着我们的交易,再计算出每块账本的Hash(艺术哈希值)表示。而每一块账本的Hash,会放在下一个账本的最前面,跟着这些帐本的交易纪录变成一个新的Hash,这表示如果你不能单单窜改了一个区块的交易纪录,后面的区块也需要一起更改。在这种条件下的窜改机率几乎等于零。这就是为什么大家会说区块链是不可篡改的,以下为我们常见的共识算法。

PoW(Proof of Work,工作量证明),也就是付出的越多,那就可以获得越多的奖励,常见的比特币(BTC)以及以太币(ETH)皆是采用这种共识算法。一般来说,矿工们会透过CPU、GPU或ASIC来进行挖矿,主要过程⼤概是猜⼀个名为Nonce的数值,第一个找到Nonce值经过函数之后小于某一个值的矿工就获胜,可以获得出块的权利。虽然PoW可以让整体网络相对去中心化,但确认交易的速度却相当缓慢,这也使得区块链想要融入我们日常的生活有不少阻力。另一方面,当越来越多的矿工投入时,便造成了大量的能源浪费。为了改善交易速度以及减少耗能,所以产生了另外一个共识机制 — PoS(Proof of Stake)。

PoS(Proof of Stake,权益证明)。主要便是希望可以解决PoW运算时消耗过多能源的缺点,不同于PoW透过计算能力竞争记账权,PoS是依照所持有币的数量,当你持有的越多就代表有越大的机率可以取得记账权力,因此PoS免去了矿机消耗的庞⼤电⼒资源,但区块链扩容与交易确认速度过慢的问题仍然未能解决。

代理权益证明DPoS(Delegated Proof of Stake)

为了解决目前PoW遇到的耗能费时问题以及PoS仍旧无法突破的扩容、效率问题,Daniel Larimer(BM)提出了新的共识机制DPoS,BM除了是EOS的创始人也曾经开发过Bitshares(2014)还有Steem(2016),两个项目都采用DPoS共识机制,区块链网络运行到现在的稳定程度,已经能够证明DPoS共识机制是可行的,从交易纪录的活跃程度来看,透过DPoS共识机制的区块链性能是目前区块链网络中最高的。

作为第三代的共识机制,就是为了解决前两代痛点而出现,保留了PoS节能的优点,并引入了代议民主的概念,每一颗EOS都是一张选票,藉由选票选出21个Block Producer(超级节点),透过减少节点的数量,除了能够达成比PoS更低的能耗,更是解决了PoW与PoS其中一个痛点 — 交易确认的时间过长的问题。

如果觉得DPoS的概念太过抽象难以理解,可以把DPoS想像成一间公司,而21个超级节点就是公司的21个董事与大股东,负责参与大公司大事的决策,由于成为超级节点的大股东,手上都握有极大份额的股分,常理来说并不会做出对公司未来有害的决策,若真的有股东做出不智的决定,所有的股分持有者也可以透过手上的币作为选票来让这名对公司有危害的大股东下台。

DPoS的构架把所有利益关系人串联起来,让所有参与者不再是互为竞争者而是合伙人。虽然众多人批评这种代议式民主的方式有违了区块链去中心化的初衷,但仔细目前BTC以及ETH的算力分布,BTC前10大矿池就已经把持了超过86%的算力;ETH更是集中,前五大就超过了75%。

另一方面,要将区块链融入我们的生活中必要的条件就是快速的交易确认,当我们藉由虚拟货币从事任何一种支付行动的时候都希望可以和我们目前的日常支付没有过大的差异。然而BTC以及ETH却无法达成,光等待确认的时间就至少需要20分钟了,可想而知,我们是无法想像要买一杯珍奶需要站在柜台等待20分钟的。而DPoS透过代议式的民主机制,选出21个节点来帮EOS网络来进行确认,这样便可大幅缩短等待确认的时间,进而让更多的实际应用变成可能。

在区块链中,不可能的三角分别为:可扩展性、去中心化以及安全。而从DPoS中很明显的可以发现到降低了去中心化这个部分,进而达到了高TPS。整个区块链行业还在发展的早期阶段,DPoS只是提供了我们一个可能的想像,也期待在日后透过社群的脑力激荡,可以将不可能的三角化为可能。

更多区块链信息:www.qukuaiwang.com.cn/news

相关文章:

active mq topic消费后删除_Spring cloud stream 整合mq

说明:本案例win10环境测试scs(spring cloud stream)整合kfk(kafka)/rbt(rabbitmq)消息生产消费场景流程一、准备中间件环境(kfk/rbt)后续内容提供kfk与rbt的环境准备流程二、导入scs的依赖项目spring boot 版本:2.1.3.RELEASE引入spring cloud 版本&…

翻译的艺术 —— 无能为力的翻译,搞笑的音译

0. 无能为力的翻译 至尊宝:best sonny,乌龙:own goal,的粤语发音;1. 取其发音 word ⇒ 我的,word 妈呀, Need just word,word has word,你的就是我的,我的还是我的&#…

经常可能会用到的【函数节流和函数防抖】记录下,做下区分

今天突然被人问到,函数节流和函数防抖的区别是什么,结果我脑子一热直接举了个滚动条的粟子说是优化高频率执行的手段,就记得自己是用setTimeout来实现的。完了区别是什么??哪个是哪个都蒙B了回家想想,有些东…

智能合约和区块链技术:入门指南

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 智能合约和区块链技术:入门指南 多年前,在没有数字合约和区块链技术存在的情况下,双方的合约往往以传统的方式进…

2. 尾部的零

题目 设计一个算法,计算出n阶乘中尾部零的个数 样例 11! 39916800,因此应该返回 2 题解 一开始就用最简单对1-n找出5的个数,然后超时了。虽然都直到是要找5,因为2肯定比5多,所以5的个数就是0的个数,只是计…

case when then else end

1、根据数据库表中特定的值进行排序显示 select * from tablename where order by case when columname then 1 wnen columname when 2 else 3 end 2、根据数据库中存的值根据情况对其进行赋值CASE sexWHEN 1 THEN 男WHEN 2 THEN 女 ELSE 其他 END --Ca…

python replace函数_Python3 replace()函数使用方法

描述 replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 语法replace()方法语法: str.replace(old, new[, max]) 参数 old -- 将被替换的子字符串。 new -…

EOS技术知识介绍

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 EOS 简介 EOS:EOS可以理解为Enterprise Operation System,即为商用分布式应用设计的一款区块链操作系统。EOS是EOS软件引入…

团体程序设计天梯赛-练习集-L1-044. 稳赢

L1-044. 稳赢 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每…

currenttimemillis 毫秒还是秒_Elasticsearch(ES)如何做到亿级数据查询毫秒级返回

前言:这个问题其实是更面向原理及实操方面的内容。换个问法,可以是这样来问:ES 在数据量很大的情况下(数十亿级别)如何提高查询效率?为了精简,如下内容将Elasticsearch简称为ES如果你仅仅是用过ES,对于这个…

分布式系统的时间顺序

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 分布式系统的时间顺序 区块链被认为是分布式的系统,分布式系统中由于多节点,通讯、物理位置等的问题,各节点间时…

JVM 老年代对象来源

一般情况是四种,但是尤其以第一种来源最多1.新生代对象每经历依次minor gc,年龄会加一,当达到年龄阀值会直接进入老年代。阀值大小一般为152.Survivor空间中年龄所有对象大小的总和大于survivor空间的一半,年龄大于或等于该年龄的…

[心跳] 使用心跳机制实现CS架构下多客户端的在线状态实时更新以及掉线自动重连...

此文讲述的内容是一个实际项目开发中的一部分内容,笔者将亲身经历写成文章。 【背景】 现 需要实现这样的功能:有多个客户端连着同一个服务器。服务器和客户端之间需要“互相”知道彼此的连接状态。比如在某一时刻,服务器需要知道当前有多少个…

python绝对值编程_Python-abs vs fabs

编辑:正如aix所建议的,比较速度差异的更好(更公平)方法是:In [1]: %timeit abs(5) 10000000 loops, best of 3: 86.5 ns per loop In [2]: from math import fabs In [3]: %timeit fabs(5) 10000000 loops, best of 3:…

如何搭建以太坊私有链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 如何搭建以太坊私有链1 今天讲一下如何搭建以太坊私有连,当然了在你阅读这篇文章的时候,最好是有一定基础,比如…

Autocomplete 自动补全(Webform实战篇)

开篇语 因为项目中需要用到一个自动补全的功能,功能描述: 需求一:新增收件人的时候,自动下拉显示出数据库中所有的收件人信息(显示的信息包括:姓名-收件地址-联系方式) 需求二:选中一…

前端开发基础7(Bootstrap框架)

Bootstrap介绍 Bootstrap是Twitter开源的基于HTML、CSS、JavaScript的前端框架。 它是为实现快速开发Web应用程序而设计的一套前端工具包。 它支持响应式布局,并且在V3版本之后坚持移动设备优先。 为什么要使用Bootstrap? 在Bootstrap出现之前&#xff1…

python自动化测试难不难_Python测试自动化好学还是Pythonweb开发好学?

还是测试吧。。。 用动态语言搞开发,项目大了根本没法维护,而且还会bug层出不穷,任谁也Hold不住。真想搞开发,要么玩Java,要么玩C#。 下面举个例子。 比如一个游戏项目,是这样的(伪代码):角色 l…

以太坊智能合约开发第二篇:理解以太坊相关概念

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 很多人都说比特币是区块链1.0,以太坊是区块链2.0。在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成…

【python之旅】python的基础二

一、集合的操作 1、什么是集合? 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重:把一个列表变成集合,就自动去重关系测试:测试两组数据之前的交集,差集,并集…

hash 值重复_程序员:判断对象是否重复,不重写equals和hashcode不行吗?

前言大家都知道如果要判断一个对象是否相同,都要在对象实体中重写equals和hashcode方法,那你知道为什么重写这两个方法就能根据自己定义的规则实现相等比较了吗?今天带大家来了解一下equals和hashcode重写的实现。set是如何去重的&#xff1f…

LazyT 延迟加载

namespace ConsoleAppTest {class Program{static void Main(string[] args){Lazy<Student> student new Lazy<Student>();//默认未初始化Console.WriteLine(student);//在第一次使用时才实例化Console.WriteLine(student.Value);Console.ReadLine();}public clas…

如何编写一个可升级的智能合约

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 如何编写一个可升级的智能合约 区块链信任基础的数据不可修改的特性&#xff0c;让它传统应用程序有一个很大的不同的地方是一经发布于区块链上就…

用ILSpy查看Session.SessionID的生成算法

缘由 asp.net Session在InProc模式下&#xff0c;容易丢失&#xff0c;经常需要重新登录&#xff0c;且不支持分布式共享。   所以在研究Redis实现原生的Session,本来想用GUID作为key存入cookie&#xff0c;又在想能不能实现跟Session一样的id 实现 ILSpy 是一个开源的.NET反…

java 中 bean 的生命周期

java 中 bean 的生命周期 本篇中会对涉及到的知识点皆做出描述&#xff1a; 首先&#xff0c;我们先了解先虚拟机的类加载机制&#xff1a; 虚拟机把描述类的数据从Class 文件中加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接…

python简易版实例_Python3之简单搭建自带服务器的实例讲解

WEB开发&#xff0c;我们先从搭建一个简单的服务器开始&#xff0c;Python自带服务模块&#xff0c;且python3相比于python2有很大不同&#xff0c; 在Python2.6版本里&#xff0c;/usr/bin/lib/python2.6/ 目录下会有 BaseHTTPServer.py, SimpleHTTPServer.py, CGIHTTPServer.…

如何选择分布式系统(区块链)协议?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 如何选择分布式系统&#xff08;区块链&#xff09;协议? 在构建包分布式系统功能的应用程序时&#xff0c;《财富》500强企业和创始人经常问我们…

MySQL与IO

数据库作为存储系统&#xff0c;所有业务访问数据的操作都会转化为底层数据库系统的IO行为(缓存系统也可以当做是key-value的数据库),本文主要介绍访问mysql数据库的IO流程以及IO相关的参数。 一 MySQL 的文件 首先简单介绍一下MySQL的数据文件&#xff0c;MySQL 数据库包含如下…

python括号配对问题_使用Python的栈实现括号匹配算法

写一个栈的类&#xff1a;stack.py class Stack: def __init__(self): self.items [] def is_Empty(self): return self.items [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(items)-1] …

万航单位换算器 V1.0 绿色版

软件名称&#xff1a; 万航单位换算器软件语言&#xff1a; 简体中文授权方式&#xff1a; 免费软件运行环境&#xff1a; Win 32位/64位软件大小&#xff1a; 347KB图片预览&#xff1a; 软件简介:万航单位换算器是一个可以随意转换单位的绿色软件&#xff0c;这个软件收集了各…