共识协议的发展
分布式网络系统在处理交易或者是存储数据时,最重要的一点就是网络中的节点对共识结果的达成。图灵奖的牛人Leslie Lamport早在1982年发表了“The Byzantine Generals' Problem”,提出了在分布式网络不可信任的环境下在达成共识,得需要三分之二的节点达成共识才能保障系统的可用。而后Leslie提出了经典共识协议来提高整个网络的交易速度,这在当时有着跨时代的意义。但是经典共识协议有两个明显缺点
1、整个网络中的节点数量不能超过1000个,因为节点越多通信成本越高,基本上是节点数量的二次方。
2、节点之间必须得互相知道其他人是谁。
再后来到了2008年,中本聪提出了全新的共识协议。在中本聪共识协议中分布化与自由度得到了极大的提升。在这个网络中,任何节点都可以随时加入随时离开。任何人都可以成为矿工提交区块。但是中本聪也深知网络的无权限接入会导致网络的不安全性和危险性大幅增加。所以在交易生成验证上采用了工作量证明。在某种意义上是实打实的把现实的资源与能源转换为了比特币的价值。所以在达成共识这一块比特币确实是做到了,通过非人为因素的计算结果来使得全网节点达到统一,不过缺点也是明显的,那就是交易速度过慢,成本过高。而雪崩协议结合了前两者的优点,在全球范围内结算只需要大约2秒钟。每秒可处理1000–10,000个交易。整个网络无需就节点参与者是谁达成一致。最重要的是协议是绿色环保的,它不会浪费任何能量,并且没有特殊的矿工生态系统。
核心理念:亚稳态
“亚稳态是Avalanche协议的一个主要原理,它是通过传递“信任阈值”来达成共识。这种信任阈值通过网络传播,结构化和验证信息。亚稳态通常在高可用性数据库中可以看到达到共识结果的法定人数,其中还包含有助于系统快速达成共识的其他结构信息。为了有效地在网络上传播信息,单个节点将信息x传播到n个节点的网络中的法定数量k个节点,然后又将x传播到另一个法定数量k个节点。在分散系统中,对于接受和验证信息x是会存在相反意见的,人们希望协议的信任阈值的大小值是整个K节点中有超过2/3k的多数节点。因此,与传统的基于八卦的共识协议的显着区别在于亚稳态通过法定节点数量传播信息,而不是通过单个节点之间互相传播信息,从而保持整体较低的通信成本”。-------以上的话是出自perlin的白皮书中关于亚稳态诠释片段,我选择了一些简要部分综合而成。其实perlin中也是对这一机制做了简要阐述而已,真正的全部原理诠释在今年五月份Gun教授与匿名团队Team Rocket(还以为是神奇宝贝的火箭队)合作发表的文献中“Snowflake to Avalanche: A Novel Metastable Consensus Protocol Family
for Cryptocurrencies”。可能你对于刚才上面的话不是特别能够理解,好在我在瑞士洛桑联邦理工学院毕业的Mohammed ElSeidy博士个人博客中找到关于Avalanche的一篇文章,里面简单解释了亚稳态信息传递达成共识的过程。那么我们在下面尽量用简单的话语去诠释这个机制。
上图就是一个基于Avalanche协议的公共网络,一个节点随机向5个节点传递一个指令信息。而这5个节点就是上述的法定数量k节点。这5个节点收到的指令是在两个颜色(红蓝)中选择一个。
5个节点随机表示自己的结果,在发送信息节点的角度上来看,它所看到的5个节点共识结果肯定是非红即蓝。所以在这个规定数量节点k(5)中,发送信息的节点所达成的共识结果就是红色。结果选择之后的节点在后续的过程不再改变。
然后整个网络的节点一直重复此过程,这有点像是一个采样过程。该协议的核心思想就是在达成共识过程中一直重复这个采样过程。
在两轮或者三轮之后网络节点的共识结果可能还是红蓝各一半,数量相差不大。但是这样打平手的几率会以指数方式衰减。因为整个过程是对于统一结果的倾向性越来越高,网络会自动感知颜色变为另一种颜色。并且这一结果变化将会在传递后期变化越来越快,直到整个网络颜色达成一致。
https://zhuanlan.zhihu.com/p/40110917
+
论文细节介绍详见
https://blog.csdn.net/TurkeyCock/article/details/82428552
相关推荐
2. 连接到Snowflake:用户可以通过多种方式连接到Snowflake云数据库,包括使用Snowsight、SnowSQL、JDBC和ODBC等方法。每种方法都有其特点和优势,可以根据具体情况选择合适的连接方式。 3. Snowflake关键概念:...
Snowflake:Snowflake性能优化与最佳实践.docx
:snowflake_selector: 飘落的雪花 细节 只有一个JavaScript文件 CSS动画 橡胶设计 弹性设定 例子 使用 npm i magic-snowflakes --save-dev 没有设定 < html > < body > ... < script src =" ...
此模板将创建必要的ROLE , USER , DATABASE , SCHEMA和WAREHOUSE以启动和运行Snowflake:用法要求(设置时间为5分钟,一个月没有使用信用卡) (可选)1.部署如下面的屏幕截图所示,将复制到工作表中,然后运行...
React tutorial browser-sync 通过 npm 使用 React CommonJS 模块系统: 建议在 React 中使用 CommonJS 模块系统,比如 browserify 或 webpack 安装全局包 $ npm install babel -g $ npm install webpack -g ...
Snowflake 算法是由 Twitter 提出的一种分布式 ID 生成策略,其生成的 ID 由以下几个部分组成: - 时间戳:41位,表示距离 Unix 纪元(1970年1月1日)的毫秒数,可以容纳约69年的时间。 - 工作节点ID:10位,分为5位...
它提供了一种使用 Snowflake JDBC 或 ODBC 驱动程序开发 Java 或 C/C++ 应用程序的编程替代方案。该连接器不依赖 JDBC 或 ODBC。它可以安装在pip安装了 Python 3.8.0(或更高版本)的 Linux、Mac OSX 和 Windows ...
雪花检查员欢迎来到Snowflake Inspector项目! 您可以在访问该工具的实时版本。建造方法: 要构建项目,请确保已安装npm并执行以下操作: 运行npm i以安装依赖项运行npm run build以构建静态网站。 文件将显示在dist...
:sun_selector: :sun_behind_small_cloud: :cloud_with_lightning_and_rain: :snowflake_selector: 使用React,Redux,TypeScript,Webpack4,Ant Design,ECharts和firebase的天气Web应用程序。目录介绍该项目演示...
:locked: 安全 :snowflake: 已同步 :high_voltage: 即时的 :cloud: 云 :rainbow: 本机JavaScript变量和事件 V扩展了您的内存变量,使其也可以立即保存/持久化。 变量在房间中所有正在运行的V实例之间立即同步。 ...
Snowflake:Snowflake架构与概念.docx
Snowflake:Snowflake SQL基础教程.docx
Snowflake:Snowflake数据仓库入门.docx
Snowflake:Snowflake高级查询技巧.docx
Snowflake Studio作为一个以Bootstrap为基础框架、ReactJS为构建工具的开源项目,为前端开发者们提供了一个学习和实践的平台。它不仅是一个展示作者在ReactJS学习过程中的产物,还为我们提供了一个将Bootstrap和...
Snowflake gRPC 介绍 本项目为 Snowflake 算法在 gRPC 中的实现,server 采用 Golang 编写,示例 client 采用 PHP 编写(client/)。 使用方法(Server) 编译 macOS/Linux 执行 ./build.sh Windows 执行: ./build....
Snowflake是一项网络服务,可通过一些简单的保证大规模生成唯一的ID号。 第一位是未使用的符号位。 第二部分包括一个41位的时间戳(毫秒),其值是当前时间相对于特定时间的偏移量。 第三部分和第四部分的5位代表...
雪花 :red_heart_selector: 支持我的应用 :red_heart_selector: :red_heart_selector: :red_heart_selector: :smiling_face_with_halo: :smiling_face_with_heart... let document = Snowflake. Document ( data : da
Snowflake:Snowflake数据建模与设计.docx
Snowflake:Snowflake数据共享与合作.docx