跳转到主要内容

Gas 和费用

了解 Injective 上 GasFees 之间的区别。前置阅读 → Cosmos SDK Gas
Gas 代表在状态机上执行特定操作所需的计算工作量。 Injective 利用 gas 概念来跟踪执行期间操作的资源使用情况。Injective 上的操作表示为对链存储的读取或写入。 在消息执行期间计算并向用户收取费用。此费用是根据消息执行中消耗的所有 gas 的总和计算的:
fee = gas * gas price
Gas 用于确保操作不需要过多的计算能力来完成,并阻止恶意用户向网络发送垃圾邮件。
最低 gas 价格: 验证者设置的最低 gas 价格目前为 160,000,000inj。要找到以 inj 支付的金额,将 gas 价格乘以 gas 数量并除以 1e18(INJ 有 18 位小数)。例如: 如果 gasWanted 是 104,519,那么 gasFees = 160,000,000 * 104,519 / 1e18 = 0.000016723inj

Cosmos SDK Gas

在 Cosmos SDK 中,gas 在主 GasMeterBlockGasMeter 中跟踪:
  • GasMeter:跟踪导致状态转换的执行期间消耗的 gas。它在每次交易执行时重置。
  • BlockGasMeter:跟踪区块中消耗的 gas,并强制 gas 不超过预定义的限制。此限制在 Tendermint 共识参数中定义,可以通过治理参数更改提案进行更改。
有关 Cosmos SDK 中 gas 的更多信息,请参阅这里 在 Cosmos 中,有些操作类型不是由交易触发的,但也可能导致状态转换。具体例子是 BeginBlockEndBlock 操作以及 AnteHandler 检查,它们可能在运行交易的状态转换之前也会读取和写入存储。

BeginBlockEndBlock

这些操作由 Tendermint Core 的应用区块链接口 (ABCI) 定义,并由每个 Cosmos SDK 模块定义。顾名思义,它们分别在每个区块处理的开始和结束时执行(即交易执行前后)。

AnteHandler

Cosmos SDK AnteHandler 在交易执行之前执行基本检查。这些检查通常是签名验证、交易字段验证、交易费用等。