市场已对"高速公链"彻底脱敏,为什么说 Somnia 可能与众不同?(4) / BTC123 | 区块链信息行情第一站

市场已对"高速公链"彻底脱敏,为什么说 Somnia 可能与众不同?(4)

07-01 , 20:10 分享新闻

Somnia的EVM编译执行:合约代码→解析为字节码→动态编译为机器码→并行执行交易1的指令集→并行执行交易2的指令集→并行执行交易3的指令集……

对比可以看出,交易越多,Somnia的EVM编译执行越有优势。

因此,对于普通的非高频交易,Somnia仍然使用标准的EVM解释执行,每次执行EVM,将智能合约代码解析为EVM字节码,在按顺序解释执行。

市场已对"高速公链"彻底脱敏,为什么说Somnia可能与众不同?

对于集中的高频执行的交易,Somnia启用EVM编译器,将EVM的字节码编译成x86机器码。然后按照参数重复执行机器码即可快速完成集中的高频交易,这是交易级的并行EVM无法达到的效果。

因此,Somnia可以在成本和效率之间实现双重优势。

💠IceDB数据库引擎

🔹概述:使用LSM树取代默克尔树数据结构

绝大部分区块链使用默克尔树(Merkle Tree)的数据结构。默克尔树的叶子节点存储着交易数据的哈希值(或者交易数据本身,然后对其进行哈希),非叶子节点存储的是其子节点哈希值的哈希值,逐层两两结合计算哈希值,最终计算出一个默克尔根(Merkle Root),从而可以安全地验证区块内数据的完整性,并防止数据被篡改。

以ERC20代币合约的数据存储默克尔树为例,默克尔树的叶子节点包括:

• 存储代币总量(TotalSupply)、代币符号(NameSymbol)等属性,每一个属性对应着一个键(属性名)和一个值(属性值);

• 该代币所有的持币地址的持币情况,每一个地址对应着一个键(地址哈希)和一个值(持币数量);

• 该代币所有的授权情况,每一个授权地址对应着一个键(地址哈希)和一个值(授权数量);

……

假如一个ERC代币有4个属性,32000个持币地址,2764个授权地址。这个数量显然不多。但这共有32768个叶子节点,写入该代币的默克尔权,需要计算65535次哈希。

市场已对"高速公链"彻底脱敏,为什么说Somnia可能与众不同?

Somnia自研的IceDB数据库引擎,并没有使用常用的默克尔树数据结构,因此其区块信息中也没有哈希根。

IceDB使用LSM树(Log-Structured Merge-Tree,日志结构合并树)。这是一种基于日志的树形数据结构,其主要特征是数据追加写入,而不是原地修改,因此不存在篡改问题。

IceDB数据库的写入,先会写入内存的MemTable。当MemTable写满时,它会被刷新到磁盘,形成一个 SSTable。LSM定期对SSTable进行合并,同时删除重复的键。