分片区块链:BrokerChain

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

1. 现有方案的局限性

1.1 热分片现象

Monoxide分片方案采用 异步共识组 的结构,每个共识组(即分片)独立处理一部分交易。然而,由于区块链的 账户部署机制,某些分片可能成为 热门账户、资产、Dapp 等的聚集地,导致跨分片交易非常频繁,负载显著高于其他分片,即 热分片现象

1.2 热分片带来的问题

  1. 片内交易拥堵
  2. 跨分片交易确认时间受影响,冷分片被迫等待热分片处理

2. BrokerChain的设计目标

为了解决热分片问题,BrokerChain从两个方面进行优化:

  1. 尽可能让分片负载均衡
  2. 减少跨分片交易

3. 网络分片、交易分片与状态分片

  1. 网络分片:每个节点只与本分片的其他节点通信,减少通信开销,提高共识效率。
  2. 交易分片:不同交易被分配到不同分片处理,单笔交易只需被特定分片独立执行,不需全网验证,提高吞吐量,减少计算压力。
  3. 状态分片:将区块链的账户状态和存储数据划分到不同分片,每个分片只存储自己分片的账户数据,减少存储压力,提高查询效率。

4. BrokerChain的设计

4.1 两种分片

  • M-shard(交易分片,Transaction Shard):负责处理交易(TX)。
  • P-shard(状态分配,
  • Partition Shard):负责维护账户状态,并调整分片的状态分布。

5. BrokerChain的运行阶段

BrokerChain运行阶段

5.1 身份建立阶段(Identity Establishment)

对应阶段:PoW 加入(图 ①)

5.1.1 过程

新节点需要通过 PoW(工作量证明) 机制加入某个分片(Shard)。在系统中,绿色的节点代表 诚实节点,红色的节点代表 可能的恶意节点。这个 PoW 机制确保了恶意节点不能轻易渗透整个系统。

5.1.2 原因

在一个分片化的区块链中,每个分片应该有足够的 诚实节点 来确保安全性。PoW 机制可以防止女巫攻击(Sybil Attack),即恶意用户伪造多个身份来破坏共识。

5.2 交易共识阶段(Transaction Consensus)

对应阶段:PBFT 交易共识(图 ②)

5.2.1 过程

每个 M-shard 处理交易,使用 PBFT 共识 来验证交易,并生成交易块(TX Block)。图中的蓝色和红色方框 代表交易块,它们在各自的 M-shard 内部达成共识。交易块会被不断生成,并传递到 P-shard,等待进一步处理。

5.2.2 细节解析

待上链交易池(左上角) 存储了当前所有待处理的交易。PBFT 共识协议(蓝色和红色框) 确保了所有 M-shard 内部的交易被正确处理,并形成新区块 B t − 1 B^{t-1} Bt1

5.2.3 原因

传统区块链(如比特币、以太坊)的交易确认需要 全网同步,而 分片区块链(Sharding)允许多个分片同时并行处理交易,提高吞吐量。但这也带来了 跨分片交易(Cross-Shard Transaction,CTX)问题,因此 状态划分阶段 需要优化账户分布,减少 CTX 发生的概率。

5.3 状态划分阶段(State Partitioning)

对应阶段:账户交易关系分析 + 状态图划分(图 ③ 和 ④)

5.3.1 过程

P-shard(状态分片) 从 M-shard 生成的 TX 块中收集交易信息,并构造一个 账户交易关系图(State Graph)。这个状态图 描述了哪些账户之间存在频繁交易基于交易关系,P-shard 重新划分分片,以减少跨分片交易的发生

5.3.2 细节解析

图③:构建账户交易关系图
这个图是一个 带权图(Weighted Graph)

  • 节点(Node)= 账户
  • 边(Edge)= 账户之间的交易关系
  • 权重(Weight)= 交易次数

例如:

  • 蓝色分片(#1)内的账户 4 与 6 之间有 3 笔交易。
  • 红色分片(#2)内的账户 10 和 11 之间有 6 笔交易。

图④:状态分割调整
通过计算交易关系图,系统可以决定 哪些账户应该移动到不同的分片,以优化跨分片交易(CTX)。例如:

  • 绿色账户在状态 #1 内与红色账户有较多交易,因此可能需要调整其分片归属,以减少跨分片交易的发生。
5.3.3 原因

跨分片交易的处理成本很高(需要多个分片协调)。通过优化账户分配,将交易最频繁的账户分配到同一个分片,可以显著提高效率。

5.4 状态重组阶段(State Reconfiguration)

对应阶段:PBFT 形成新状态块 + 迁移账户状态(图 ⑤ 和 ⑥)

5.4.1 过程

P-shard 运行 PBFT 共识,生成新的状态块 B^t。这个状态块包含 新的分片划分信息,并被广播到所有 M-shard。M-shard 根据状态块 B^t 重新调整账户的状态归属

5.4.2 细节解析

图⑤:PBFT 确认新的状态分区
经过前面的状态划分后,新的状态分区方案需要达成共识(PBFT)。这个新状态块 B^t 会被广播到所有 M-shard,以便应用到下一个纪元(Epoch)。

图⑥:状态迁移
M-shard 依据 状态块 B^t 的信息,对账户进行分片调整。 例如:

  • 之前 状态 #1 中的绿色账户被迁移到状态 #2,因为它与状态 #2 的账户交易更频繁。
5.4.3 原因

这是 整个优化过程的最终步骤,确保所有分片在新的纪元(Epoch t+1)中能够按照最优状态继续运行。状态的动态调整,可以适应不同时间段的交易行为,保持系统的长期优化。

6. 实际例子

在这里插入图片描述

假设我们有一个 包含两个分片(Shard #1 和 Shard #2) 的区块链系统,以及 三个账户(A、B 和 C)。

当前账本包含 三笔原始交易:

  • TX #1: A → C
  • TX #2: B → C
  • TX #3: A → B

6.1 对比

Monoxide

  • Shard 1:A
  • Shard 2:B、C
  • Cross-Shard:TX 1, TX 3
  • Intra-Shard:TX 2

两个问题:

  1. 分片1、2的负载不均衡
  2. 3笔交易中两笔是跨分片交易

BrokerChain

  • 将C拆成 C1 + C2,分别放置在两个分片中
  • Shard 1:A、C1
  • Shard 2:B、C2
  • Cross-Shard:TX 3
  • Intra-Shard:TX 1, TX 2

结果:

  • 减少了一笔跨分片交易
  • 两笔交易负载均衡

7. BrokerChain的账户分片机制

7.1 特点

  1. 账户地址相同:所有分片中的账户地址保持一致。
  2. 协议自动调整:整个流程对用户透明,无需手动管理多个账户。
  3. 优势
    • 减少用户负担:无需手动创建多个账户。
    • 避免跨分片交易复杂性:一个账户在多个分片拥有不同状态,跨分片交易变为片内交易。
    • 提高流动性和安全性:假设A的资金在多个分片上,即使某个分片有问题,A仍然可以通过其他分片访问到自己的资金。

7.2 nonce机制

BrokerChain采用了 以太坊的nonce(计数器)机制,其中:

  • nonce 代表交易次数。
  • 在这里是”账户+分片+nonce“全局唯一,全网全同,来表示某个账户在某个分片上唯一的交易状态。

例如:

  • Shard #1,A 账户的 nonce 是 10,表示 A 在 Shard #1 进行了 10 次交易。
  • Shard #2,A 账户的 nonce 是 5,表示 A 在 Shard #2 进行了 5 次交易。

8. mSST(Modified Shard State Tree)

8.1 结构

每个账户状态 S μ S_\mu Sμ 被定义为:
S μ = { X μ ∣ η , ω , ζ } S_\mu = \{X_\mu | η, ω, \zeta \} Sμ={Xμη,ω,ζ}

  • X μ X_\mu Xμ (Account Address):账户地址
  • η η η (Nonce):交易数
  • ω ω ω (Value):账户余额
  • ζ \zeta ζ (Code):账户的代码,表示账户类型(普通账户、智能合约账户)

8.2 存储映射向量(Storage Map)

m S S T mSST mSST 还包含一个 存储映射向量(Storage Map),记录某个账户在哪些分片中存储:
e = [ e 1 , e 2 , . . . , e S ] , e i ∈ { 0 , 1 } , i ∈ { 1 , 2 , . . . , S } e=[e_1,e_2,...,e_S],e_i∈\{0,1\},i∈\{1,2,...,S\} e=[e1,e2,...,eS],ei{0,1},i{1,2,...,S}

  • S S S 是分片的数量(Number of Shards)。
  • e i = 1 e_i = 1 ei=1 表示账户存储在 Shard i,否则不存储。

通过查询Storage Map,可以快速判断某笔交易的状态(跨片 or 片内)。

8.3 mSST的结构

在这里插入图片描述

上图展示了mSST的结构,主要由3部分组成:

  • 左侧:整个区块的一些状态信息(状态根、交易Merkle根、区块头……)
  • 中间:主体(示例为Shard 1的mSST结构)
  • 右侧:简化的Shard 1的状态信息

其中中间主体部分为mSST的具体结构,我的个人理解如下:

  • 绿色的为分支节点,展示公共前缀。
  • 灰色的为叶子节点,存储当前账户的具体交易信息。
  • 交易账户由 根-叶子 这条路径连线所确定。

8.4 效率

mSST是一种高效的数据结构:

  • 判断交易类型复杂度为O(1)
  • 查询账户余额的复杂度为O(n),其中n为该账户所在分片数。

9. BrokerChain的跨分片交易处理

9.1 传统方法

  1. A 在 Shard 1 发送交易。
  2. Shard 1 预扣 A 200元,生成 CTX Proof 证明A有钱进行交易,并将Proof发送给Shard 2。
  3. Shard 2 验证Proof,给 B +200元,把 CTX Receipt 返回给 Shard 1。
  4. Shard 1 确认了 Receipt 之后,正式扣除 A 200元。

问题:

  • 不同分片需要通信,会有网络延迟,极大降低性能。
  • 可能导致分片负载不均衡,特别是当跨片交易数量多时。

9.2 BrokerChain的创新方法

引入 做市商Broker(可以理解为中间人):

  • Broker 在 Shard 1 和 Shard 2 都拥有账户。
  • 协助完成这笔跨片交易,直接将1笔跨片变成2笔片内,无需跨分片通信,即刻执行,极大提升了性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值