问题
这篇文章主要解决一个问题是,在sharding的时候,如果是基于账户或者状态的分片,以往的算法在分片的时候会根据账户地址或者哈希值进行划分。这是一种随机的分片。这种分片会造成一个问题是会导致跨分片交易过多。
因为一个跨分片交易会转换成为两个子交易。这就导致要处理的交易数量太多,工作负载太大。
并且,存在热分片的情况,各个分片之间的工作负载可能不均衡会产生偏斜。

算法
将账户建模成图的机构,边权位两个账户之间的交易数量。
点为账户。
C(x) 为一个划分下的跨分片交易数量
![![[image-20231130104422290.png]]](https://i-blog.csdnimg.cn/blog_migrate/33182cd00862f64f26458f6fec4dfca1.png)
D(x) 为一个划分下的各个shard 负载不均衡的度量
![![[image-20231130110615255.png]]](https://i-blog.csdnimg.cn/blog_migrate/910212c4a3f055e0ba646f35643a38dd.png)
既要减少跨片交易,又要均匀分配,我们得到如下的优化函数
![![[image-20231130110943883.png]]](https://i-blog.csdnimg.cn/blog_migrate/76f9431e603a4177c79528302763f274.png)
虽然现有已经有一些 community 检测算法,能够减少跨片交易的数量,但是不能限制各个community的大小,因此会造成负载的不均衡。

文章探讨了在基于账户或状态的分片中,如何通过使用图模型和CLPA算法减少跨分片交易,同时考虑负载均衡问题。M-shard负责打包区块,W-shard负责监控和执行CLPA,以实现更有效的交易处理和资源分配。
最低0.47元/天 解锁文章
736

被折叠的 条评论
为什么被折叠?



