危机(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 --helpinvariant-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
