所谓同构多链框架,顾名思义就是有多条链,每条链上都运行相同的程序。不同用户的请求会发到不同的链上进行处理。
当 A、B、C、D同时发起请求,比如有 A->B,A->C,A->D , 同时有 B->C, C->D,D->E。A、B、C、D根据路由规则落到不同的链上,四条链可以并行进行处理,如果一条链每秒的打包请求并落区块的速度是 1000,那么上千条链,就可以达到百万 TPS。
对于普通请求,消耗的链克 gas是固定的,这种链间的处理是相对容易的,而支持智能合约,需要一些额外的处理。因为要防止恶意的合约或者合约本身的 bug导致占用大量资源,所以需要根据合约执行情况扣除相应的链克 gas。
消耗的链克 gas是需要从请求发起方的账户里扣除的,而真正执行合约的是在合约所在的另一条链,所以最终需要的具体数量,在发起请求方所在链入链这笔请求的时候尚未可知,这怎么办呢?
解决办法是在发起方所在链扣除请求中传入的 gasLimit值,也就是用户指定的上限值,这个请求入块后同步到合约所在链,合约执行后请求入块能知道这笔请求真正扣掉的通证数量,再通过链间通信将链里面入块的合约调用请求同步到发起方所在链,发起方确认合约链的区块数据,并把多扣掉的通证退回给发起方。这些对账户余额的操作在链上都有相应的操作记录写入,方便对账。
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。