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
被定义为发送方应该预见到的开支。它包括三个部分:
- 交易转移余额。
- 燃气费用(在CIP-1559之后,使用effective_gas_price替换gas_price,计算为tx.price * tx.gas_limit),如果发送方有资格获得赞助,则为0。
- 存储抵押成本,如果发送方有资格获得存储抵押赞助,则为0。
在当前的Conflux主网中,如果在交易执行开始时,发送方的余额不足以支付sender_intended_cost,则发送方的nonce会增加1,发送方支付燃气费用(如果余额不足,则扣除所有余额),并且不会产生存储抵押成本。本CIP将在这种情况下将 gas_sponsored
字段从 true
更正为 false
。
后向兼容性
此改动将改变原有系统规范。
版权
此提案遵守 CC0 协议,所有版权及相关权利不设限。