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.mfbz.cn/a/191263.html

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

相关文章

Adversarial Attack on Graph Structured Data(2018 PMLR)

Adversarial Attack on Graph Structured Data----《图结构数据的对抗攻击》 摘要 基于图结构的深度学习已经在各种应用中显示出令人兴奋的结果。然而,与图像或文本对抗攻击和防御的大量研究工作相比,此类模型的鲁棒性却很少受到关注。在本文中&#xf…

【漏洞复现】Array VPN任意文件读取漏洞

漏洞描述 华耀(中国)科技有限公司(简称:Array)于2003年创建于北京,是优秀的网络功能平台解决方案提供商,也是应用交付解决方案、移动应用接入(SSL VPN)解决方案的全球领导者。华耀现有员工200余人,其中研发团队占到100余人,总部位于北京。并在北京、上海、广州、杭…

知识点小总结

‘Integer(int)‘ 已经过时了 https://blog.csdn.net/qq_43116031/article/details/127793512 解决Java中的“找不到符号“错误 解决Java中的“找不到符号“错误_java: 找不到符号_很酷的站长的博客-CSDN博客 可右键打开 错误: 编码 UTF-8 的不可映射字符 错误: 编码 UTF-8 …

1603. 整数集合划分(2016年408数据结构算法题)

一、题目 1603. 整数集合划分https://www.acwing.com/problem/content/description/1605/ 二、算法的基本设计思想 由题意知,将最小的 个元素放在 中,其余的元素放在 中,分组结果即可满足题目要求。仿照快速排序的思想,基于枢…

面向对象编程:Rust的面向对象特性

欢迎关注我的公众号lincyang新自媒体,回复关键字【程序员经典书单】,领取程序员的100本经典书单 大家好!我是lincyang。 今天我们将深入探讨Rust语言中的面向对象编程(OOP)特性,并将其与其他流行编程语言进…

C语言之指针知识点总结

C语言之指针知识点总结 文章目录 C语言之指针知识点总结1. 初识指针1.1 取地址操作符 &1.2 指针变量1.3 解引用操作符 *1.4 指针变量1.4.1 大小1.4.2 指针类型的意义 1.5 void*指针1.6 const关键字1.61 const修饰变量1.6.2 const修饰指针变量 1.7 指针的运算1.7.1 指针-整数…

微信小程序便民小工具源码

微信小程序便民小工具源码,包含身材计算,房贷计算器,工资计算器,血型计算器,进制计算器,量角器,计数器等便民工具。 微信扫一扫即可预览 微信扫一扫即可预览 下载链接:https://www.ym4j.com/program/7525

(二) Windows 下 Sublime Text 3 安装离线插件 Anaconda

1 下载 Sublime Text 3 免安装版 Download - Sublime Text 2 下载 Package Control,放到 Sublime Text Build 3211\Data\Installed Packages 目录下。 Installation - Package Control 3 页面搜索 anaconda anaconda - Search - Package Control Anaconda - Pac…

4. 标准 IO 库

4. 标准 IO 库 1. 标准 IO 简介2. FILE 指针3. 标准输入、标准输出和标准错误4. fopen() 和 flose()5. fread() 和 fwrite()6. fseek 定位7. 检查或复位状态7.1 feof()7.2 ferrof()7.3 clearerr() 8. 格式化 IO8.1 格式化输出8. 2 格式化输入 9. IO 缓冲9.1 文件 IO 的内核缓冲…

坚鹏:中国人寿临沂公司当下中国经济形势与寿险业发展机遇培训

中国人寿保险(集团)公司属国家大型金融保险企业,2016年中国人寿入主广发银行,开启保险、投资、银行三大板块协同发展新格局。2022年,集团公司合并营业收入站稳万亿平台;合并总资产突破6万亿元大关。中国人寿…

数据结构与算法Java版本单元测验题

1.【实验题 2-2】实现以下对单链表的操作,题意和算法描述见《习题解答》图 2-7。 //将单链表 list 逆转,将各结点的 next 指向其前驱。泛型方法,返回值类型前声明类型参数 T public static void reverse(SinglyList list) 【思考题 2-6】实现…

MySQL进阶知识

目录 MySQL的Linux安装 存储引擎 MySQL的体系结构 存储引擎简介 存储引擎特点 InnoDB 逻辑存储结构 MyISAM Memory 对比 存储引擎选择 索引 介绍 索引结构 BTree索引 Hash索引 索引分类 索引语法 SQL性能分析 SQL执行频率 慢查询日志 profile详情 expla…

VUE简易购物车程序

目录 效果预览图 完整代码 效果预览图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

【数据结构初阶】树,二叉树

树&#xff0c;二叉树 1.树概念及结构1.1树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 2.二叉树概念及结构2.1概念2.2现实中的二叉树2.3 特殊的二叉树2.4 二叉树的性质2.5 二叉树的存储结构 1.树概念及结构 1.…

开发知识点-ArkTS-鸿蒙开发-Typescript

Typescript IED IED https://developer.harmonyos.com/cn/develop/deveco-studio/#download

我的第一次SACC之旅

今年有很多第一次&#xff0c;第一次作为“游客”参加DTCC&#xff08;中国数据库大会&#xff09;&#xff0c;第一次作为讲师参与ACDU中国行&#xff08;成都站&#xff09;&#xff0c;第一次参加OB年度发布会&#xff08;包含DBA老友会&#xff09;&#xff0c;而这次是第一…

弹窗concrt140.dll丢失的解决方法,深度解析concrt140.dll丢失的原因

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示或者系统崩溃的情况。其中&#xff0c;concrt140.dll是一个常见的错误提示&#xff0c;这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;本文将介绍5种详细的解决方法&#xff0c;帮助您恢…

SpringBoot进阶——解释springboot的自动配置原理

相关的博客文章如下&#xff1a; SpringBootApplication注解的理解——如何排除自动装配 & 分布式情况下如何自动加载 & nacos是怎么被发现的 引出 1.spring.factories文件存储能够进行自动配置的Bean信息&#xff1b; 2.EnableAutoConfiguration关闭数据源的自动配置…

SpringBoot——自定义start

优质博文&#xff1a;IT-BLOG-CN 一、Mybatis 实现 start 的原理 首先在写一个自定义的start之前&#xff0c;我们先参考下Mybatis是如何整合SpringBoot&#xff1a;mybatis-spring-boot-autoconfigure依赖包&#xff1a; <dependency><groupId>org.mybatis.spr…

【Linux】一文看懂基础IO并模拟实现

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法…感兴趣就关注我吧&#xff01;你定不会失望。 本篇导航 0. C语言的文件接口1. 系统的文件接口1.1 open打开文件1.2 write写入文件 2. 文件系统介绍2.1 如何理解一切皆文件? 3. 输入输…
最新文章