mirror of
https://github.com/status-im/EIPs.git
synced 2025-02-23 04:08:09 +00:00
50 lines
1.7 KiB
Markdown
50 lines
1.7 KiB
Markdown
|
---
|
|||
|
eip: 3978
|
|||
|
title: Gas refunds on reverts
|
|||
|
description: Do not erase gas refunds on transaction subcall reverts, due users pay a lot of gas for storage non-modification.
|
|||
|
author: Anton Bukov (@k06a), Mikhail Melnik (@ZumZoom)
|
|||
|
discussions-to: https://ethereum-magicians.org/t/eip-3978-gas-refunds-on-reverts/7071/
|
|||
|
status: Draft
|
|||
|
type: Standards Track
|
|||
|
category: Core
|
|||
|
created: 2021-09-16
|
|||
|
---
|
|||
|
|
|||
|
## Abstract
|
|||
|
|
|||
|
Since [EIP-3298](./eip-3298.md) gas refunds works for storage restores only inside the same transaction. For example [ERC-20](./eip-20.md) `approve` + `transferFrom` flow between 2 smart contracts according to [EIP-2200](./eip-2200.md) and [EIP-2929](./eip-2929.md) will cost nearly to `21600` gas with gas refund counter `20000`. But in case of reverting this subcall (containing both `approve` and `transferForm`) gas refund will be erased, while smart contract storage will remain unmodified. I think it should keep storage access costs, but still refund modification costs.
|
|||
|
|
|||
|
## Motivation
|
|||
|
|
|||
|
Сurrent full cancelling of gas refunds on internal reverts is too unfair. Users pay for non-modification same cost as for modification.
|
|||
|
|
|||
|
## Specification
|
|||
|
|
|||
|
Let's count all SSTORE gas costs within every subcall, excluding access costs. And on reverting any subcall let's not erase refund counter, but:
|
|||
|
```
|
|||
|
tx.gas_refund_counter = tx.gas_refund_counter - call.gas_refund_counter + MIN(call.gas_refund_counter, call.all_sstores_gas_cost)
|
|||
|
```
|
|||
|
|
|||
|
## Rationale
|
|||
|
|
|||
|
TBD
|
|||
|
|
|||
|
## Backwards Compatibility
|
|||
|
|
|||
|
No known backward incompatibilities.
|
|||
|
|
|||
|
## Test Cases
|
|||
|
|
|||
|
TBD
|
|||
|
|
|||
|
## Reference Implementation
|
|||
|
|
|||
|
TBD
|
|||
|
|
|||
|
## Security Considerations
|
|||
|
|
|||
|
TBD
|
|||
|
|
|||
|
## Copyright
|
|||
|
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
|