| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 深入浅出分析Starcoin的架构设计 -> 正文阅读 |
|
[区块链]深入浅出分析Starcoin的架构设计 |
??* 本文由Westar实验室原创,点击 查看原文。 Starcoin的架构2021年5月18日,Starcoin,新?代分层的智能合约和分布式?融?络,正式启动主网。Starcoin使用增强的PoW共识,是首个使用Move作为智能合约语言的无许可公链,也是把DAO链上治理做得最彻底的公链。Westar实验室作为开源技术的爱好者,有幸接触了一些Starcoin的设计和实现,为开源社区贡献了一点点力量。这里,我们从技术的角度,介绍一下Starcoin。 Starcoin是一个比较庞大的系统,我们先从宏观上了解一下Starcoin的整体架构。如图所示,Starcoin包含非常多的组件,例如Chain、Sync、TxPool、Stdlib等等。从整体上来说,Starcoin包括两大部分:
我们可以简单的将「链」和「合约」通过编程语言区分。链相关的逻辑是通过Rust实现的,而合约则通过Move表达。虽然逻辑上将Starcoin分成了「链」和「合约」两部分,但是「链」和「合约」又起到相互支撑、相互促进的作用。「链」是「合约」的基础,为合约提供运行环境。而「合约」又为「链」提供养分,表达链的一些核心状态,例如区块奖励等等。所以,「链」和「合约」是一个相互作用的统一整体。 Starcoin的核心Service前面我们从宏观的角度,了解了一下Starcoin的整体架构,接下来,我们分别介绍一下Starcoin的「链」包含的核心组件、服务和功能。 Starcoin借鉴微服务的思想,将不同的模块进行拆分,再通过服务的方式,将不同功能组织起来,以节点的方式统一提供服务。Starcoin使用了Rust的Actix框架,设计了一套功能完善的service-registy系统,包括服务注册、服务状态检查、服务关闭等能力,能非常方便地管理服务的生命周期。同时,为服务之间通信设计了一套Bus协议,将服务解耦。如图所示,service-registy模块中的RegistyService是所有其他服务的基础服务。
以上是Starcoin比较核心和重要的Service,还有一些其他的Service这里没有介绍。 Starcoin的Storage前面介绍了Starcoin的核心服务,所有的服务协作的结果是将数据存储起来,并且保证所有分布式节点的状态最终一致,所以,我们再深入介绍一下Starcoin的Storage相关的内容。 Starcoin的数据保存在Storage中,在介绍Storage之前,我们先来简单了解一下Starcoin两个非常特别的核心数据结构:
双MerkleAccumulatorMerkleAccumulator,如图所示,是Starcoin一个非常核心的数据结构,用于提供区块和交易的证明。MerkleAccumulator的特点是叶子节点可以从左到右不断增累加,然后构建成一个树形的MerkleAccumulator,最后将Root节点的哈希保存到区块中。使用MerkleAccumulator的好处是可以非常轻松地证明一个区块或者交易是否在链上,例如,图中叶子节点B的Proof是CAD。Starcoin巧妙地设计了两个MerkleAccumulator,分别为区块和交易提供证明,对应BlockHeader的block_accumulator_root和txn_accumulator_root,这就是Starcoin的“双MerkleAccumulator”。 GlobalStateTreeStarcoin的GlobalStateTree设计上也很有意思,由双层结构的三个Tree构成,如图所示:
双MerkleAccumulator和GlobalStateTree的数据最终也会保存到Storage和StateDB中。 StorageStarcoin的Storage使用了Key-Value的RocksDB,存储了所有的区块、交易和用户状态等数据,如图所示,总共15个ColumnFamily(ID都表示Hash):
Move前面介绍了Starcoin的Service和Storage,这两部分内容都属于「链」,接下来,我们介绍一下「合约」。 Starcoin使用Move作为智能合约语言。Move最大的特点有两个:
从技术的角度分析,Move跟Solidity对比,除了上面2个大的区别,还有很多优点,主要如下:
Move还有很多其他的优点,可以说,Move是智能合约的一次革命。所以,Starcoin选择Move作为智能合约语言。在Starcoin的生态中,已经有很多优秀的Move项目在落地,如图所示:
最后不管是从链的角度,还是从合约的角度,Starcoin在设计上有很多有意思的地方。Westar实验室深入到Starcoin的源码,从技术的角度对Starcoin的进行解读,更多针对Starcoin的源码解读将逐步更新,欢迎大家关注。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 19:42:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |