美文网首页区块链
Substrate介绍: 架构一览

Substrate介绍: 架构一览

作者: 爱写作的harry | 来源:发表于2019-07-28 23:38 被阅读0次

    Substrate架构一览

    包含

    • BABE/Grandpa 混合共识机制
      • BABE出块,高效率的出块,最快2秒一个块
      • Grandpa大量高效率确认区块,一次可以确认多个
    • 通用交易池
      • 很少需要定制
    • Metadata元数据系统
      • 包含了runtime模块中的所有信息
    • SRML(Substrate Runtime Module Library)
      • Substrate提供的各个模块的实现

    Runtime

    Runtime架构

    数据结构的定义

    • Block Header区块头
    • Block
    • Extrinsic 外部消息,区块链外面来的消息
      • Transaction 用户交易
      • Inherent 固有消息,没有签名,无法被签名,如由timestamp设置的当前区块的时间,其它验证人签名同意后就可以;或者验证人掉线的消息,下一个验证人说我来出块,其它也证人签名同意也可以

    Runtime API接口

    如果用别的语言实现Substrate的runtime,就要实现所有的这些接口。

    • version
    • execute_block
      • 执行区块
    • initialize_block
    • metadata
    • apply_extrinsic
    • finalize_block
    • inherent_extrinsics
    • check_inherents
      • 验证合法
    • random_seed
      • 拿到一个伪随机数
      • 可以用VRF验证
    • validate_transaction
      • 验证交易是否合法
    • slot_duration
      • 出块时间
    • offchain_worker
      • 脱链worker的实现
    • authorities
      • 拿到当前所有验证人

    SRML

    Support Macros

    • Substrate大量使用了Rust的Macro来实现各种功能

    Executive Module

    • Runtime API大部分都是在这里实现的

    • 调用了其它SRML或者custom的模块

    • 核心模块

      • Executive
      • System
    • 共识机制

      • Aura(目前的出块),2.0会实现BABE
      • Finality Tracker
      • Grandpa
      • Session
    • 自治管理

      • Consensus
      • Council
      • Democracy
      • Sudo(测试时候比较有用,主网上线没有这个模块)
    • 时间

      • Timestamp
    • 资金账户管理

      • Indicies
        • 分为正常地址和短地址
      • Balances
      • Staking
        • 质押管理
    • 智能合约

      • Contract
    • 辅助

      • Support
        • 用来实现各个其它的模块
      • Metadata
        • 从其它模块生成所有的元数据

    模块组成

    • Trait
      • 定义相关类型
    • decl_event
      • 定义事件
    • decl_storage
      • 定义存储数据
    • decl_module
      • 包括了dispatchable method 可以外部调用的函数
      • on_initialize / on_finalize 区块初始/结束接口

    文档

    项目文件结构简介

    Cargo.toml
    Cargo.lock  // cargo update 可以升级
    build.rs    // 额外的编译的命令
    scripts/init.sh // 初始化编译
    src/ // 所有的源码,从main开始
        cli.rs 主要功能在cli.rs中实现
        service.ts  把各个组件结合在一起
        chain_spec.rs   build-spec使用这个文件来生成
    runtime 引入各个模块,组成一个runtime
        src/lib.rs  最常用的就是construct_runtime! 这个macro;还会加入一些自定义的类型
    

    相关文章

      网友评论

        本文标题:Substrate介绍: 架构一览

        本文链接:https://www.haomeiwen.com/subject/telfrctx.html