危机(Crisis)

摘要

crisis 模块在区块链不变量被破坏的情况下停止区块链运行。 不变量可以在应用程序初始化过程中注册到应用程序中。

目录

状态

ConstantFee

由于验证不变量预计会消耗大量 gas(并可能超出区块的最大 gas 限制),因此采用固定费用 (ConstantFee) 代替标准的 gas 消耗方法。 ConstantFee 旨在高于使用标准 gas 消耗方法运行不变量的预计成本。

ConstantFee 参数存储在模块参数状态中,前缀为 0x01,可通过治理或具有权限的地址进行更新。

  • 参数: mint/params -> legacy_amino(sdk.Coin)

消息

在本节中,我们描述 crisis 消息的处理过程及相应的状态更新。

MsgVerifyInvariant

区块链不变量可以使用 MsgVerifyInvariant 消息进行检查。

https://github.com/cosmos/cosmos-sdk/blob/v0.47.0-rc1/proto/cosmos/crisis/v1beta1/tx.proto#L26-L42

如果出现以下情况,该消息预计会失败:

  • 发送者的代币不足以支付固定费用

  • 不变量路由未注册

该消息检查提供的不变量,如果不变量被破坏,则触发 panic,停止区块链。如果不变量被破坏,固定费用不会被扣除,因为交易从未被提交到区块(相当于退款)。然而,如果不变量没有被破坏,固定费用将不会被退款。

事件

crisis 模块会触发以下事件:

Handlers

MsgVerifyInvariance

类型
属性键
属性值

invariant

route

{invariantRoute}

message

module

crisis

message

action

verify_invariant

message

sender

{senderAddress}

参数

crisis 模块包含以下参数:

类型
示例

ConstantFee

object (coin)

{"denom":"uatom","amount":"1000"}

客户端

CLI

用户可以使用 CLI 查询和与 crisis 模块进行交互。

Transactions

tx 命令允许用户与 crisis 模块进行交互。

simd tx crisis --help

invariant-broken

invariant-broken 命令提交证明,当不变量被破坏时,用于停止链的运行。

simd tx crisis invariant-broken [module-name] [invariant-route] [flags]

示例:

simd tx crisis invariant-broken bank total-supply --from=[keyname or address]

Last updated