投资有风险 入市需谨慎
入驻火星号
APP
下载火星财经客户端

扫描下载APP

Google ABC 代码测评 | QuarkChain代码库概览

QuarkChain团队 ·

11月06日

热度: 12518

介绍区块链项目充满创意的灵感、光彩夺目的商业计划的文章不胜枚举,但对项目技术水准的专业测评却少之又少。

本文翻译自Google Blockchain Community发表在Medium上的文章。原文链接点击此处了解。

9月30日,ABC 区块链社群与QuarkChain的工程师召开了代码研讨会。 在研讨会上,QuarkChain首席执行官周期博士和我们一起探讨了QuarkChain代码。

本文总结了此次研讨会的主要结论,以及我们对QuarkChain未来代码升级的期望。

ABC区块链社群简介

ABC区块链社群是区块链爱好者学习、应用和探索区块链原理的技术型社区。请访问www.abcer.world网站了解详情。

QuarkChain简介

QuarkChain是一种高吞吐的区块链底层架构,旨在通过分片技术实现每秒数十万次交易处理能力(TPS)。QuarkChain于2018年7月7日发布了测试网,并于9月17日开源。

此代码测评针对2d4f43f54523e6c1768432690cabe496aa860107版本,在10月30日完成测评。

为什么要进行代码测评?

介绍区块链项目充满创意的灵感、光彩夺目的商业计划的文章不胜枚举,但对项目技术水准的专业测评却少之又少。然而,项目代码库的质量在开源世界中占有举足轻重的位置,因为它直接影响未来工程师的开发难度和整体生态系统构建。本文从代码结构、贡献活跃度、与白皮书的一致性这三方面对Quarkchain代码进行了讨论。如果您计划为其代码库做贡献,此概览也可用作指南。

一、代码结构

对于从以太坊复刻的代码,Quarkchain进行了一些改造以使其适应分片设计,并添加了大量测试以确保兼容性。其中一个例子是对帐户地址进行改进:在帐户地址中增加了4个字节作为分片ID,使得账户地址从以太坊的20字节扩展到24字节。此外,还将4个新字段添加到交易模块中,并相应地调整交易验证逻辑。


二、代码库状态&代码风格

代码库状态

代码库得到积极维护

  • 15个分支

  • 1024个提交

  • 9个贡献者

得到测评人员好评

  • 最后一次提交发生在几个小时之前,开发者很积极

  • 使用了Issue/Pull Request等功能

  • Wiki(百科)得到良好维护,便于其他开发者了解项目


代码风格

得到测评人员好评

  • 清晰的注解

  • 恰当的功能命名

  • 针对极端情况/攻击进行了充分而清晰的测试,示例



三、分片

与其他也使用分片技术的区块链项目相比,QuarkChain在设计上(受Google Bigtable启发)采用了“集群”的概念,其中每个集群(全节点)由1个主节点和许多从节点组成。 每个群集(全节点)包含了区块链网络中的所有信息。 在每个集群中,一个分片仅由一个从节点处理,但一个从节点可以处理多个分片。当收到一个新区块时,主节点将区块分配给相应的从节点。这种设计简化了不同分片之间的路由关系(通过主节点传递),但也使主节点成为集群中的单点故障弱点。不过由于存在多个集群副本,这种故障不会影响整个网络的安全性。这种设计还允许轻节点成为集群并作为全节点运行,这有助于确保区块链的去中心化。


每个集群(相当于一个完整节点)由一个主服务器和一系列从服务器组成。主节点负责在根链上挖矿(挖掘根块),并通过slave_pool管理集群中所有从节点。集群初始化就设置了主从连接和从 - 从连接。一个从服务器可以运行一个或多个分支,每个分支支持一个分片。从服务器在分片上挖矿(挖掘小块),不同分片还可以运行不同的共识机制。当小块的信息被根块打包后,分片可以调整挖矿的难度。根块将验证小块的块头和难度,但不验证每笔交易。


类似于比特币和以太坊中的块链结构,QuarkChain的账本被分为根块和小块。分片链(其中包含小块)记录该分片虚拟机的状态,片内和跨片交易费(点击此处了解如何计算跨片交易费),以及在该分片中所进行的交易。它们还计算用于验证的哈希值,该哈希值通常被包含在小块的块头中(点击了解add_blockvalidate_block功能)。根链根块构成验证小块的哈希值后收集所有的小块块头。根块还将维持根状态,其不打包特定交易,只是包含所有分片的哈希值以及其他分片信息(点击了解add_blockinvalidate_block功能)。通过这些功能使得帐本得以在分片之间被拆分,以便整个帐本的容量可以随着分片数量的增加而线性增加,但每个节点的容量不会改变。当然,上述结论是基于交易在分片之间能均匀分布的前题假设。为了在根链和分片链之间均匀地分配算力,QuarkChain将“税”的概念应用于系统中。产生一个小块,分片上的矿工只能获得一半的区块奖励(代码原文),而其余的作为税收将支付给根链中的矿工(代码原文)。

四、建议

  • 根据QuarkChain的wiki信息,目前不支持跨片智能合约的调用,仅支持QKC(QuarkChain的原生代币)的跨片传输。 在当前版本中,如果用户在分片A中没有QKC,却要使用分片A中的智能合约,他必须先通过跨片交易将足够的QKC传输到分片A中。

  • 目前还没有动态添加分片的方法,但随着网络的发展,我们将会需要建立该机制(类似于在网络运行状态下再分片)。

  • 目前设计的税率是固定的。一个可能需要改进的地方是引入能够根据具体情况动态调整的税率,以激励超过50%的算力分配到根链中,从而确保整个网络的安全性。



文章声明:本文为火星号作者作品,不代表火星财经观点,版权归作者所有,如需转载,请提前联系作者!

推广
相关新闻

涨幅榜

你可能感兴趣的内容
下一篇

区块链游戏3.0模式:自成体系的经济模型