赞
踩
特定应用程序的区块链,简单来说,一个区块链就是一个专门的应用程序。为了实现某一特定的去中心化应用而专门实现一个区块链。
在cosmos生态中构建区块链,基于tendermint共识引擎 (tendermint core、CometBFT) + Cosmos SDK来实现。
tendermint 共识引擎:封装了底层的网络层和共识层,并提供ABCI接口(应用区块链接口),使得转态机(具体的应用功能)与底层的共识引擎相连接。
Cosmos SDK:是用来构建区块链状态机(具体的应用功能)的框架。
借助 Cosmos SDK,开发人员只需定义状态机,tendermint 共识引擎将为他们处理网络上的复制。
CometBFT是一个与应用程序无关的引擎,负责处理区块链的网络和共识层。实际上,这意味着 CometBFT 负责传播和排序交易字节。CometBFT 依靠同名拜占庭容错(BFT)算法来就交易顺序达成共识。
CometBFT共识算法与一组称为验证器的特殊节点一起工作。验证者负责将交易块添加到区块链中。在任何给定的区块中,都有一个验证者集合 V。算法会选择 V 中的验证者作为下一个区块的提议者。如果超过三分之二的 V 在该块上签署了 a prevote和 a precommit,并且该块包含的所有交易均有效,则该块被视为有效。验证器集可以通过状态机中写入的规则进行更改。
CometBFT 通过一个名为ABCI 的接口将事务传递给应用程序,应用程序必须实现该接口。
CometBFT 仅处理交易字节。它不知道这些字节的含义。CometBFT 所做的就是确定性地对这些交易字节进行排序。CometBFT 通过 ABCI 将字节传递给应用程序,并期望返回代码来通知它事务中包含的消息是否已成功处理。
以下是 ABCI 最重要的信息:
Cosmos SDK 的强大之处在于其模块化。Cosmos SDK 应用程序是通过聚合可互操作模块的集合来构建的。每个模块定义状态的子集并包含自己的消息/事务处理器,而 Cosmos SDK 负责将每条消息路由到其各自的模块。
举例:
+ | | 事务通过DeliverTx从整个节点的CometBFT | 引擎中继到节点的应用程序 | | | +---------------------v--------------------------+ | APPLICATION | | | | Using baseapp's methods: Decode the Tx, | | extract and route the message(s) | | | +---------------------+--------------------------+ | | | +---------------------------+ | | | Message routed to | the correct module | to be processed | | +----------------+ +---------------+ +----------------+ +------v----------+ | | | | | | | | | AUTH MODULE | | BANK MODULE | | STAKING MODULE | | GOV MODULE | | | | | | | | | | | | | | | | Handles message,| | | | | | | | Updates state | | | | | | | | | +----------------+ +---------------+ +----------------+ +------+----------+ | | | | +--------------------------+ | | Return result to CometBFT | (0=Ok, 1=Err) v
每个模块都可以看作一个小状态机。开发人员需要定义模块处理的状态子集,以及修改状态的自定义消息类型。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。