zoukankan      html  css  js  c++  java
  • cita系统组件

    系统组件

    RPC

    RPC(Remote Procedure Call Protocol) 即远程过程调用协议,它是一种通过网 络从远程计算机程序上请求服务,不需要了解底层网络技术的协议,是基于可靠 性、可控制 TCP 的应用层协议,从而保证了用户数据的传输完整。

    在 CITA 内部专门提供了 RPC 模块,用于处理用户的 RPC 请求。其作用,一方 面对用户的请求数据进行简单的校验,对不符合格式的数据进行友好错误状态返 回,对于内部模块,过滤了部分杂乱请求,减少了共识模块等部分压力;

    另一方面,从用户角度来说,它是唯一与 CITA 节点进行数据交互的模块,用户不 需要关注其它模块的运行状态即可得到相应的服务,在一定程度保证了 CITA 其它 模块的运行安全。

    目前,RPC 模块是一个可插拔的模块,与其它模块间的数据交互是通过内部数据 交换协议来实现的,模块只做最单一功能,便于与其它模块解耦,这意味着,模 块的可插拔性,给我们提供了进行横向扩展的策略。通过灵活配置 RPC 模块服务 的数量,允许更多用户的接入来处理大量请求,相当于 CITA 对用户的接入进行负 载均衡,对请求进行转发,并提供相应的应答。在接入协议实现上,可以定制用 户所需各种传输协议规范、特定场景的接口,如 HTTP、WebSocket 协议,以满足 其所需服务。

    共识

    共识算法解决的是针对某个提案 (proposal),系统中的节点达成一致的过程。在 区块链系统中,共识算法确保所有正确节点的交易顺序是一致的。CITA 共识模块 包括 Raft 和 CITA-BFT 的实现,共识模块负责接收交易并进行简单验证,然后打 包出块。在 CITA 的实现中,共识以相对独立的形式存在,其他共识算法的实现可 以很方便地集成到 CITA 中。

    Chain

    Chain 模块可以认为是一个 Append only 的 KV 数据库,它以块为单位,不断添加新 的区块到链上,并存储交易以及交易执行后的状态到数据库。

    CITA 中的 Chain 模块主要功能有以下几点:

    • 对共识后产生的区块,处理这些区块中的交易并生成区块哈希,最后添加到链上;
    • Chain 模块对 RPC 模块提供各种查询功能;
    • Chain 模块对 VM 模块提供操作数据库的接口。

    VM Engine

    智能合约是运行在可复制、共享的账本上的计算机程序,可以处理信息,接收、 储存和发送价值。而合约引擎则为智能合约提供了一个简单、确定、高效、安全 的执行环境。CITA 提供了多种形式的合约引擎,用户使用接口与 EVM 兼容:

    • EVM 合约引擎

      用户可使用 Solidity 语言编写智能合约,并在 Remix 集成开发环境中开发和测试,最后通过 CITA 的合约创建和调用接口来部署和调用。换句话说,CITA 的合约通过以太坊智能合约的生态,一方面降低用户培养成本,一方面降低安全风险。

    • 原生合约引擎

      使用 EVM 合约能够快速完成功能开发,并满足初期性能需求。随着业务发展,当性能上遇到瓶颈时,可以 EVM 合约开发的基础上,用原生合约来实现,合约调用接口不变。原生合约支持两种数据访问接口,兼容 EVM 合约的键值数据库方式与传统的结构化数据库方式。同时也提供了原生合约的注册表机制,用户可以实现合约的创建与销毁。

  • 相关阅读:
    Linux快捷键、文件管理和查询
    Netty
    微软认知服务实现语音识别功能
    基础实用算法
    机器学习十大常用算法
    微服务之Swagger
    Quartz 入门详解 专题
    MyBatis(2):config.xml文件
    深入SpringBoot:自定义Endpoint
    快速掌握Flyway
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313317.html
Copyright © 2011-2022 走看看