深度探索区块链/基于Gossip的P2P数据分发(4)
一。概述
背书节点模拟执行签名的结果会经过排序服务(Ording service)广播给所有的节点。
它提供的是一种原子广播服务(Atomic Broadcast),即在逻辑上所有节点接收到的消息顺序是相同的,相同序号都是相同的内容。
排序服务广播的信息包括:
【1】。更新的状态信息
【2】。账本信息。。。
这些信息需要广播给所有节点。
若排序服务的所有节点都保持直接连接,在节点较多,数据量较大情况下容易形成单节点故障或成为性能瓶颈。
由超级账本节点组成的区块链网络本身就是一种去中心化的网络,利用P2P实现数据广播是显而易见的做法。
最觉见的方法是--洪泛(Flooding)
【1】洪泛是节点在接收到数据包以后,直接转发给所有的邻居节点,直到所有的节点都接收到了数据包或数据包的跳数(Hop count)超过一定的限制。
【2】洪泛优点:
节点覆盖率高:若在一个源节点 & 目标节点间存在一条路径,洪泛就能通过广播以最快速度找到这条路径。
很好冗余度:在不稳定的网络中提高网络健壮性(Robustness)
【3】洪泛缺点:
低效 & 广播风暴
超级账本采用Gossip的协议实现P2P数据分发,与洪泛的广播策略不同:
【1】节点在接收到数据包后,不直接转发给邻居节点,而是会计算一下概率,根据计算结果判断是否需要进行转发。
【2】转发概率设置为:
A。固定值的纯Gossip(Pure Gossip)
B。盲Gossip(Blind Gossping)
C。固定概率Gossip(Fixed probablility Gossip)
转发概率还可根据其他一些信息动态计算,如:节点的度(Degree),全局拓扑结构等。
在超级账本实现中,采用的是随机的选择k(默认值为3)个节点进行转发,若邻居节点的数据还没有需要转发的节点数量多,就全部转发。

二。超级账本中的Gossip协议



三。成员认证及身份管理




四。节点启动及成员管理


五。主节点选举过程

六。基于反熵的状态同步


七。数据传播过程

八。多通道的支持


九。消息的验证策略


十。消息的多路分用及分区






十一。和Gossip相关的配置参数



本章小结:

深度探索区块链/基于Gossip的P2P数据分发(4)的更多相关文章
- [转帖]深度解析区块链POW和POS的区别
深度解析区块链POW和POS的区别 Proof of Work 还有Proof of Stake 之前理解程了 state ... 股权的意思 还有 delegated proof of Stake ...
- 区块链、云计算、大数据、人工智能、FinTech带来的挑战与机遇,中国技术开放日上海站精彩回顾
区块链.云计算.大数据.人工智能.FinTech带来的挑战与机遇,中国技术开放日上海站精彩回顾 | 作者 韩婷 发布于 2016年12月26日. 估计阅读时间: 不到一分钟 | 欲知区块链.VR.Te ...
- 区块链3.0:拥抱EOS
EOS是当下最火的区块链技术,被社会广泛看好为下一代区块链3.0.不同于以太坊的学习,EOS的主语言是C++,本文作为EOS研究的首篇文章,重点介绍EOS的创新点,它的周边生态,各种概念原理的解释,以 ...
- 谈谈今年很火的区块链 CDN
2017 年初,区块链被越来越多的人知道.区块链的概念其实很早就被提出来,曾经有人说过"区块链技术被认为是继蒸汽机.电力.互联网之后,下一代颠覆性的核心技术. 如果说蒸汽机释放了人们的生产力 ...
- 以太坊区块链Java(EthereumJ)学习笔记:概述
本系列文章介绍以太坊区块链基于Java语言的解决方案.通过介绍EthereumJ定义的主要模块和Class,希望为大家学习和使用EthereumJ提供一些帮助. 整体架构 以太坊的Java解决方案主要 ...
- 001/Go语言构建区块链(mooc)
1.区块链发展与现状 视频地址:https://www.imooc.com/video/17452 注意: 比特币与以太坊最大的区别在于: 以太坊引入了对图灵完美智能合约的支持,人们可以将任何业务逻辑 ...
- NGK.IO网络安全大会暨区块链安全与应用创新论坛圆满落幕
近日,NGK.IO网络安全大会暨区块链安全与应用创新论坛于美国McCormick Place国际会议中心圆满落幕. 论坛围绕"进化繁荣发展·安全链接未来"这一主题,由NGK.IO硅 ...
- Datahero Inc利用区块链溯源,造福各行各业
近些年来,随着区块链技术的不断崛起以及快速发展,越多越多的人提出将区块链技术引入到溯源系统当中,溯源也成为了区块链技术的重要应用场景之一. 目前,Datahero inc已建设一整套的溯源平台系统,基 ...
- Rust 实现一个简单的区块链
一.背景 近期用 Rust 实现了 Jeiwan/blockchain_go,与原项目相比没有加入新的功能,只是换了一个编程语言实现了一遍,源码放在 Github 上. 开发这个项目,花费了好几个周末 ...
随机推荐
- 在C语言中连续使用scanf()函数出现的问题
#include<stdio.h> int main() { ],*c; printf("input string:\n"); scanf("%c" ...
- 对table最后一行显示与隐藏
//显示table最后一行,如果用block的话,可能会影响到页面的样式 $("#table tr").get($("#table tr").length - ...
- Proxy + Reflect 实现 响应的数据变化
Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等) let p = new Proxy(target, handler); get(target, propKey, r ...
- vue开发使用vue-particles如何兼容IE11?
最近开发vue项目,项目有一个粒子特效使用vue-particles.项目用vue-cli构建,webpack打包完毕,丢到服务器,chrome访问完美,测试360和Edge也正常.遗憾的是,在IE1 ...
- [原创]Laravel 基于redis队列的解析
目录 参考链接 本文环境 为什么使用队列 Laravel 中的队列 分发任务 任务队列 Worker Last-Modified: 2019年5月10日11:44:18 参考链接 使用 Laravel ...
- Acvitivi网关(十一)
1排他网关 1.1 什么是排他网关 排他网关(也叫异或(XOR)网关,或叫基于数据的排他网关),用来在流程中实现决策. 当流程执行到这个网关,所有分支都会判断条件是否为 true,如果为 true 则 ...
- A - Biorhythms (第三周)
A - Biorhythms 链接:https://vjudge.net/contest/154063#problem Description 人生来就有三个生理周期,分别为体力.感情和智力周期,它们 ...
- 170829-关于AOP面向切面编程
1.AOP概念:Aspect Oriented Programming 面向切面编程 2.作用:本质上来说是一种简化代码的方式 继承机制 封装方法 动态代理 …… 3.情景举例 ①数学计算器接口[M ...
- Jquery $().each()与$.each(data,function(i,obj))区别
在遍历DOM时,通常用$(selector).each(function(index,element))函数: 在遍历数据时,通常用$.each(dataresource,function(index ...
- mysq访问方式
mysql -h10.81.32.196 -P5152 -Dns_map_data_new -uwangyuchuan_r -p3DLg15rhSsm0O7Nsselect uid,name from ...