Omniscia Tangible Audit
TNGBLV3Oracle Code Style Findings
TNGBLV3Oracle Code Style Findings
TNG-01C: Generic Typographic Mistakes
| Type | Severity | Location |
|---|---|---|
| Code Style | ![]() | TNGBLV3Oracle.sol:L13-L14 |
Description:
The referenced lines contain typographical mistakes (i.e. private variable without an underscore prefix) or generic documentational errors (i.e. copy-paste) that should be corrected.
Example:
13address public constant uniV3Factory = 0x1F98431c8aD98523631AE4a59f267346ea31F984;14uint24 public constant poolFeeDefault = 3000;Recommendation:
We advise them to be corrected enhancing the legibility of the codebase.
Alleviation (2ad448279d9e8e4b6edd94bcd2eb22129b6f7357):
The variables have been appropriately renamed based on whether they are declared as constant or not in the latest implementation, rendering this exhibit addressed.
TNG-02C: Redundant Code Duplication
| Type | Severity | Location |
|---|---|---|
| Gas Optimization | ![]() | TNGBLV3Oracle.sol:L22-L24, L34-L37 |
Description:
The TNGBLV3Oracle::consult function contains the same statements as TNGBLV3Oracle::consultWithFee with the absent argument being replaced by the poolFeeDefault value.
Example:
16function consult(17 address tokenIn,18 uint128 amountIn,19 address tokenOut,20 uint24 secondsAgo21) external view override returns (uint256 amountOut) {22 address _pool = _fetchPool(tokenIn, tokenOut, poolFeeDefault);23 require(_pool != address(0), "pool doesn't exist");24 amountOut = _estimateAmountOut(tokenIn, tokenOut, _pool, amountIn, secondsAgo);25}26
27function consultWithFee(28 address tokenIn,29 uint128 amountIn,30 address tokenOut,31 uint32 secondsAgo,32 uint24 fee33) external view override returns (uint256 amountOut) {34 address _pool = _fetchPool(tokenIn, tokenOut, fee);35 require(_pool != address(0), "pool doesn't exist");36
37 amountOut = _estimateAmountOut(tokenIn, tokenOut, _pool, amountIn, secondsAgo);38}Recommendation:
We advise the TNGBLV3Oracle::consult function to invoke the TNGBLV3Oracle::consultWithFee function, passing in the poolFeeDefault argument as the last one thus optimizing the bytecode size of the contract.
Alleviation (2ad448279d9e8e4b6edd94bcd2eb22129b6f7357):
The code was refactored to ensure that the _ppol related checks and amountOut calculations are performed in a single internal function that is re-used, optimizing the code's bytecode.
