> For the complete documentation index, see [llms.txt](https://www.docszh.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.docszh.com/babylon-docs/introduction/architecture.md).

# Babylon 架构

Babylon系统由一个使用[Cosmos SDK](https://docs.cosmos.network/)构建的Babylon节点，以及外围程序组成。这些外围程序可促进BTC质押、最终轮次参与，以及比特币网络与其他PoS区块链的跨链通信。

<figure><img src="/files/6pgruawVoNA0HOZTaiHZ" alt=""><figcaption></figcaption></figure>

### Babylon节点模块

#### [Epoching](/babylon-docs/developer-guides/modules/epoching.md)

Babylon区块链被划分为若干个纪元 ([epoch](https://ethereum.org/zh/glossary/#epoch))，每个纪元由一组参数化数量设定的区块组成。在每个纪元内，验证者集不会改变。这样，Babylon只需在每个纪元而非每个区块设置一个检查点，从而降低了检查点设置成本。纪元模块通过将影响验证者集的交易执行，延迟到每个纪元的最后一个区块来实现这一目标。

#### [比特币轻客户端](/babylon-docs/developer-guides/modules/btclightclient.md)

比特币轻客户端模块接收由[Vigilante Reporter](/babylon-docs/developer-guides/vigilantes/reporter.md)报告的比特币区块头 (header) 信息，并维护一条基于比特币PoW共识的比特币区块头链。其负责披露关于比特币标准链信息、区块头深度以及比特币交易打包凭证有效性等信息。

#### [比特币检查点](/babylon-docs/developer-guides/modules/btccheckpoint.md) (checkpoint)&#x20;

比特币检查点模块验证由[Vigilante Reporter](/babylon-docs/developer-guides/vigilantes/reporter.md)报告的Babylon比特币检查点信息，并根据比特币轻客户端模块的区块深度向检查点模块提供这些检查点的确认状态。

#### [检查点模块](/babylon-docs/developer-guides/modules/checkpointing.md)

检查点模块负责创建提交至比特币网络的Babylon检查点，并维护其确认状态。它负责收集每个区块验证者的[BLS签名](https://cloud.tencent.com/developer/article/2086813)，并将其聚合成一个BLS多重签名，以包含在比特币检查点中。每个检查点的确认状态由比特币检查点模块提供的比特币检查点所包含的信息决定。

#### [Zone Concierge模块](/babylon-docs/developer-guides/modules/zoneconcierge.md)

Zone Concierge模块从连接的[IBC轻客户端](https://ibc.cosmos.network/v8/ibc/light-clients/overview/)中提取经过验证的PoS链区块头信息，并根据包含这些区块头信息的基于Babylon交易的比特币确认状态，来维护其比特币确认状态。它通过[IBC连接](https://cosmos.network/ibc)向PoS链传递可验证的比特币确认状态证明。

#### 比特币质押模块

比特币质押模块是比特币质押协议的记账员。它负责验证和激活BTC质押请求，并维护活跃的最终性 (finality) 提供者集。它与比特币轻客户端模块通信以提取质押请求的确认状态，并接收比特币质押[期限检查器](/babylon-docs/user-guides/bitcoin-staking-phase1/backend-deployment/services/staking-expiry-checker.md)的按需解锁质押的通知信息。

#### 最终确定性 (Finality)

最终性模块负责最终确定由[CometBFT](https://cosmos.network/cometBFT)共识生成的区块。它接收并验证来自最终性提供者的最终性投票，如果有足够的投票权，该区块将被视为最终确定。每个最终性提供者的投票权基于从比特币质押模块获得的BTC质押权益。最终性投票采用可提取的一次性签名 (EOTS) 进行，并使用最终性提供者承诺的公共随机数进行验证。

#### 激励模块

激励模块从分配给Babylon质押者的奖励中提取一定比例，并将其分配给BTC质押者和监察者 ([Vigilante](/babylon-docs/developer-guides/vigilantes.md))作为奖励。

### Vigilantes

Vigilante程序套件旨在Babylon和比特币网络之间充当数据中继器。Babylon的安全运行需要每个程序至少有一名诚实的操作者，否则监控程序将发出警报。

#### [Vigilante提交者](/babylon-docs/developer-guides/vigilantes/submitter.md)

一个独立程序，通过`OP_RETURN`比特币网络脚本，将Babylon检查点数据嵌入比特币交易，提交到比特币网络。

#### [Vigilante报告者](/babylon-docs/developer-guides/vigilantes/reporter.md)

一个独立程序，扫描比特币网络交易账本，以获取比特币网络区块头和Babylon检查点信息，并通过Babylon交易将其报告给Babylon。

### 监控器

监控器程序套件负责监控Babylon和比特币网络间的状态一致性。

#### [检查点监控器](/babylon-docs/developer-guides/vigilantes/monitor.md)

一个独立程序，用于监控：

* 比特币标准链与比特币轻客户端模块维护的比特币区块头链之间的一致性。
* 是否及时地将比特币检查点信息打包进了Babylon交易账本中。

#### [比特币质押监控器](https://github.com/babylonlabs-io/vigilante)

一个独立程序，用于监控：

* 比特币网络账本上BTC质押按需解质押交易的执行情况，并向Babylon报告。
* 当发生最终性提供者双重投票的恶意行为，执行BTC质押权益罚没交易。如果未执行，监控器将提取最终性提供者的密钥并执行罚没。
* 对由最终性提供者发起的选择性罚没攻击的执行。在这种情况下，监控器将提取该最终性提供者的密钥并进行罚没。

### 比特币质押程序

比特币质押程序套件包含启用BTC质押者和最终性提供者功能的组件，同时确保他们遵循协议。

#### BTC质押者

BTC持有者可以通过创建一组交易质押其BTC资产，并将它们添加到比特币网络账本中，然后向Babylon反馈质押信息，确认质押成功。BTC持有者还可以在质押到期时按需解锁或提取BTC资产。Babylon开发了以下一组独立程序来实现这些功能：

* [BTC Staker Daemon](https://github.com/babylonlabs-io/btc-staker) ：连接比特币钱包和Babylon的守护进程程序。
* [BTC Staker Dashboard](https://github.com/babylonlabs-io/btc-staking-dashboard) ：连接比特币钱包扩展和Babylon API的Web应用程序。仅用于测试目的。
* Wallet Integrations (待定)

#### [最终性 (Finality) 提供者](https://github.com/babylonlabs-io/finality-provider)

一个独立程序，用于最终性提供者的注册和维护。负责监控最终性提供者的活跃状态，提交可提取一次性签名 (EOTS) 的公共随机数，并为区块提交最终性投票。最终性投票通过连接到独立的[EOTS管理器守护进程](https://github.com/babylonlabs-io/finality-provider)来创建，该守护进程负责维护最终性提供者的私钥安全。

[Covenant模拟器](https://github.com/babylonlabs-io/covenant-emulator)

由[Covenant](https://covenants.info/)模拟器委员会成员使用的独立程序。用于监控待处理的质押请求，验证其信息并提交必要的签名来模拟Covenant功能。

### 消费者链 (CZ: Consumer Zones)&#x20;

IBC中继器维护Babylon和其他消费者链 (CZ: Consumer Zones) 之间的[IBC协议](https://cosmos.network/ibc/)连接。负责更新Babylon账本内的消费者链轻客户端，以启用检查点功能，并将检查点信息广播至部署在消费者链的Babylon智能合约中。

以下IBC中继器可以实现此功能：

* [Cosmos Relayer](https://github.com/cosmos/relayer)：用Go语言编写的功能齐全的中继器。
* [Babylon Relayer](https://github.com/babylonlabs-io/babylon-relayer/)：Cosmos Relayer的封装器，用于维护单向IBC连接。建议在消费者链尚未部署Babylon智能合约时使用。
* [Hermes Relayer](https://github.com/informalsystems/hermes)：用Rust语言编写的功能齐全的中继器。

关于Cosmos Hub提出的消费者链 (CZ: Consumer Zones) 参考阅读：[解析Cosmos Hub的多元安全模型](https://foresightnews.pro/article/detail/51921)

#### Babylon 合约

一种基于[CosmWasm](https://cosmos.network/cosmwasm)的智能合约，部署在消费者链中。它支持比特币检查点功能，且无需对消费者链的代码进行大规模修改。得益于比特币检查点功能，消费者链可以根据比特币账本中打包的检查点做出决策 (例如执行BTC的解质押请求)。
