• 作者:老汪软件技巧
  • 发表时间:2024-12-03 11:06
  • 浏览量:

05-账本模型1 账本模型1.1 传统线性增长模型

传统的 MySQL 等系统采用线性增长的日志模型,通过一个 Leader 和多个 Follower 进行状态同步。这种方式有单点的带宽瓶颈问题。

_线性模型图_线性模型效果不好的原因

1.2 区块链共享账本模型

共享账本:树形增长。在去中心化网络中,可能同时选出多个合法的记账节点,导致分叉现象。通过默克尔树支持路径计算,轻节点可以查证交易是否存在于链上。P2P分散传播(Push和Pull有机结合)。

共享账本:树形增长(分支后续可能长成主干,所以分支Block也要存储)。

_线性模型图_线性模型效果不好的原因

要支持路径计算,如:Block是否在主干上

_线性模型效果不好的原因_线性模型图

2 事务解决方案

区块链采用两大流派解决双花问题:

账户模型:类似银行账户,通过版本号防止重放攻击。UTXO 模型:未花费的交易输出,类似现金支付,每个交易的输出来自之前某些交易的输入。

Xuper Chain 采用优化的 UTXO 模型,支持更广泛的数据领域,提升并发性能。

2.1 账户模型咋实现事务?

用递增的版本号检测冲突,本质串行。

线性模型效果不好的原因__线性模型图

由于版本号冲突,这两个交易只能有一个成功。

2.2 UTXO模型咋实现事务?

线性模型效果不好的原因__线性模型图

通过判断交易的输入引用是否有冲突,并发性能更好。

线性模型效果不好的原因_线性模型图_

两笔交易都能成功,执行顺序还可以乱序。

案例

奶奶给孙子50,让他买东西吃,然后孙子去小卖部花了0.5买了一根棒棒糖,剩下49.5,变成私房钱。小卖部收到小孩儿的0.5。

另一个小孩0.8买了两根棒棒糖,一根0.5,两根0.8,然后收到另一个小孩的那个钱,买了一根辣条0.3。然后它现在就有0.5,0.8和0.3。

然后他现在要把钱给自己的两个孙子,说你们一人八毛,一人八毛,拿去买买买,这就是一个UTFO过程。Xuper chain对ut so模型做了一些优化

3 优化

构造一个更通用的事务模型。

当前,以太坊、EOS(一个拥有特别快的速度优势以及无限的可扩展性的智能合约平台)只能串行验证区块中的智能合约,因其底层模型无法支持并行化的确定性验证。

但经典的UTXO模型虽并发性能好,只用于转账场景,能否用UTXO模型支持通用的智能合约?

线性模型图_线性模型效果不好的原因_

T2和73可并行执行、即使不同节点乱序执行,得到D的结果也一致。

4 事务引擎架构图

_线性模型效果不好的原因_线性模型图

通过客户端向这个全节点,它的一个utxo的这个引擎啊,发送一个交易,然后交易首先。它要进行一些缓存管理,然后去执行这个交易,然后做一个交易的预执行,然后假如说有冲突的话啊。怎么办?做一个冲突处理,如果说没问题的话呢,它就把它这个广播给这个就返回这个。读写即给这个客户端,

然后客户端就发起一笔交易,然后呢?交易交易如果没冲突的话,就通过这个共识算法选出一个记账节点,然后记账节点广播。广播之后,其他全节点去验证,验证没问题的话就落块。