NGIN的新架構
重構一時爽……
權限更大的Consensus
之前的Consensus是管不到p2p的,因此初始化,同步,廣播這些都是由p2p模塊根據網絡場景來觸發,然後調用内置的Consensus來對區塊和狀態進行修改。
根據新的架構,Consensus將接管P2P的所有功能的主動觸發。
針對Wired協議中response的處理,原本是通過handler處理,現在改爲直接caller func中直接對stream進行後續讀取再關閉
更强大的Tx
Tx,作为事务,除了处理交易以外最重要的功能就是处理智能合约,也就是第二层架构(layer-2)。
和虽然同样使用账户模型,NGIN的Tx和Ethereum的Transaction有很大不同:Tx的目标不唯一。
这就意味着,一个账户想在同一时间(同一区块)内发送多个ethereum交易,只需要将这些的内容进行合并。
这有什么好处?首先这可以保证在“一账户一区块一事务”的原则下尽可能地拓展有效交易吞吐量。其次,减少Multi-Tx时不必要的参数,达到减小Block体积,提高TPS。再者,这对于WASM的模块化至关重要。
前面两个应该很好理解,要是没这个那么“一账户一区块一事务”只能发一个交易也太难受了,要是一个账户发一堆Transaction的话累赘的sign和address也太多了。
WASM这个就值得介绍了。
首先WASM的设计是模块化的,所有功能或者值都可以被Module包裹形成一个模块,然后AsExtern就能被其他模块import。
那么如果热心群众A开发了个算法库,我B想拿来用在我的应用上,按照ethereum的操作就是拿来sol再import。这样会有俩问题,首先是网络上这个库相当于就装了两回,而且B的应用(binary)内部相当于包裹了这个算法的binary,只装一个还好,装多了就大的一批。
在WASM里,部署的是Module形式的WASM,只需要import就可以直接使用。这时候就是Tx出场的时候了,想要在Transaction里导入其他账户contract里的module,只需要把他们的owner写到participants里就可以。当然你要是觉得他们的库很赞,你可以写点value在vaules里给他们点赞助:-)