1

- 1 min
graph LR  
    A[应用程序结构]  
    A1[创建文件 app.go]  
    A2[引入依赖]  
    A3[ABCI接口-baseapp已经实现-你无需动手]  
    A4[创建自定义类型 nameServiceApp]  
    A5[构造函数 NewNameServiceApp]  
    A6[定义路由和初始状态]  
    A7[构建 nameservice 模块]  

    A --> A1  
    A --> A2  
    A --> A3  
    A --> A4  
    A --> A5  
    A --> A6  
    A --> A7

引入依赖

BaseApp


sequenceDiagram  
    participant Client as 客户端  
    participant Tendermint as Tendermint 共识引擎  
    participant BaseApp as BaseApp  
    participant Module as 模块  
    participant State as 状态  
    participant Query as 查询  

    Client->>Tendermint: 发送交易  
    Tendermint->>BaseApp: 接收到交易  
    BaseApp->>BaseApp: 解码交易  
    BaseApp->>BaseApp: 提取 messages  
    BaseApp->>BaseApp: 进行基本合理性校验  
    BaseApp->>Module: 路由到合适的模块  
    Module->>BaseApp: 处理 message  
    BaseApp->>Tendermint: 处理结果  

    alt ABCI 消息是 DeliverTx 或 CheckTx  
        BaseApp->>Tendermint: 提交交易 Commit
    end  

    BaseApp->>Module: 调用 BeginBlock  
    Module->>BaseApp: 执行 BeginBlock 逻辑  
    BaseApp->>Module: 调用 EndBlock  
    Module->>BaseApp: 执行 EndBlock 逻辑  

    BaseApp->>State: 初始化状态  state
    BaseApp->>Query: 设置查询queries