Predis Multi-Zone

A Data Flow Framework with High Throughput and Low Latency for Permissioned Blockchains

联盟链的吞吐瓶颈由共识层和网络层的数据分发过程共同决定。
Predis 协议利用了共识节点的空闲带宽,提前分发区块中的内容即bundle,减少了共识区块中的内容,每个共识区块中能够包含更多的交易,从而提高了吞吐。将数据分发和共识过程解耦,冗余遇到数据可用性(data avaliability)的问题. 也就说如果一个区块要被添加到区块链上,但是区块中的内容还没有被广泛传播,许多的节点还无法访问区块中的内容。
在之前的工作中,面对数据可用性的问题,采用可靠广播解决,例如保证至少 nc-f 个节点收到了预分发的数据。但是在predis的设计中,并不依靠可靠广播RBC。Predis的mempool设计成多条链的形式,有点累计确认的思想在里面。

Multi-zone 中共识节点利用EC编码将bundle分成若干strips。将网络拓扑分成多个zone,每个zone中有relay 节点负责转发 stripes 从而减少每个节点的带宽压力。

PREDIS

在predis 中交易被打包成 bundle然后广播给其他的共识节点,bundle是类似于区块的结构,也包含了指向前一个bundle的hash。同一个节点打包的bundle会穿成一条链。如果一个bundle被共识节点接收并认为是有效的,那么他的前一个bundle也一定被该节点接收并验证是有效的。

tip 指明了当前各个链中的有效bundle的高度。

如果有恶意节点发送冲突的bundle,会被检测到并将恶意节点加入ban list。

请添加图片描述

每个bundle中还指明了node产生bundle时,当前node的mempool中各个链的有效bundle的高度。这可以用来说明每个node当前已知哪些bundle。

当共识的时候leader 要产生 predis block,其中指明了要将哪些bundle中的交易包含进去。关键是确定在每条链的那个高度 cut下来一段bundle。
leader 会根据mempool中的各个链最新的bundle( tip )中的tip list 确定,至少有 nc-f 个节点所拥有的高度。
图中的情景,链 bdl 3 就选取了高度4,因为 5 3 5 4 中有3个节点已经收到了bdl3的高度为4的bundle。

predis 将leader 的带宽消耗从O(nc x ntx) 降到了 O(nc)

MULTI-ZONE

在星形拓普网络中,随着共识节点数量的增加,共识的带宽开销也会增加。
muiti-zone 将网络拓扑划分成多个zone,可以根据节点的地理位置和连通性进行划分。

我们将全节点分成三类,共识节点、relayer nodes、普通全节点。

共识节点收到bundle之后使用erasure code 将bundle 划分成 nc 个strips,nc 是共识节点的数量,第 i 个共识节点负责转发第i个strips给relayer,relayer负责将其订阅的strips转发给同一个zone的其他节点。这样就减少了共识节点分发bundle的带宽压力。

本文中还有比部分逻辑是用来叙述如何确定 relayer,以及relayer如何调整其对应订阅的strips。每个新加入zone的节点,查询当前的relyaer,只订阅每个relayer一半的stripes。如果新节点还有strips没有订阅,则自身称为relayer,从共识节点接收转发剩余的stripes。我认为这样设计能够使得尽可能多的节点称为relayer。
当relayer退出的时候,relayer也要和普通节点做好交接,将relayer的身份传递出去。

Predis有两个优点:
(1)Predis的mempool采用单链结构,以更低的消息复杂度开销实现与可靠广播相同的效果; (2)Predis避免了区块大小随着其包含的交易数量线性增加的问题。这意味着随着交易量的增加,Predis 中的提案(称为 Predis 区块)的大小保持稳定,这与对应模型中的线性增长不同。
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024龙年特别篇 -- 魔法指针 之 assert断言 传址调用 传值调用

你是否为 assert断言,传址调用,传值调用而进一步加深印象,接下来就让白子寰同学为你详细讲解!!! 目录 assert断言 概念 assert介绍 #define NDEBUG的使用 注意事项 传值调用 VS 传址调用 传值调用…

C语言推荐书籍

本书详细讲解了C语言的基本概念和编程技巧。全书共17章。第1章、第2章介绍了C语言编程的预备知识。第3章~第15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串…

CS_Smb_Beacon上线不出网机器

当我们想上线不出网的机器的时候,我们可以通过上传工具来实现,但是有没有不用上传工具的方法呢??? 有!!! 而且cs会自带!!! 1.基础的网络拓扑 以下…

MYSQL数据库详解

一、数据库的基本概念 数据(data):指对客观事物进行描述并可以鉴别的符号。这些符号是可识别的,抽象的。 比如数字、图片、音频等。 数据库管理系统(DBMS):数据库极其管理它的软件组成。 数据库…

RocketMQ-架构与设计

RocketMQ架构与设计 一、简介二、框架概述1.设计特点 三、架构图1.Producer2.Consumer3.NameServer4.BrokerServer 四、基本特性1.消息顺序性1.1 全局顺序1.2 分区顺序 2.消息回溯3.消息重投4.消息重试5.延迟队列(定时消息)6.重试队列7.死信队列8.消息语…

2.21C语言学习

Floyd算法原理 Floyd算法是一个经典的动态规划算法,它又被称为插点法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特弗洛伊德命名。Floyd算法是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,算法目标是寻找…

工厂方法模式Factory Method

1.模式定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使得一个类的实例化延迟到子类 2.使用场景 1.当你不知道改使用对象的确切类型的时候 2.当你希望为库或框架提供扩展其内部组件的方法时 主要优点: 1.将具体产品和创建…

解决NPE的三种方式

解决NPE的三种方式 NullPointerException(空指针异常,NPE)是Java编程中常见的错误。解决NPE的方法可以从以下三个方面考虑: 明确处理空引用情况: 在某些情况下,无法避免使用可能为空的引用对象。此时&…

【漏洞复现】H3C SecParh堡垒机任意用户登录漏洞

Nx01 产品简介 H3C SecParh堡垒机是一款专业用于安全管理的堡垒机产品,它通过强大的访问控制功能和安全审计功能,实现对网络服务器的远程安全管理和监控。 Nx02 漏洞描述 H3C SecParh堡垒机的get_detail_view.php中存在任意用户登录漏洞。攻击者可以构建…

计算机体系架构初步入门

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:高性能(HPC)开发基础教程 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 目录 1 计算机五大…

备战蓝桥杯---动态规划(应用2(一些十分巧妙的优化dp的手段))

好久不见,甚是想念,最近一直在看过河这道题(感觉最近脑子有点宕机QAQ),现在算是有点懂了,打算记录下这道又爱又恨的题。(如有错误欢迎大佬帮忙指出) 话不多说,直接看题&…

2024三掌柜赠书活动第十一期:精通区块链开发技术(第2版)

目录 前言关于区块链开发技术关于《精通区块链开发技术(第2版)》编辑推荐内容简介作者简介图书目录书中前言/序言《精通区块链开发技术(第2版)》全书速览结束语 前言 作为开发者经常在技术圈活动,会接触各种前沿技术,比如区块链技术的崛起引发了全球范…

MySQL初识——安装配置

文章目录 1. MySQL卸载2. 获取MySQL官方yum源安装包3. 安装4. 启动MySQL5. 登录6. 配置配置文件 Tips: 本章是Centos 7安装配置myql,配置操作用的是root权限 1. MySQL卸载 首先我们先查看一下系统中是否有mysql服务 ps axj | grep mysql如果有&#xf…

部署安装有道QanyThing

前提条件: 1、win10系统更新到最新的版本,系统版本最好为专业版本 winver 查看系统版本,内部版本要大于19045 2、CPU开启虚拟化 3、开启虚拟化功能,1、2、3每步完成后均需要重启电脑; 注:windows 虚拟…

关于 AC 自动机

什么是 AC 自动机 AC 自动机,全称 Aho-Corasick 自动机,是一种用于字符串搜索的算法,由 Alfred V. Aho 和 Margaret J. Corasick 在 1975 年提出。这个算法是为了解决在一个主文本字符串中查找多个模式字符串(或称为“关键词”&a…

IOT-Reaserch安装ghidra以及IDEA和ghidra的配置

Linux research 5.4.0-91-generic #102~18.04.1-Ubuntu SMP Thu Nov 11 14:46:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux java --version IOT自带的java是符合要求的,不需要额外下载 iotresearch:~/install-file$ java --version openjdk 11.0.13 2021-10-19 …

linux platform架构下I2C接口驱动开发

目录 概述 1 认识I2C协议 1.1 初识I2C 1.2 I2C物理层 1.3 I2C协议分析 1.3.1 Start、Stop、ACK 信号 1.3.2 I2C协议的操作流程 1.3.3 操作I2C注意的问题 2 linux platform驱动开发 2.1 更新设备树 2.1.1 添加驱动节点 2.1.2 编译.dts 2.1.3 更新板卡中的.dtb 2.2 …

观察者模式, 发布-订阅模式, 监听器模式

观察者模式, 发布-订阅模式, 监听器模式 观察者模式 观察者模式是一种行为型设计模式, 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 角色模型和结构图 在观察者模式中,只有两种…

⭐北邮复试刷题LCR 018. 验证回文串__双指针 (力扣119经典题变种挑战)

LCR 018. 验证回文串 给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的 回文串 。 示例 1: 输入: s “A man, a plan, a canal: Panama” 输出: true 解释…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化

在Simulink中使用ROS2控制无人机沿自定义圆形轨迹飞行并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模型并完成基本配置整体框架各子系统实现原理…