论文1:OverShard
1.1 题目、时间、期刊/会议名称、等级,发表单位
- 题目:OverShard: Scaling blockchain by full sharding with overlapping network and virtual accounts
- 时间:2023年
- 期刊名称:Journal of Network and Computer Applications
- 等级:中科院2区
- 发表单位
1.2 摘要部分
结合重叠网络(overlapping network)和虚拟账户(virtual accounts)来扩展区块链的完全分片方案,其中,重叠网络模型使一个分片中的所有节点加入多个其他分片中,以此来提高分片系统的安全性和改善不同分片中节点的通信效率;虚拟账户模型促使交易在单个分片中进行处理。
是第一个完全解决跨分片交易问题的模型,在理论上看,随着分片数量的增加,几乎可以实现线性的可扩展性,但每个节点的存储和通信负载比传统分片区块链网络要多;此外,该模型支持公链系统中的转账交易和智能合约交易。
1.3 引言部分
-
区块链在实际应用的主要障碍
扩展性差,在数据存储可扩展性、网络传输效率、共识效率、吞吐量等方面仍有问题未解决
-
分片引出的原因
1、传统区块链网络的每个节点在做同样的事情(比如验证交易、 存储区块等),这样做,会导致资源的浪费和吞吐量(TPS)低下
2、大多数消息需要广播到整个网络中,降低了网络传输的效率
总结:低TPS和高延迟严重限制了区块链在大规模应用的应用,这些问题的存在,促使我们去研究区块链的可扩展性。 -
Layer 1 和Layer 2的区分
Layer1 聚焦在主区块链本身进行扩展
Layer2 聚焦不在主区块链本身进行扩展,比如通过侧链等技术来实现扩展 -
现有分片方案的局限性
1、跨分片交易的处理效率低
2、数据可用性
3、共识安全性等
具体方案:1、Elastico[1],只实现了部分分片,即每个节点仍然需要存储整个网络的状态,阻碍了扩展的有效性
2、提出了VBG[2],节点子区域(Node subareas)[3]等可扩展性的解决方案,但这些模型基于单链结构,不能兼容分片区块链[2] Yu, Bin, Li, Xiaofeng, Zhao, He, 2020. Virtual block group: a scalable blockchain model with partial node storage and distributed hash table. Comput. J. 63 (10), 1524–1536.
[3] Yu, Bin, Li, Xiaofeng,Zhao, He, Zhou, Tong, 2021a. A scalable blockchain network model with transmission paths and neighbor node Subareas. Computing 2021 (3), 1–25.
1.4 贡献
-
提出了完全分片架构
将网络通信,交易处理,计算,存储和状态的负载分到每个单独的分片中
-
设计了重叠网络模型
我们的方案每个分片的节点数是传统的分片网络中节点数的数倍,要求每个节点加入多个分片,另外,所有的账户被均分到每个分片中
-
设计了虚拟账户模型
为每个主账户创建一个在其他分片的虚拟账户,因此,所有的交易可以通过一轮共识进行处理,每个分片可以处理交易(包括跨分片交易和智能合约交易)
1.5 相关工作
-
使用分片技术的公链
-
Ethereum 2.0
引入提供质押(staking)的主链(main chain),提供随机数的信标链(beason chain),提供数据的分片链(shard chain)以及VM 提供分片的状态执行结果。由于完全分片的挑战性,当前聚焦在数据分片(data sharding),称之为Danksharding,最后采用了PBS(proposer/builder separation)技术。选择出价最高的区块生产者,并处理整个区块,验证者通过数据可用性采样(data availability sampling)来验证区块。
-
Elastico
第一个安全候选(secure candidate)的公有区块链分片协议,具有亚线性的扩展性。实现了网络分片,交易分片和计算分片,但没有实现状态分片和存储分片。每个区块必须被广播到所有分片中,每个节点必须存储整个账本。
-
Omniledger
第一个实现完全分片的分布式账本架构,包括网络,交易,计算,状态和存储分片。引入了称之为Atomix的基于客户端的原子提交协议来提交跨分片交易,使用ByzCoinX的共识协议。将跨分片交易的通信负载转移到了客户端
-
RapidChain
使用了一种最佳的(optimal)委员会内部共识和一种高效的跨分片交易验证技术,实现了亚线性的通信,更高的弹性(resiliency),快速的委员会共识,安全的重构,快速的跨分片验证和去中心化引导(bootstrapping)。但是通过子交易的方式将所有包括UTXOs的跨分片交易转移到同一个分片,这严重降低了分片区块链系统的吞吐量和确认延迟。
-
Monoxide
在不牺牲去中心化和安全性的情况下,提出使用异步共识区域Asynchronous Consensus Zones(和分片相似),中继交易(relay transactions)和Chu-ko-nu采矿来线性的扩展区块链系统。将跨分片交易拆分成数个子交易,让相关联的分片单独处理这些交易,以保证原子性和一致性。但是,中继交易严重降低了有关吞吐量和确认延迟的性能。
-
Chainspace
提出了一种支持吞吐量较低的通用智能合约的分片协议。但是,它采用了一种基于客户端驱动的机制。这给通常轻量级的客户端带来了额外的负担,并且容易受到恶意用户的拒绝服务 (DoS) 攻击。
-
Pyramid
第一个层级分片区块链,一些分片(即b-分片)存储多个分片的完整记录。因此,跨分片交易可以在这些分片内部进行处理和验证。但要有更多的b-分片来处理跨分片交易
-
-
使用分片技术的联盟链
-
RSCoin
使用分片作为可扩展方法的集中式加密货币,依赖一个可信的随机数源来进行分片和审计,并且使用了两阶段提交。但为了验证交易,每个分片必须和客户端进行协调,需要一个中央信任点,例如中央银行
-
AHL
采用可信硬件,实现共识和分片形成协议的高性能。该系统还依赖于参考委员会,使用经典的两阶段提交 (2 PC) 和两阶段锁定 (2 PL) 协议以集中方式处理跨分片交易
-
多通道(类似于分片)Fabric
引入通道(channels)来改善区块链扩展性,片内交易能高效处理,但在处理跨分片交易时,要求参与者之间存在受信任的通道或原子提交协议
-
SharPer
结合去中心化扁平化(flattened)跨分片共识,并行处理交易,账本采用有向无环图的形式构建,在 CFT 和 BFT 网络中提供确定性安全保障
-
-
总结
上述方案聚焦在共识协议、跨分片的原子性、应用领域进行研究
-
共识协议
在分片区块链系统,攻击单个分片比控制整个网络更容易
共识协议包括片内共识和片间共识
比如,在Monoxide中,使用Chu-ko-nu挖矿的PoW共识来防范对单个分片的攻击
Casper FFG[1]是一种结合了PoW和PoS的共识算法,被用于Ethereum2.0中的信标链(beacon chain)中
其他分片区块链系统(Elastico,OmniLedger,RapidChain等)采用PBFT或PBFT的改进版本,[1] Casper Proof of Stake Compendium, 2022. https://github.com/gin/wiki/wiki/CasperProof-of-Stake-compendium.
-
跨分片的原子性
保证区块链数据的正确性(包括区块数据,交易和状态),为处理跨分片交易,引入了一些特殊的对象(以太坊2.0中的信标链,AHL中的参考委员会,RSCoin中的中央银行和铸币厂(mintettes),Pyramid中的跨分片区块,Monoxide和Rapidchain将每个跨分片交易拆分成数个子交易,OmniLedger将负载转移到了客户端,Elastico要求每个节点存储所有分片的数据),这些方法对客户端或节点的要求更高
-
应用领域
大多数分片项目只支持加密货币应用,除了Chainspace允许智能合约去分配节点到分片中
-
1.6 建模部分(待补充)
-
问题和目标(分片方案的设计满足了以下主要关键问题)
-
分片形成协议(shard formation protocol)
协议能防止恶意节点加入同一个分片,以此提供区块链系统的安全性
具体来说
1、使用一些公开可验证的(public-verifiable),抗偏置(bias-resistant),不可预测的(unpredictable),可获得的(available)随机数生成方法(比如可信硬件或主链,RandHound,VRF,VDF)生成随机数
2、节点加入时,必须解决一个PoW难题(puzzle)
3、在每个纪元(epoch)后,执行分片重构
这些方法可以直接用于网络分片中 -
每个分片的平均负载(average workload)
负载包括交易处理,计算,存储等。
基于账户/余额模型的区块链系统中,按发送者地址进行分片时常见的交易分片方案 -
共识协议和跨分片交易的处理
-
在保证安全和去中心化的基础上,实现性能的改善
-
-
目标
-
完全分片和去中心化
去中心化:在OverShard中,没有任何中心化对象(比如主链,可信第三方)
完全分片:包括网络,交易,计算,存储,状态等等
-
更好的安全性
所有的交易都以原子性进行处理,保证账本的一致性的同时,能抵抗恶意节点的普通攻击
-
改善可扩展性和性能
应该减少每个节点的账本存储,状态和通信负载,同时,实现高交易吞吐量和低确认延迟
-
-
系统模型
包括重叠网络和虚拟账户模型
重叠网络:以随机和均匀的方式将节点(节点和账户是两个不同的概念)分配到不同的分片中,每个节点必须加入多个其他分片,来确保系统的安全性。任何节点可以通过分片内节点之间的通信(不是分片间的通信)获取来自所有分片的区块数据,交易和状态
图片说明
在重叠网络部分,带有箭头的虚线表示分配给一个分片的节点加入另一个分片。比如节点n1分配到了分片s1,同时它也加入了分片s2
在虚拟账户部分,采用了交易和账户的有向无环图结构。有外部拥有的账户(externally owned account)和智能合约账户这两类账户
其中外部拥有的账户由用户控制,而智能合约账户由EVM执行的代码控制
每个外部拥有的账户有一个主账户和多个附加在主账户上的虚拟账户,存在于每个分片(一个账户对应的主账户数+虚拟账户数之和并一定等于分片数)中,这些账户对用户是不可见的,只在分片区块链系统中使用。比如主账户A被分配到分片s1,其对应的虚拟账户A2,A3分别位于分片s2,s3中。
1.7 系统设计(待补充)
-
重叠网络
-
随机和均匀分配
采用和Pyramid相似的分片形成(formation)方法
-
加入多个其他分片
每个节点
-
邻居节点
在以太坊中,使用Kad算法[1]来管理每个节点的邻居节点
[1] Kademlia: a peer-to-peer information system based on the xor metric. Iptps 2002. Lecture notes in computer science. Springer, Berlin, Heidelberg 2429, 53–65
-
-
虚拟账户
-
虚拟账户的形成(formation)
-
账户余额
一个账户的余额等于主账户的余额+所有虚拟账户的余额
获取一个节点的余额的两种方法
方法一:从邻居节点请求获取
比如:节点n1要获取账户A的余额,则节点n1要得到账户A,A2和A3的余额。由于节点n1加入分片s1和s2,因此,节点n1可以从本地状态中获取账户A和A2的余额,但节点n1需要向在分片s3中的邻居节点n2或n5发送请求来获取账户A3的余额。
方法二:将更改的状态同步到每个分片(synchronizing the changed state to each shard)
更改的状态的数据结构
每个节点在收到并成功验证一个新区块时,会将这个新区块广播到节点所在分片的邻居节点。同时,节点将更改-状态的数据及其 Merkle 树根广播到其他分片的相邻节点。
比如:如果节点n2接收并成功验证了分片s3的一个新区块,则节点n2会广播由这个新区块更新的更改-状态的数据和其Merkle树根到分片s1和s2的邻居节点
总结:方法一在向其他节点请求账户余额时,存在延迟;而方法二需要更多的空间去存储其他分片的更改-状态的数据,为此,我们让一些全节点(比如旷工节点)去同步更改-状态的数据在本地节点来获取账户余额,让轻节点(比如钱包节点)向邻居节点获取账户余额
-
-
共识协议
-
链结构
由于每个节点加入了多个分片,因此旷工可以同时对多个分片进行PoW挖矿。分片中的每个新区块包含在其他分片中的多个父区块的哈希,因此新区块可以被其他分片中的区块确认。新区块被广播到不同分片,并由不同的分片进行独立验证。新区块可能在一个分片中被验证,但在另一个分片没有被验证。
说明:新区块的区块头bh包括两个区块的信息,被分片s1验证,但没有被分片s2验证。由于区块头bh包含区块b1s2的哈希,因此分片s2中区块b1s2被分片s2中区块b2s2和分片s1中区块b2s1验证。
-
区块数据结构
在OverShard中,每个分片时一条独立的链,每个分片中的节点存储每条链的区块。区块头的数据结构
-
共识过程
同时达成PoW共识的过程
1、交易收集(交易分配,验证,广播和在内存池中存储)
2、区块生成(区块体形成,执行,区块头形成,挖矿)
3、区块上链(区块广播,验证和存储)区块生成的过程:
1、旷工对内存池中交易进行排序,选择较高交易费用的交易构成区块体
2、旷工在EVM中执行区块体中的交易,并得到状态树根,更改-状态树根,收据树根等结果,并形成区块头
3、找到一个PoW难题(puzzle)区块上链的过程:
-
交易处理
转账交易:一个账户和另一个账户之间的交易
智能合约交易:包括部署和执行
其中智能合约部署交易是没有接受者地址的交易,数据字段用于智能合约代码;智能合约执行交易是与一个已部署的智能合约交互的交易,并且接收者地址是智能合约的地址。在OverShard中,转账交易是在发送者账户地址所在分片中进行处理的,智能合约交易是在智能合约地址所在的分片中进行处理的。转账交易的处理过程:
智能合约交易的处理过程:
使用 OverShard,将交易分配给分片,如果该交易是智能合约交易,则智能合约地址将分布在该分片中。同一智能合约的所有智能合约交易都在一个分片中处理。如果发送方的虚拟账户未分配到该分片,则交易费用将从其虚拟账户中扣除。
-
总结
未来,我们将进一步研究减少每个节点存储以及复杂智能合约交易的处理方法,例如那些涉及调用其他智能合约的交易。