CITA是国内屈指可数的联盟链开发框架之一。今天本文将总结CITA相关的资料,为读者建立对CITA的了解。
首先,联盟链和公链在开发上是共通的,所以CITA上也是开发DApp,而为了实现对DApp的开发就需要一整套的组成部件,最后汇总成一个解决方案。
CITA的整套解决方案体现在CITAHub上,其提供了一套完整的开源的区块链解决方案,在CITAHub中,CITA作为底层区块链内核。并围绕 CITA, 提供了开源的工具链 CITA Toolchain 来完善基础设施,以方便运营方,开发者以及终端用户能够快速使用,
跟 CITA 直接进行数据交互的有 CITA SDK, CITA CLI。官方在 CITA SDK 基础上构建了 4 个工具:ReBirth、CITA IDE、CITA Truffle Box、CITA Web Debugger。
还提供 3 个针对特定业务需求和开发场景的工具:Microscope、Cyton Wallet、CITA CLI。另外还有一个 first-forever-demo,通过开发或运行此 demo,能够熟悉 CITA Toolchain 的大部分子工具,并基本掌握在 CITA 上开发 DApp 的操作流程。
从功能定位上看,CITA 是一个面向企业级应用的支持智能合约的高性能区块链内核, 旨在为企业级区块链应用提供一个稳固、高效、灵活、可适应未来的运行平台。
因为工程化的实现思路,在区块链技术发展的背景下,CITA 将区块链节点的必要功能解耦为六个微服务:RPC,Auth,Consensus,Chain,Executor,Network。各组件之间通过消息总线交换信息相互协作。 通过配置和定制相应的服务,CITA 能够满足企业级用户的全部需要。
CITA的框架
整个CITAHub的完整组成如下图,而每个部分都成为了每个功能解耦后的承载体,我们来具体看每个部分的功能分解。
内核
CITA 将一个区块链节点的共识、网络、计算、RPC 等功能进行了微服务化拆分,每一个微服务又可以有多个实例,最终这些实例共同完成一个节点的记账功能。这样,可以将区块链性能的扩展问题转化成了节点的扩展问题,当性能不足时,插入一台服务器,分担节点的工作压力即可。同时,将共识机制、底层逻辑进行了深度优化,例如采用Rust语言架构所有代码等。
实测数据:由4核8G云主机构成的CITA的性能可达到每秒2900笔简单交易;32核64G云主机组成的CITA的性能则超过了每秒1.5万笔简单交易。如采用集群构建节点性能将会更高,因此 CITA 的性能已经足以应付绝大多数应用场景。
CITA Toolchain
CITA Toolchain 作为 CITA 生态中的重要组成部分,目的是使开发者在使用 CITA 或基于 CITA 构建应用时更加方便。
跟 CITA 直接进行数据交互的有 CITA SDK、CITA CLI。
CITA SDK 是 Toolchain 的核心,它将 CITA 上重复繁琐的操作进行封装,暴露简单的接口给开发者,开发者可借助此 SDK 构建应用。
官方在 CITA SDK 基础上构建了 4 个工具: ReBirth、CITA IDE、CITA Truffle Box、CITA Web Debugger。
CITA CLI 是一个非常友好的系统运维工具。
CITA SDK
CITA SDK 分为不同语言版本:Java SDK、JavaScript SDK、Ruby SDK、Swift SDK、Rust SDK。
JavaScript SDK 是在 Ethereum Web3 的基础上做了封装并且添加 CITA 的 JSON-RPC 请求以及 CITA 的签名模块,构建了 CITA IDE、CITA Truffle Box、CITA Web Debugger。
Java SDK 集成了与 CITA 客户端交互的功能,可以用来对 CITA 发送交易、部署智能合约、调用合约方法,进行系统配置以及查询其他信息等。
Swift SDK 用于构建 Cyton Wallet iOS 端。
Ruby SDK 用于构建 ReBirth。
Rust SDK 是 CITA JSON-RPC 客户端的 Rust 实现。
ReBirth
ReBirth 是针对 CITA 提供的区块链缓存服务器,能够满足检索区块,提供 ERC20 交易列表等业务功能需求,这类功能如果直接在底层实现会影响性能。
CITA IDE
CITA IDE 是面向 CITA 的智能合约编辑器,能够编写、编译、debug、部署智能合约。
CITA Truffle Box
CITA Truffle Box 是基于 Truffle Box 定制的适配 CITA 的 DApp 全能开发框架,包括编写合约、编译合约、测试合约、部署合约、构建 DApp,因此在 CITA 上开发 DApp 的体验和在 Ethereum 上比较一致。
CITA Web Debugger
CITA Web Debugger 作为 DApp 调试工具,是一个基于 Chrome 浏览器的插件,用户在开发 DApp 时,在手机上调试很不方便,使用 CITA Web Debugger 能够在浏览器上调试交易方面的功能,能方便地获取交易具体详情和反馈。
此外官方还提供 3 个针对特定业务需求和开发场景的工具:Cyton Wallet、CITA CLI、Microscope。
Cyton Wallet
Cyton Wallet 分为 Android 版和 iOS 版,提供账户管理功能(私钥、助记词、keystore)和Token 管理及转账功能,并内置 DApp 浏览器。同时它依赖 ReBirth 提供原生代币和 ERC20 代币交易列表。
CITA CLI
CITA CLI 是在开发中调试 CITA 的命令行工具,与 CITA 链交互可以通过 CITA CLI 操作,支持搜索历史命令,默认支持 secp256k1 和 SM2 加密算法。
Microscope
Microscope 区块链浏览器,可用于查询所有 CITA 链上信息,并支持基于 CITA 的多链,可在元数据面板中切换目标链。支持搜索区块、交易、帐户信息和调用智能合约方法。 它还可以与 ReBirth 一起使用,实现指定组合条件的区块交易列表查询,分析 CITA 的工作状态等高级功能。
CITA中的经济模型选择
CITA 作为面向企业的高性能区块链内核,拥有支持智能合约的虚拟机,用户发送交易(转账,调用合约,部署合约)中的每个运算都会消耗一定的资源,这里消耗的资源用 Quota 作为单位来计数。
为了对链上有限的计算资源进行管理和控制,需要对链的经济模型进行设计。实际的业务场景中普遍存在链运营方(发起链,维护浏览器等链的生态)、记账人(矿工,提供计算资源)、用户(消耗链上计算资源)等参与方角色。其中运营方、记账人可能由同一方承担,也可能是有独立利益诉求的不同参与方。
CITA 作为一个通用的区块链内核,提供了诸多配置参数,让用户可以根据自己的业务场景进行定制经济模型。概括来说可以分为两种模式:
Quota 模式
无代币的模式,系统默认模式。系统仅对用户交易消耗的资源进行统计。
参数设置。通过设置 Quota Limit,系统可以对区块内交易总体消耗的资源进行限制,也可以对单个账户设定一个块内交易资源消耗的限制。详细内容与操作参见 Quota 模式。
场景举例:
几个企业组成一个联盟运行区块链,每一个成员既是“矿工”(维护区块链账本),又是用户(消耗计算资源)。矿工“无偿”工作,旨在维护系统稳定。这种场景可以选择 Quota 模式。
Charge 模式
有代币的模式,链上发行原生代币。系统先对用户交易消耗的资源进行统计 (quotaUsed),并换算为原生代币对用户进行收费。收取的费用有多种灵活的分配方式,方便用户根据业务场景进行定制。
参数设置。与 Quota 模式一样,charge 模式也可以通过设置 Quota Limit,对区块内交易总体消耗的资源进行限制,对账户的单次交易设定资源消耗的限制。并且可以灵活的设置代币总量和分发方式。在链的运行过程中,还可以通过通过设置 QuotaPrice 对手续费进行调控。
CITA对隐私保护的选择
在 CITA 的架构中,为保护“账本”的相关隐私,采用了多元的技术方案来对用户身份与上链数据进行隐私保护。
如果使用密码学方案,所有的参与方都参与了对数据有效性、合法性的校验,但是只能提供转账隐私,有前向安全风险。可以对用户身份和交易数据进行隐私保护。
如果采用了零知识证明技术。证明者向验证者提供关于交易发送者、接受者身份和交易细节的证明,证明内容不透露交易双方身份和交易细节等相关信息。数据有效隔离;无前向安全风险。可以对交易数据进行隐私保护。
综合了几种多链与跨链方案后,CITA 在底层实现了侧链方案来实现隐私交易。几个相关合作方共同起一条主链,其中的某几个参与方可以向主链注册一条侧链,在侧链上进行交易、验证,从而使侧链数据与主链数据隔离开,从而实现侧链交易数据的隐私保护。此方案无中心化风险,灵活性更高。
此外,还将需要参与共识和需要共享的核心数据,和其他的数据如合同明文、批量大数据、隐私、个人信息分离,数据脱敏后再上链,或者将数据摘要上链,必要时再授权访问明文等其他数据。链外存储是将要保护的隐私数据,链上是可以公开的数据。这种方法是当前可行性较好的方案,可以基于 CITA 进行设计实现。
最后,如果使用可信硬件,能让整体架构简洁,对存储空间要求低,具有很高的灵活性;但是受制于厂商。这种方式可以对用户身份、上链数据(交易数据、存证数据)和智能合约的隐私保护。
例如应用SGX隐私保护技术,通过计算机的核心处理器 CPU 来构建可信执行环境 TEE,SGX 可以将智能合约中的关键操作封装到 Enclave 中,即便操作系统或者 VMM(Hypervisor)也无法影响 Enclave 里面的代码和数据。Enclave 的安全边界只包含 CPU 和它自身,极大的保证了数据的安全性。CITA表示,目前,已有项目搭建了 CITA 联盟链平台,并使用 SGX 可信执行环境技术,实现了交易数据的隐私性和监管的穿透性。