BrokerChain

BrokerChain: A Cross-Shard Blockchain Protocol for Account/Balance-based State Sharding

我总感觉这篇文章不完整,缺少一些东西。或者说有些地方并没有详细说。比如状态图的构建,网络重分片的的配置过程。都直接忽略了。

Motivation

1 跨片交易不可避免的发生,如何降低跨片交易的数量
2 存在hot shard的现象,如何让负载更加均衡。

减少跨片交易

  • duration-limited eventual automicity
  • starte-partition
  • account-segmentation

Overview

在brokerchain中存在两种shard

  • M-shard 负责打包交易出块 有S个

  • P-shard 负责划分账户状态 有个一个

  • 在shard内部使用PBFT协议进行共识。M-shard在新的epoch中创建的第一个tx blcok 要跟在state-block B t B^t Bt 之后。

  • P-shard持续接受从M-shard生成的区块并更新所有账户的状态图,当所有区块生成结束,状态图固定后,执行状态图的划分,达到各个shard 负载均衡。

  • p-shard 对状态区块进行共识

  • M-shard 根据 state block 对状态进行冲新划分。

state-graph partition
状态图划分,对整个网络成状态图,图上的边是两个用户之间的交易数量,点的权值是一个用户交易的总数量。
使用Metis 算法将状态图进行划分。

请添加图片描述

account segmentation
这个和一个用户对应多个庄户地址有区别,在不同的shard中,一个用户使用相同的账户地址,存放在不同的shard中。

BrokerChain protocol stores the deposits of an account located at different shards with the same account address.

请添加图片描述

  • 这样做可以减少夸片交易的数量。
  • 能够缓解 hot shard问题

Modified Shard State Tree

使用一个修改过的分片状态数来存储用户状态。

ψ \psi ψ 是一个 0 -1 数组,1 代表此账户在这个分片中有存储。 ψ = [ e 1 , e 2 , . . . , e s ] \psi = [e_1,e_2,...,e_s] ψ=[e1,e2,...,es]
一个用户的账户状态通过下面的进行描述

X μ X_{\mu} Xμ 代表了账户地址, η \eta η 代表了账户的nonce, ω \omega ω 代表value, ζ \zeta ζ 是账户状态 code字段

不同的shard 维护不同的 mSSTs,主要是每个local mSSTs 的value nonce code字段不同。

请添加图片描述

跨片交易处理

要成为broker,首先要保证有足够多的资产才可以成为broke。
要设立一定的激励机制鼓励账户成为broker

成功的跨片交易处理

首先账户A 发出一个原始的交易,交易是给B转v的钱,并指定broker c、token-lock duration H l o c k H_{lock} Hlock

请添加图片描述

H l o c k H_{lock} Hlock 是为了交易在shard1上链后等待足够多的时间才可以使用这笔钱,延迟确认,尽量避免交易需要被回滚的情况。
η \eta η 代表A和C的nonce

当收到叫一个 θ r a w \theta_{raw} θraw broker创建一笔交易 θ 1 \theta_1 θ1
交易 θ 1 \theta_1 θ1上链时,当前的块高度为 H s o u r c e H_{source} Hsource,但是交易中的钱在 [ H s o u r c e , H s o u r c e + H l o c k ] [H_{source}, H_{source} + H_{lock}] [Hsource,Hsource+Hlock]之间被锁定,broker会发送产生一笔的交易 θ 2 \theta_2 θ2 ,只有当shard2在shard1的高度小于等于 H s o u r c e + H l o c k / 2 H_{source} + H_{lock}/2 Hsource+Hlock/2 时,交易才会被接受。

失败的跨片交易

shard1的高度到达 H s o u r c e + H l o c k / 2 H_{source} + H_{lock}/2 Hsource+Hlock/2 时,shard2还没有收到交易 θ 2 \theta_2 θ2 ,shard2会认定这个跨片交易失败,并且极有可能是broker私吞了这笔钱。 shard2会将 θ 1 \theta_1 θ1 加入区块中,并提供一个失败证明 γ \gamma γ给 source shard,source shard 将会把 γ \gamma γ 加入高度小于 H s o u r c e + H l o c k H_{source} + H_{lock} Hsource+Hlock 的区块中。

如果 γ \gamma γ 在广播给source shard的过程中丢失,会重新进行广播。 这又是语言建模,也不考虑实际的广播轮次。

token-lock duration H l o c k H_{lock} Hlock 设置多大,设为平均夸片交易处理时间的 20倍。

Duration-Limited Eventual Atomicity
在 monoxide 的relay机制中,不要求有时间的限制,所以一个跨片交易可能等待很长时间,但是在borkerchain的设计中就要是有限时间的等待。

这篇文章有一些问题:

  1. 没有更细的讲述整个状态图应该如何进行划分。
  2. 没有细节的分析,将一个夸片交易拆分成两个片内交易究竟快在哪里?没有更加细致的解释。

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

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

相关文章

流程图是什么,用什么软件做?

在工作流程中,经常会遇到需要图形化呈现整个流程的情况。流程图就是一种一目了然的图形化表现方式,便于人们理解、沟通和管理整个流程。 1.Visio Visio是一款微软公司的图表软件,可以用于创建各种类型的流程图、组织结构图、网络图、平面图…

编译原理词法分析器

算法描述 对于给出的源代码,我们按行将其读入,对于每一行单独进行词法分析。 过滤行前后空格对字符串进行词语的分割 有空格则把空格前的字符归为一个词比较上一个字符和当前字符是否需要进行分割 检查词语是否合法词语合法则按 [待测代码中的单词符号…

常见树种(贵州省):019滇白珠、杜茎山、苍山越桔、黄背越桔、贵州毛柃、半齿柃、钝叶柃、细枝柃、细齿叶柃木、土蜜树、山矾、胡颓子、檵木

摘要:本专栏树种介绍图片来源于PPBC中国植物图像库(下附网址),本文整理仅做交流学习使用,同时便于查找,如有侵权请联系删除。 图片网址:PPBC中国植物图像库——最大的植物分类图片库 一、滇白珠…

【面经八股】搜广推方向:常见面试题(一)

【面经&八股】搜广推方向:常见面试题(一) 文章目录 【面经&八股】搜广推方向:常见面试题(一)1. 线下效果提升、线上效果不好。2. XGBoost 和 GBDT是什么?有什么区别?3. 偏差与方差。延伸知识(集成学习的三种方式: Bagging、Boosting、Stacking)。4. 随机森林…

【Leetcode】【实现循环队列】【数据结构】

代码实现: typedef struct {int front;int back;int k;int* a;} MyCircularQueue;bool myCircularQueueIsEmpty(MyCircularQueue* obj) {return obj->frontobj->back; }bool myCircularQueueIsFull(MyCircularQueue* obj) {return (obj->back1)%(obj->…

【数据中台】开源项目(2)-Wormhole流式处理平台

Wormhole 是一个一站式流式处理云平台解决方案(SPaaS - Stream Processing as a Service)。 Wormhole 面向大数据流式处理项目的开发管理运维人员,致力于提供统一抽象的概念体系,直观可视化的操作界面,简单流畅的配置管…

GEE 22:基于GEE实现物种分布模型(更新中。。。。。。)

物种分布模型 1. 数据点准备1.1 数据加载1.2 去除指定距离内的重复点1.3 定义研究区范围1.4 选择预测因子1.5 伪不存在点生成 1. 数据点准备 1.1 数据加载 首先需要将CSV文件导入到GEE平台中,同样也可以导入shp格式文件。 // 1.Loading and cleaning your species …

P17C++析构函数

目录 前言 01 什么是析构函数 1.1 举个栗子 02 为什么要写析构函数 前言 今天我们要讨论一下它的“孪生兄弟”,析构函数,它们在某些方面非常相似。 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时&…

Linux学习笔记-芯片性能检测

文章目录 概述Dhrystone(单核性能测试工具)简介:源码下载:源码编译:使用及输出结果 coremark(多核性能测试工具)简介:源码下载:源码编译:使用及输出结果&…

如何深刻理解从二项式分布到泊松分布

泊松镇贴 二项分布和泊松分布的表达式 二项分布: P ( x k ) C n k p k ( 1 − p ) n − k P(xk) C_n^kp^k(1-p)^{n-k} P(xk)Cnk​pk(1−p)n−k 泊松分布: P ( x k ) λ k k ! e − λ P(xk) \frac{\lambda^k}{k!}e^{-\lambda} P(xk)k!λk​e−…

坚鹏:中国工商银行数字化背景下银行公司业务如何快速转型培训

中国工商银行作为全球最大的银行,资产规模超过40万亿元,最近几年围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局,深入推进数字化转型,加快形成体系化、生态化实施路径,促进科技与业务加速融合&…

【2023 年终盘点】今年用的最多的 10 款 Mac 应用

分享顺哥今年用的最多的 10 款 Mac 应用。 排名不分先后,涉及各个方面的应用。 大家有好用的软件也欢迎在评论区留言分享! 顺哥博客 部分软件下载地址:顺哥的文件站 Mac 篇 以下 10 款应用大多数为免费应用,收费的会标明。 部分收费软件的破解版可以到这边下载 https:…

Vue框架学习笔记——数据代理

文章目录 前文提要数据代理的概念MVVM模型和Vue中的数据代理M,模型V,视图VM,视图模型 前文提要 本人仅做个人学习记录,如有错误,请多包涵 数据代理的概念 使用一个对象代理对另一个对象中属性的操作。 MVVM模型和Vu…

开发、测试、生产环境

开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。简单讲就是项目尚且处于编码阶段,一般这时候会把代码放在开发环境中,不会放在生产环境中。 …

【JMeter】不同场景下的接口请求

场景1: 上传文件接口即Content-Type=multipart/form-data 步骤: 1. 接口url,method以及path正常填写 2.文件上传content-type是multipart/form-data,所以可以勾选【use multipart/form-data】,如果还有其他请求头信息可以添加一个请求头元件 3.请求参…

ubuntu 使用快照启动polygon主网

文章目录 一、 环境部署1.1 golang环境部署1.2 git安装1.3 gcc安装1.4 zstd 安装1.5 pv 安装1.6 aria2c 安装二、安装 polygon2.1 heimdall 安装2.1.1 heimdall 编译2.1.2 初始化 heimdall2.1.3 修改配置文件2.2 bor 安装2.2.1 bor 编译2.2.2 创建bor数据目录2.2.3 修改配置文件…

痤疮分类-yolov5 学习过程

1、在github上下载yolov5-5.0的源码。 GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

【数据中台】开源项目(2)-Dbus系统架构

大体来说,Dbus支持两类数据源: RDBMS数据源 日志类数据源 1 RMDBMS类数据源的实现 以mysql为例子. 分为三个部分: 日志抽取模块(最新版DBus已经废弃该模块,使用canal直接输出到kafka) 增量转换模块 全量拉取模块 1.1 日志抽…

【JavaEE初阶】线程安全问题及解决方法

目录 一、多线程带来的风险-线程安全 1、观察线程不安全 2、线程安全的概念 3、线程不安全的原因 4、解决之前的线程不安全问题 5、synchronized 关键字 - 监视器锁 monitor lock 5.1 synchronized 的特性 5.2 synchronized 使用示例 5.3 Java 标准库中的线程安全类…

【Spring Boot】如何集成Swagger

Swagger简单介绍 Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。功能主要包含以下几点: 可以使前后端分离开发更加方便,有利于团队协作接口文档可以在线自动生成,有利于降低后端开发人员编写…