algorand共识协议_【Filecoin】理解预期共识 - 及它的优缺点

b957bb3bda6e5932ae78614bc7b06858.png

摘 要

  • 预期共识就是上帝掷飞镖
  • 预期共识的优点在于简单,而且每一次选举胜出者数量的平均数为1
  • 但预期共识不能保证每次选举的胜出者数量,这是其最大的问题
  • 期待有更好的基于可验证随机函数的共识算法出现,设计者可获得20万美金奖赏

dc6274c6f6f66b99a929422768dbd87f.png

预期共识 就是 上帝掷飞镖

为了不使此文显得枯燥乏味,今天一上来先用最简单的方式来解释预期共识,保证高中生能够看懂。

预期共识(EC:Expected Consensus)是一种 PoS (这里S可以理解为 Storage Service,及存储服务的贡献)的实现。目标是是的矿工出块的权益与自己对存储的贡献成正比,也就是说,矿机被使用的存储空间在整个网络中的总使用空间中所占比例,就是此矿机能够出块的概率。这是大家都了解的,也认为这是非常公平,且对整个网络起到良好促进作用的设计。

我在文章《让上帝掷骰子 - 对共识机制的浅层分析》一文中对区块链共识机制的要素和共同特点已经有过描述,这里不再重复,但是,要知道的是,无论什么共识机制,一定要具有公平性、不可预知性、可验证性和可行性(不能太复杂)。预期共识,作为Filecoin目前采用的共识算法,是一种简单的共识算法,基本符合上述要求。那么它是如何做到的呢?

这里我为了形象说明,不使用骰子这个比喻,而采用另一个方法:掷飞镖。预期共识的每一轮出块最重要的一个步骤就是选举,这里的选举实际上就是自己进行计算,其实不需要大家投票。按照掷飞镖的来看,基本上分成以下几个步骤:

  1. 每一个矿工面前有一个大飞镖盘,面积与整个网络的总算力相当(这是已知的),每个人都一样;
  2. 每一个矿工的算力各有差异,仅占总算力的一小部分。每一个矿工的飞镖盘上都有一块材料是木头的,面积与此矿工的算力相当;而其他部分都是金属的;
  3. 但是飞镖盘上面蒙上了一层纸,哪一部分是木头的不知道,也就是说,只有上帝知道(这有系统的可验证随机函数确定,主要通过散列和签名实现)
  4. 每一个矿工自由掷出飞镖到飞镖盘,命中木头部分,上靶(胜出),否则,掉落(等待下一轮继续)。
  5. 下一轮重复,但注意,木头部分每一轮都会换地方,只有上帝知道换到了哪里。

每一轮上靶者称为这一轮的 Leader,即选举胜出者,有资格出块。我们来看一下是否符合上面说到的几个特点:

  • 公平性:没问题,算力大的矿工命中的机会大, 机会与算力成正比
  • 不可预知性:只有上帝知道木头材料分布在哪些地方,不能预知(实际上是利用hash算法的不可逆来实现的)
  • 可验证性:这个就涉及到VRF(可验证随机函数)的问题了。简单地着,前面所谓的木头部分在哪里,其实不是随意的,而是通过密码学算法确定的,只是这些密码学算法的不可逆性,保证了对网络来说的随机性
  • 可行性:预期共识仅仅需要每个矿工在本地计算就可以了,非常简单,实现起来很容易,计算复杂度低。没问题。

为什么还有人说不够好

看了上文,是不是觉得这么棒的东西,太好了!但你要知道,协议实验室对这个算法是不满意的,只是在没有新的更好的算法出来之前,考虑使用此算法。而且,协议实验室悬赏20万美金给更好的算法的提出者。那问题在哪里?

问题就在于,上面的每一个飞镖盘都是独立的,每个人的运气也是独立的。也就是说每个人命中的可能性也是独立的。那是不是在每一轮中,有可能所有人都不上靶,一个人也选不出来;当然也有可能有好几个人都上靶,这样就会有好几个人出块了。再想一想,是不是存在这样的概率所有人都上靶,理论上有,但如果人比较多,概率极低。

这就不是很理想了,因为有些轮没有人出块,交易(消息)的过程就会延长;如果有些轮有多个人出块,这些块中的消息信息基本上都是重复的,占用区块空间,浪费。

所以呀,更好的算法当然是最好每轮都能出块,而且每一轮都只有一个矿工上靶(具有出块资格)。可以想象,这样的算法当然需要整个网络进行协调,进行真正的选举,那这样是不是复杂度提高了,是不是可行呢?目前有好些算法被提出来,可以查询CoA, Snow White, AlgoRand等。但是,有些过于复杂,有些不适合Filecoin。

希望各位算法高手,看在奖金的份上,加油吧!

为什么叫预期共识?

回到一个傻傻的问题,为什么这个共识被称为预期共识(Expected Consensus)。高中生一定还记得概率论中学过数学期望(Mathematical Expectation)。这里 Expectation 是 Expect 的名词形式。也就是说一种期望,表明一种概率情况下的平均值。

再回到我们前面的掷飞镖游戏,想像每一个矿工的算力加起来是不是等于总算力?在这种情况下,每一轮掷飞镖的胜出者数量的数学期望值就是 1,即平均下来就是一个人中靶。

因为期望每一轮一个人中靶,而实际上预期共识算法仅实现平均下来一个人中靶,就叫它预期共识(Expected Consensus)吧。

真正的算法(前方高能)

具体可参见白皮书或相关文档,这里简单做一些解释,欢迎探讨。

如果一个矿工在一轮计算中下式成立,中靶,具有出块资格。

af32cd05dc316360d7d56186bf054691.png

不等式左边:H 为不可逆hash函数(比如 SHA256); L为 H 函数值的所占二进制的位数,这里保证了左边是一个0%到100%之间的一个值;

H 函数内的 <t||rand(t)>是在第 t 轮的一个全网统一的随机数,这个在第 t 轮才会公布。

不等式右边:分子为第 t 轮本矿机所拥有的算力;分母为第 t 轮全网的总算力;当然整个式子就是本矿机在全网中算力的占比。

这个不等式就相当于,后边是你飞镖盘木质部分的占比,而左边是你的运气,如果人品不错,就击中了木质部分(中靶)

那么,如何保证每个矿工的木质部分位置随机呢?就靠下面这个定义:

7095898ed8410cc0c26f229b55ff9f56.png

也就是对上面的随机数进行签名,而签名函数本身是不可逆也是不可预知的,每个人都不同。这就只有上帝知道木质部分放到哪里了。


3dddf1592efc95a45c2e304be777833e.png
欢迎关注 胡飞瞳

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ 多个线程操作socket要同步吗_基础知识深化:NIO优化原理和Tomcat线程模型

1、I/O阻塞书上说BIO、NIO等都属于I/O模型&#xff0c;但是I/O模型这个范围有点含糊&#xff0c;我为此走了不少弯路。我们日常开发过程中涉及到NIO模型应用&#xff0c;如Tomcat、Netty中等线程模型&#xff0c;可以直接将其视为 网络I/O模型 。本文还是在基础篇章中介绍几种I…

Linux常用命令汇总--ln

1.功能&#xff1a;将一个文件或者文件夹链接到另外一个文件或者文件夹上。链接分为硬链接和软链接&#xff0c;硬链接可以看做是一个文件具有多个访问的入口&#xff0c;软链接可以看成是快捷方式。2.用法&#xff1a;ln [选项] 源文件或目录 目标文件或目录3.参数&#xff1a…

用同一uuid作为两个字段的值_这两个小技巧,让SQL语句不仅躲了坑,还提升了 1000 倍...

作者&#xff1a;帅地个人简介&#xff1a;一个热爱编程的在校生&#xff0c;我的世界不只有coding&#xff0c;还有writing。目前维护订阅号「苦逼的码农」&#xff0c;专注于写「算法与数据结构」&#xff0c;「Java」,「计算机网络」。本次来讲解与 SQL 查询有关的两个小知识…

Android SQLite详解

在项目开发中&#xff0c;我们或多或少都会用到数据库。在Android中&#xff0c;我们一般使用SQLite&#xff0c;因为Android在android.database.sqlite包封装了很多SQLite操作的API。我自己写了一个Demo来总结SQLite的使用&#xff0c;托管在Github上&#xff0c;大家可以点击…

Catalan数的理解

Catalan数的理解 f(0)1f(1)1f(2)2f(3)5f(4)14f(5)42f(2)f(1)f(1)f(3)f(2)f(1)*f(1)*f(2)f(4)f(3)f(2)*f(1)f(1)*f(2)f(3)通项公式&#xff1a;f(n) f(n-1) f(n-2)f(1) f(n-3)f(2) ... f(1)f(n-2) f(n-1) 理解&#xff1a;固定一个&#xff0c;n-1个全在左边&#xff0c;n-…

Type interface mapper.UserMapper is not known to the MapperRegistry

Type interface mapper.UserMapper is not known to the MapperRegistry. 报错&#xff1a;Type interface mapper.UserMapper is not known to the MapperRegistry. 解决&#xff1a;已经解决&#xff1b;请查看mapper是否配置正确&#xff0c;我下面就配置错误了。 解决效果…

微信整人假红包图片_警惕:千万别点!这些红包是假的

春节将至&#xff0c;又到了“考验手速”的时候。近年春节&#xff0c;“抢红包”为大家带来了“新年味”与许多快乐。但是&#xff0c;有些不法分子却从中捣乱&#xff0c;制造了一些假红包企图骗取钱财。如何辨别“假红包”&#xff1f;这里总结了几种“假红包”类型&#xf…

SQL Server中SCAN 和SEEK的区别

SQL Server中SCAN 和SEEK的区别 SQL SERVER使用扫描&#xff08;scan&#xff09;和查找&#xff08;seek&#xff09;这两种算法从数据表和索引中读取数据。这两种算法构成了查询的基础&#xff0c;几乎无处不在。Scan会扫描并且返回整个表或整个索引。 而seek则更有效率&…

HDU 2897 (博弈 找规律) 邂逅明下

根据博弈论的两条规则&#xff1a; 一个状态是必胜状态当且仅当有一个后继是必败状态一个状态是必败状态当且仅当所有后继都是必胜状态然后很容易发现从1开始&#xff0c;前p个状态是必败状态&#xff0c;后面q个状态是必胜状态&#xff0c;然后循环往复。 1 #include <cstd…

C# 设置Excel打印选项及打印excel文档

C# 设置Excel打印选项及打印excel文档 打印Excel文档是一个很常见的操作&#xff0c;但有时候我们会碰到各种不同的打印需求&#xff0c;例如只打印一个Excel工作表的其中一部分&#xff0c;或打印时每页都有表头&#xff0c;或把工作表中超出1页所有内容打印到1页上等等&#…

解决问题:修改tomcat启动后服务器url

解决问题&#xff1a;修改tomcat启动后服务器url 解决方式&#xff1a;通过在pom.xml配置文件中使用configuration标签的子标签path可以修改http://localhost:8080后跟什么路径。如path标签中为/&#xff0c;则tomcat启动后服务器url为http://localhost:8080/

用js来实现那些数据结构 第一章

在开始正式的内容之前&#xff0c;不得不说说js中的数据类型和数据结构&#xff0c;以及一些比较容易让人混淆的概念。那么为什么要从数组说起&#xff1f;数组在js中是最常见的内存数据结构&#xff0c;数组数据结构在js中拥有很多的方法&#xff0c;很多初学者记不清数组的大…

excel密码忘记了怎么办

2019独角兽企业重金招聘Python工程师标准>>> Excel电子表格应用程序堪称Office中的“王牌应用”&#xff0c;能够快速灵活地整理各种大数据&#xff0c;在各行各业中发挥着不可替代的作用。因此&#xff0c;excel文档的跋扈密码比其他文档多&#xff0c;除了常设的打…

Smobiler 4.4 更新预告 Part 1(Smobiler能让你在Visual Studio上开发APP)

在4.4版本中&#xff0c;大家对产品优化的一些建议和意见进行了相应的优化和修复&#xff0c;同时&#xff0c;还新增了一些令人激动的功能和插件。 下面先为大家介绍4.4版本中Smobiler的优化和修复&#xff1a; 优化 1&#xff0c; PageView的AutoPlay默认属性改为True。 2&am…

cad lisp 二次抛物线_学习CAD的五个段位,你是青铜还是王者?

大家学习AutoCAD多久了&#xff0c;从入门到精(fang)通(qi)&#xff0c;小编总结了5个段位&#xff0c;大家对号入座。此时视口内的三维实体并没有任何变化&#xff0c;需要后续使用soldraw才能进行转换。SOLVIEW创建的视口经过SOLDRAW处理后&#xff0c;会生成表示实体轮廓和边…

Python 基础知识(二)

一、基础数据类型 1、数字int 数字主要是用于计算用的&#xff0c;使用方法并不是很多&#xff0c;就记住一种就可以&#xff1a; #bit_length() 当十进制用二进制表示时&#xff0c;最少使用的位数 # -*- coding:UTF-8 -*- v 11 data v.bit_length() print(data) # 二进制&a…

深入理解JavaWeb(五)——过滤器和监听器

深入理解JavaWeb&#xff08;五&#xff09;——过滤器和监听器 摘要&#xff1a;在基于Java-Web核心技术的开发应用中&#xff0c;为了一些特定的用途或目的&#xff0c;那么Filter和Listener就要闪亮登场了。在本文中我们来聊一聊Servlet规范中的另俩技术的核心知识点&#x…

ps一点等于多少厘米_劝告大家:女人40岁后,体重多少算正常?太瘦也不好

阅读本文前&#xff0c;请您先点击上面的“蓝色字体”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。由于身高、骨骼、体型和体重的不同&#xff0c;与男性相比&#xff0c;女性将相…

java xml转map_java练习本(原每日一练)(20190514)

名人名言昨日翻译“The No. 1 reason people fail in life is because they listen to their friends, family, and neighbors.”——Napoleon Hill“人们生活中失败的第一个原因是他们听取朋友、家人和邻居的意见。”——拿破仑希尔今日名言“Your time is limited, so don’t…

? SegmentFault Hackathon 文艺复兴上海站作品集 - 获奖篇

承上回&#xff0c;在 Day 1 中&#xff0c;石墨文档、Agora.io 声网和 HPE 的技术团队针对自家的 SDK、API 等作了深度介绍&#xff0c;今天就来看看我们的开发者是如何将作品和服务关联起来的吧。 跳蚤市场 24 小时的编程&#xff0c;艺术家都将什么作品搬上自己的摊位&#…