Omniscia AmpleSense Audit
AMPLRebaser Code Style Findings
AMPLRebaser Code Style Findings
AMP-01C: Inexistent Variable Visibility Specifiers
| Type | Severity | Location |
|---|---|---|
| Code Style | Informational | AMPLRebaser.sol:L15, L17 |
Description:
The linked variables have no visibility specifiers explicitly set.
Example:
13uint256 public last_ampl_supply;14
15uint256 last_rebase_call;16
17IERC20 _ampl_token;Recommendation:
We advise them to be set so to avoid potential compilation discrepancies in the future as the current behaviour is for the compiler to assign one automatically.
Alleviation:
Both variables had a visibility specifier explicitly set.
AMP-02C: Redundant Function Block
| Type | Severity | Location |
|---|---|---|
| Code Style | Informational | AMPLRebaser.sol:L36-L37 |
Description:
The _rebase function is a virtual function that is meant to be overridden by derivative implementations.
Example:
36function _rebase(uint256 old_supply, uint256 new_supply) internal virtual {37}Recommendation:
We advise the contract to be set as abstract and the function's code block to be omitted ({}) to enforce proper inheritance via code.
Alleviation:
The function block was properly removed from the codebase.
AMP-03C: Variable Mutability Specifier
| Type | Severity | Location |
|---|---|---|
| Gas Optimization | Informational | AMPLRebaser.sol:L17, L21 |
Description:
The linked variable is assigned to only once during the contract's constructor.
Example:
19constructor(IERC20 ampl_token) {20 require(address(ampl_token) != address(0), "AMPLRebaser: Invalid ampl token address");21 _ampl_token = ampl_token;22 last_ampl_supply = _ampl_token.totalSupply();23 last_rebase_call = block.timestamp;24}Recommendation:
We advise it to be set as immutable greatly optimizing its read access gas cost.
Alleviation:
The ampl_token is now properly declared as an immutable variable optimizing the codebase.