CIP-145(Fix Receipts upon `NotEnoughBalance` Error)详细介绍


CIP编号:145
标题:修复NotEnoughBalance 错误时的回执
作者:Chenxing Li(@ChenxingLi
状态:最终版
类型:规范改变
创建时间:2024年05月16日


本文是整理好的CIP-145中文介绍,供大家交流讨论。

CIP-145详情链接:https://github.com/Conflux-Chain/CIPs/blob/master/CIPs/cip-145.md

内容

在交易由于发送方余额不足而失败时,修正 gas_sponsored 字段。

摘要

如果用户A受到合约B的赞助,并向该合约发起交易,但由于余额不足以支付交易金额而失败,即使受到赞助,用户A也必须支付交易费用,而不是由合约支付。

在Conflux主网启动时,这种行为是正确的。然而,CIP-78 在修复其他回执错误时无意中影响了这种情况,导致 gas_sponsored 字段在这种情况下错误地显示为true。

本CIP将纠正此错误。

动机

修复错误。

规格说明

定义:sender_intended_cost。 sender_intended_cost 被定义为发送方应该预见到的开支。它包括三个部分:

  1. 交易转移余额。
  2. 燃气费用(在CIP-1559之后,使用effective_gas_price替换gas_price,计算为tx.price * tx.gas_limit),如果发送方有资格获得赞助,则为0。
  3. 存储抵押成本,如果发送方有资格获得存储抵押赞助,则为0。

在当前的Conflux主网中,如果在交易执行开始时,发送方的余额不足以支付sender_intended_cost,则发送方的nonce会增加1,发送方支付燃气费用(如果余额不足,则扣除所有余额),并且不会产生存储抵押成本。本CIP将在这种情况下将 gas_sponsored 字段从 true 更正为 false

后向兼容性

此改动将改变原有系统规范。

版权

此提案遵守 CC0 协议,所有版权及相关权利不设限。