区块链的协商一致性要求区块链网络中的每一个节点处理区块链中的每一个块,使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据。但这也给区块链带来可伸缩性限制,导致区块链的交易吞吐量低。本文的三层架构区块链模型TBChain以一个安全的基础层区块链为基础,并在基础层区块链上构建协议,来提高区块链的可伸缩性。对于区块链来说,提高可伸缩性是增加事务吞吐量或区块链上执行的事务数量。
1 传统的区块链体系结构 Traditional blockchain architecture
在传统的区块链中,所有节点共同维护一条不断增长的单一的全球链(比如比特币区块链或者以太坊区块链),只能添加记录,不可删除、篡改记录。同时,在传统的区块链中,通常将一段时间内的多个事务打包在一个区块中以增加事务吞吐量。区块之间通过hash值以防篡改的方式链接在一起,其中每个块都指向前面的块,如下图所示:
2 三层架构区块链TBChain Advantage
TBchain是一个不可变的按时间顺序排列的交互链,共三层。区块链网络中的每一个节点都可以在第二层和第三层创建自己的genesis块,并构建可伸缩的区块链,它在本质上是并行的,如下图所示:
顶层区块链(Super Blockchain),简写为 SB。 Fs={SB-AGB,SB-DB}是SB中区块类型的集合。
第二层区块链(Middle Blockchain),简写为MB。Fm={MB-AGB,MB-RGB,MB-DB,MB-TB}是MB中区块类型的集合。Cm1={MB-AGB,MB-DB,MB-TB}是第一条MB区块链,Cm2={MB-RGB,MB-DB,MB-TB}为除第一条区块链之外的其他区块链。
第三层区块链(Underlying Blockchain),简写为UB。Fu={UB-AGB,UB-RGB,UB-DB,UB-TB}是MB中区块类型的集合。Cu1={UB-AGB,UB-DB,UB-TB}是第一条 UB区块链,Cu2={UB-RGB,UB-DB,UB-TB}为除第一条区块链之外 的其他区块链。
01 区块的构成
SB,MB,UB区块链中的区块都包含Index,TS,Data,PH,CH,Nonce几个部分:
(1)Index表示该区块链中该区块的索引。
(2)TS表示区块生成时刻的时间戳。
(3)PH表示前一个区块的hash值。
(4)CH表示当前区块的hash值,区块之间通过hash值以防篡改的方式链接在一起,其中每个块都指向前面的块。
(5) Nonce 是一个无意义的随机数,用于工作量证明,与 挖矿的难度有关。 Index,TS,PH,CH,Nonce 与普通区块链中区块的对 应域基本一致。但 SB,MB,UB 区块链中区块的 Data 域与 普通区块链中区块的 Data 域有所不同。
(6) Data 域在 AGB 与 RGB 的 Data 域中存放的是固定写 好的数据,在 DB 的 Data 域中存放的是写入区块链的数据, 在 TB 中存放的是该区块链中在 TB 之前所有区块的当前的 hash 值连接之后的 hash 结果。UB-DB 中存放的是交易的数 据,MB-DB 中存放的是 UB-TB 的内容,SB-DB 中存放的是 MB-TB 的内容。
02 将交易存储在区块链上
UB和MB区块链都包含GB(AGB或者 RGB),DB,TB 3种类型的区块,因此每条区块链的长度要求至少为 3。将交易存储在区块链上共分为4 种情况:将UB与MB的长度m1,m2 均设为3时;当UB的长度m1为3, MB的长度m2大于3时;当MB的长度 m2为 3,UB的长度m1大于3时;当 UB与MB的长度 m1,m2 均大于3 时。
将交易推送到区块链的过程如下:
Input: transaction data
Output:push transaction to Ethereum
Var dataset= read input data;
tra = dataset
step 1:
for tra is not empty do
step 2:
create_new_UnderlyingBlockchain()
step 3:
Generate UB-AGB,UB-RGB,UB-DB,UB-TB
step 4:
create_new_MiddleBlockchain()
step 5:
Generate MB-AGB,MB-RGB,MB-DB,MB-TB
step 6:
create_new_block(SB)
step 7:
GenerateSB-AGB,SB-DB
step 8:
Push_to_ethereum(SB)
step 9:
end for
当有交易传来时,需要先通过step2创建一条第三层UB区块链,根据具体条件生成对应的区块,然后将交易存储到区块的数据域中。通过函数step4创建一条MB区块链,每当生成一条完整的UB区块链后,创建MB的区块,将UB-TB中的数据传到MB的数据域中。生成一条完整的MB区块链后,通过step6创建SB的区块将MB-TB中的数据传到SB-DB的数据域中,最后将SB-DB中的数据推送到以太坊上。通过以上流程可以将交易的 数据推送到区块链上进行存储。
3 特性 Features
01 吞吐量可伸缩性
TBchain是一个三层的区块链模型,它将一部分交易放在本地的区块链上进行存储并验证存储低级区块的完整性,再在公共区块链上验证高级区块的完整性,减少了验证链所需的操作数量,既增加事务吞吐量,又增加了区块链上执行的事务数量,从而提高了区块链的可伸缩性。
当MB和UB区块中的数据块为1时,此时交易的处理速度相当于以太坊测试链Ropsten本身的处理速度。由表3可知,当交易量为200,UB和MB的数据块为5时TBchain的交易吞吐量为基础层以太坊的16.86倍,UB 和MB数据块为10时TBchain的交易吞吐量为基础层以太坊的86.12 倍。当交易量为500,UB和MB据块为5时TBchain的交易吞吐量为基础层以太坊的27.2 倍,UB和MB的数据块为10时 TBchain的交易吞吐量为基础层以太坊的117.8倍。
02 容量可扩展性
假设UB层区块链的数据块数量为m,MB层区块链的数据块数量为 n,对象存储后生成的元数据信息平均为s个字节。本文通过实现三层的区块链TBchain来实现区块链存储容量的可扩展性,TBchain上不同高度的区块中不同数量数据块对应存储的交易数量如图下图所示。
当TBchain模型中数据块为1 时的交易数量为区块链测试链 Ropsten中区块中的交易数量,且 当TBchain模型中数据块数量为5和 10时,以太坊区块链中实际存储的交易数量远大于原来的交易数,而这些交易存储在本地节点的区块链上,因此增加了区块链的储存容量可扩展性。
4 结语 Features
三层的区块链模型 TBChain通过分割区块链的一部分并将其锁定在更高级别区块链的块中,让交互发生在需要的时候,仍然可以追溯到基础区块链,从而提高区块链的可伸缩性。
TBChain 模型可以将交易数据存储在本地区块链上,在基础区块链上提交这些交易的联合hash值来提高区块链的容量可扩展性。TBChain建立在一个安全的基础层区块链之上,因此可以在不影响安全性的前提下提高吞吐量,但三层架构的区块链 TBChain 安全性不及传统区块链的安全性。
后续会持续更新,敬请期待!