Update FeeBankCharger.sol: Refactoring the Modifier #123
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.
Well, this PR is solely based on optimizing some gas by refactoring the modifier to save bytecode size and development cost..
Let's see how
Usually, modifier code is copied in all instances where it is used, thus increasing the bytecode size. By doing a refactor like this and introducing the internal function we can reduce the bytecode size at the cost of one JUMP opcode. Thus, this refactoring might only be used in the scenarios when our modifier is being used more than one time!!
Moreover, I kind of tested this refactor technique and the results were quite appealing, Here they are:
First I created a contract that is same as the one we use commonly (without using any internal function for the modifiers)
and this is the result I get:
quite a basic contract, Ain't it? And then I refactored that modifier with the help of an internal function and gas usage dropped, but with a catch i.e gas usage of each function increased quite a bit (see at the right side of those functions and compare them to the previous one)
That's it. If you found it not worth a change then please let me know. It will be a nice learning process for me then!! 😄