MOAC分层分片技术
天然灵凡
发表于 2023-1-6 02:27:04
187
0
0
采用分层结构实现分片
将balance transfer和智能合约分开处理,底层以POW的方式处理所有的balance transfer和全局合约,解决全局一致性和双花的问题。DAPP的智能合约部署在上层,采用分片技术,通过POS或者PBFT的方式实现子片的数据一致性,提高系统TPS至100倍。( t3 y! x2 r, Z+ f; [( k
MOAC的底层节点称为v-node,采用POW挖矿方式。MOAC引入智能合约服务(Smart Contract Server,scs)节点用于处理合约。& H, J3 @0 h' `* c3 S7 }, p
SCS节点和v-node节点分工处理不同的工作7 S" ^( j' r( F5 A/ V
SCS的特点:; W {& n9 b( G2 p' Q% S$ P+ R
每个分片有自己的存储,就是分片的区块链;SCS可以有不同于底层的共识方式,比如pos,pbft;SCS的区块生成时间可以与底层不一致,比如可以采用快速的区块周期来进一步提高处理速度;SCS周期性的向底层flush结果,从而获得阶段性的全局一致性。
1 I2 ^1 j F# ?$ F
通过分层处理,合约在逻辑子链中执行,不会影响到正常用户的交易处理。9 y+ T* w( S* z- k, z6 {2 ~& o) ]) J
每个部署的DAPP合约可以自己选择所需的scs数量及共识方式,有自己的子链来保存状态。子链采用定期刷新的机制将自己状态的hash写入底层区块链,以实现一致性。! X {$ @; X x; }( a+ _
分片
分片是指将网络中的所有节点分成若干个子群体,这些子群体之间通过预定义的方法执行原来所有节点都要处理的工作,从而达到提高系统处理能力的结果。
分片有它特定的要求, e0 y: H* L! s" Q4 z
分片的子群的大小有限制,一方面,希望能够分更多的片,但是,为了维持系统的容错性,分片的节点数有个下限,比如不能低于50个。
分片的共识有限制。由于节点数少的关系,POW可能不适合。
分片之间必须保证数据的一致性。
与以太坊等设想的分片方法不同,MOAC分片采用合约驱动的模式,就是说一个合约对应于一个系统分片,合约创建时自动随机选择相应数量的节点形成一个分片来处理这个合约,这个合约的生存周期都在这个分片中实现,从创建,到结束合约。当然,中间如果需要,可以重新洗牌来选择新的分片节点。! q) T4 a( y) h3 H. i1 J% Q' w
MOAC分片处理流程9 @! \6 Z/ q, V8 P( c: K1 X3 E
2 j0 M& b" @* R) |* Y# C8 z
MOAC平台将提供一个PBFT的分片实现,用户也可以实现自己的共识协议,作为SCS的一个插件,这样就形成了子链的概念。0 M5 M) i% L5 s' G4 B7 c! C
MOAC分片策略的优势
这样做分片的好处是什么?主要是提高系统的处理速度。! Z0 `3 I1 U% Q
目前以太坊的处理速度限制在这几个部分:总gas量是7百万。单个支付交易需要21k,合约调用变动比较大,可能平均在200k左右。这样,如果纯支付的话,每个block可以支持350个,如果全部合约调用的话,每个block是35个。算上一个block 20s,那么每秒的处理速度大概在2-10个。
MOAC采用分片的技术,那么合约的执行尽可能都在SCS端执行,V-node只处理支付交易和必要的合约调用。如果能够有100个分片的话,那么合约处理的速度将提高到100倍或更多。同时,底层将大部分处理支付交易,这部分的逻辑比较简单,我们完全可以降低支付交易的gas量进一步提高处理能力而不会造成系统太大的负担。
费用分担: P0 P. W$ o6 z/ |: \
DAPP的创建者必须支付子链中每个区块的费用,类似以每月支付水电账单的方式维持DAPP的持续运行。: I/ ?; b( Z' R* e9 q6 ]
DAPP的使用者可以采用直接调用的方式,不需要支付任何gas费用,对DAPP的应用发起调用。如果需要防止用户滥用,DAPP自己可以实现相应的处理方式。
随着节点数量增加,然后通过分片的方式支持成千上万的DAPP运行;反过来,DAPP持续的支付费用可以支持更多的上层矿工。这样就形成了一个开放的、正反馈的循环,使得MOAC系统成为一个巨大的,适合DAPP的生态圈。
成为第一个吐槽的人