Merged
Conversation
c93fab7 to
044600f
Compare
Comment on lines
+45
to
+56
| constructor(address priceFeedA_, address priceFeedB_, uint8 decimals_, string memory description_) { | ||
| priceFeedA = priceFeedA_; | ||
| priceFeedB = priceFeedB_; | ||
| uint8 priceFeedADecimals = AggregatorV3Interface(priceFeedA_).decimals(); | ||
| uint8 priceFeedBDecimals = AggregatorV3Interface(priceFeedB_).decimals(); | ||
| combinedScale = signed256(10 ** (priceFeedADecimals + priceFeedBDecimals)); | ||
|
|
||
| if (decimals_ > 18) revert BadDecimals(); | ||
| decimals = decimals_; | ||
| description = description_; | ||
| priceFeedScale = int256(10 ** decimals); | ||
| } |
Check notice
Code scanning / Semgrep
Semgrep Finding: rules.solidity.performance.non-payable-constructor
Comment on lines
+45
to
+56
| constructor(address priceFeedA_, address priceFeedB_, uint8 decimals_, string memory description_) { | ||
| priceFeedA = priceFeedA_; | ||
| priceFeedB = priceFeedB_; | ||
| uint8 priceFeedADecimals = AggregatorV3Interface(priceFeedA_).decimals(); | ||
| uint8 priceFeedBDecimals = AggregatorV3Interface(priceFeedB_).decimals(); | ||
| combinedScale = signed256(10 ** (priceFeedADecimals + priceFeedBDecimals)); | ||
|
|
||
| if (decimals_ > 18) revert BadDecimals(); | ||
| decimals = decimals_; | ||
| description = description_; | ||
| priceFeedScale = int256(10 ** decimals); | ||
| } |
Check warning
Code scanning / Semgrep
Semgrep Finding: compound.solidity.missing-constructor-sanity-checks
Comment on lines
+45
to
+56
| constructor(address priceFeedA_, address priceFeedB_, uint8 decimals_, string memory description_) { | ||
| priceFeedA = priceFeedA_; | ||
| priceFeedB = priceFeedB_; | ||
| uint8 priceFeedADecimals = AggregatorV3Interface(priceFeedA_).decimals(); | ||
| uint8 priceFeedBDecimals = AggregatorV3Interface(priceFeedB_).decimals(); | ||
| combinedScale = signed256(10 ** (priceFeedADecimals + priceFeedBDecimals)); | ||
|
|
||
| if (decimals_ > 18) revert BadDecimals(); | ||
| decimals = decimals_; | ||
| description = description_; | ||
| priceFeedScale = int256(10 ** decimals); | ||
| } |
Check warning
Code scanning / Semgrep
Semgrep Finding: compound.solidity.missing-constructor-sanity-checks
Comment on lines
+45
to
+56
| constructor(address priceFeedA_, address priceFeedB_, uint8 decimals_, string memory description_) { | ||
| priceFeedA = priceFeedA_; | ||
| priceFeedB = priceFeedB_; | ||
| uint8 priceFeedADecimals = AggregatorV3Interface(priceFeedA_).decimals(); | ||
| uint8 priceFeedBDecimals = AggregatorV3Interface(priceFeedB_).decimals(); | ||
| combinedScale = signed256(10 ** (priceFeedADecimals + priceFeedBDecimals)); | ||
|
|
||
| if (decimals_ > 18) revert BadDecimals(); | ||
| decimals = decimals_; | ||
| description = description_; | ||
| priceFeedScale = int256(10 ** decimals); | ||
| } |
Check warning
Code scanning / Semgrep
Semgrep Finding: compound.solidity.missing-constructor-sanity-checks
scott-silver
reviewed
Jun 8, 2023
Contributor
Author
|
Forgot to merge this. Here is the final audit report from OZ: https://gist.github.com/antonleviathan/2938185330642deffe141f682375678b |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This generalizes the logic used in the recently audited
WBTCPriceFeedto create aMultiplicativePriceFeedthat derives its price from multiplying the prices from two other price feeds together.This is a flexible wrapper price feed that can be used to generate prices for any asset that does not have a price feed that fits Comet's expected price denomination. e.g. if we wanted to add
cbETHtocUSDCv3, there is no Chainlink price feed forcbETH / USD, so we would need to multiply thecbETH / ETHandETH / USDprice feeds together to getcbETH / USD