Update ReentrancyGuard for Istanbul Hard Fork #1992
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes:
Added L37,
_guardCounter = 1;
Rationale:
The planned Istanbul Hard Fork will implement EIP 2200, which implements "net gas metering" for
sstore
operations. If the final value of_guardCounter
is unchanged relative to the original value of it, a gas refund will be applied and charges for changing the value of_guardCounter
will effectively not exist. This ends up being cheaper than the current implementation ONLY AFTER Istanbul. Before Istanbul, the added line actually ends up costing more gas.Note that if
_guardCounter
is0
initially, the initial cost and subsequent refund will both be larger than if_guardCounter
is1
initially. Although in both cases, the net gas cost (gasCost - gasRefund
) are equal, it's better in terms of cost to have both the gas cost and refund smaller, as there is some limit to the percentage of a gas refund that can actually be realized.