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中国植物图像库——最大的植物分类图片库 一、滇白珠…

【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 为什么要写析构函数 前言 今天我们要讨论一下它的“孪生兄弟”,析构函数,它们在某些方面非常相似。 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时&…

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

泊松镇贴 二项分布和泊松分布的表达式 二项分布: 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万亿元,最近几年围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局,深入推进数字化转型,加快形成体系化、生态化实施路径,促进科技与业务加速融合&…

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

场景1: 上传文件接口即Content-Type=multipart/form-data 步骤: 1. 接口url,method以及path正常填写 2.文件上传content-type是multipart/form-data,所以可以勾选【use multipart/form-data】,如果还有其他请求头信息可以添加一个请求头元件 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服务。功能主要包含以下几点: 可以使前后端分离开发更加方便,有利于团队协作接口文档可以在线自动生成,有利于降低后端开发人员编写…

【源码分析】zeebe actor模型源码解读

zeebe actor 模型🙋‍♂️ 如果有阅读过zeebe 源码的朋友一定能够经常看到actor.run() 之类的语法,那么这篇文章就围绕actor.run 方法,说说zeebe actor 的模型。 环境⛅ zeebe release-8.1.14 actor.run() 是怎么开始的🌈 Lon…

【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

那些年,关于CKACKS认证的那些事儿?

前言 遥想2020年的年初,疫情封城封村之际,工作之余在B站将尚硅谷的linux中的k8s视频完整系统的学习了一遍,自此像是打通了任督二脉一般,开启了对k8s的探索之旅,一路也是磕磕绊绊的在工作中使用k8s。 终于在23年的6月仲…

【办公软件】电脑开机密码忘记了如何重置?

这个案例是家人的电脑,已经使用多年,又是有小孩操作过的,所以电脑密码根本不记得是什么了?那难道这台电脑就废了吗?需要重新装机吗?那里面的资料不是没有了? 为了解决以上问题,一般…

技术前沿探索:人工智能与大数据融合的未来

技术前沿探索:人工智能与大数据融合的未来 摘要:本博客将探讨人工智能与大数据融合领域的最新技术趋势、前沿研究方向以及挑战与机遇。通过介绍相关技术和案例,我们希望激发读者对这一领域的兴趣,并为其职业发展提供有益参考。 一…

万字解析设计模式之模板方法与解释器模式

一、模板方法模式 1.1概述 定义一个操作中算法的框架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业…