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. 没有细节的分析,将一个夸片交易拆分成两个片内交易究竟快在哪里?没有更加细致的解释。
  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值