-
Notifications
You must be signed in to change notification settings - Fork 148
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Scroll and Scroll testnet deployment + proposals #813
Conversation
constructor(address l2Messenger_) { | ||
l2Messenger = l2Messenger_; | ||
} |
Check notice
Code scanning / Semgrep
Semgrep Finding: rules.solidity.performance.non-payable-constructor
constructor(address l2Messenger_) { | ||
l2Messenger = l2Messenger_; | ||
} |
Check warning
Code scanning / Semgrep
Semgrep Finding: compound.solidity.missing-constructor-sanity-checks
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
constructor(address l2Messenger_) { | ||
l2Messenger = l2Messenger_; | ||
emit NewL2Messenger(address(0), l2Messenger_); | ||
} |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.non-payable-constructor Note
constructor(address l2Messenger_) { | ||
l2Messenger = l2Messenger_; | ||
emit NewL2Messenger(address(0), l2Messenger_); | ||
} |
Check warning
Code scanning / Semgrep OSS
Semgrep Finding: compound.solidity.missing-constructor-sanity-checks Warning
* debug * update price feed * update config * temp workaround * add scroll to scenarios * uncomment spider debug messages * add scroll relations * catch failed spider crawls * Fix spider for scroll * update bridge receiver to be compatible with scroll bridge * update relations * Modified deployment roots from GitHub Actions * remove console.log * rename scroll messenger * add scroll to governance scenarios * adapt scroll relay message fn --------- Co-authored-by: Isabelle Wei <[email protected]> Co-authored-by: isabelle <[email protected]> Co-authored-by: kevincheng96 <[email protected]> Co-authored-by: GitHub Actions Bot <>
* debug * update price feed * update config * temp workaround * add scroll to scenarios * uncomment spider debug messages * add scroll relations * catch failed spider crawls * Fix spider for scroll * update bridge receiver to be compatible with scroll bridge * update relations * Modified deployment roots from GitHub Actions * remove console.log * rename scroll messenger * add scroll to governance scenarios * adapt scroll relay message fn * fix unit tests * rename contracts and update message relaying --------- Co-authored-by: Isabelle Wei <[email protected]> Co-authored-by: isabelle <[email protected]> Co-authored-by: kevincheng96 <[email protected]> Co-authored-by: GitHub Actions Bot <>
…file (#817) * debug * update price feed * update config * temp workaround * add scroll to scenarios * uncomment spider debug messages * add scroll relations * catch failed spider crawls * Fix spider for scroll * update bridge receiver to be compatible with scroll bridge * update relations * Modified deployment roots from GitHub Actions * remove console.log * rename scroll messenger * add scroll to governance scenarios * adapt scroll relay message fn * fix unit tests * rename contracts and update message relaying * update scroll testnet block explorer URL * remove base fee * fix scroll l2 sender address * remove old roots * fix type errors * Modified deployment roots from GitHub Actions * proposal for intializing usdc market on scroll goerli * add configurator to scroll relations * PR comments --------- Co-authored-by: Isabelle Wei <[email protected]> Co-authored-by: isabelle <[email protected]> Co-authored-by: kevincheng96 <[email protected]> Co-authored-by: GitHub Actions Bot <>
Contract code updates for the OZ audits: - added docstrings to `ScrollBridgeReceiver` and `IScrollMessenger` - emit an event when constructing `ScrollBridgeReceiver` Other fly-by changes: - update blockscout URL - update roots from running migration
* debug * update price feed * update config * temp workaround * add scroll to scenarios * uncomment spider debug messages * add scroll relations * catch failed spider crawls * Fix spider for scroll * update bridge receiver to be compatible with scroll bridge * update relations * Modified deployment roots from GitHub Actions * remove console.log * rename scroll messenger * add scroll to governance scenarios * adapt scroll relay message fn * fix unit tests * rename contracts and update message relaying * update scroll testnet block explorer URL * remove base fee * fix scroll l2 sender address * remove old roots * fix type errors * Modified deployment roots from GitHub Actions * proposal for intializing usdc market on scroll goerli * add configurator to scroll relations * PR comments * add docstrings * emit event when intializing ScrollBridgeReceiver * PR comments * update comment * add usdc market on scroll mainnet * fix wseth * create migration * use gauntlet recommended parameters * lint and fix timelock params * set rewards speed to 0 * add pause guardian * fix scientific notation * add scroll mainnet roots * update scroll relations for wsteth * PR comments * update wsteth/USD price feed to exchange rate based * Modified deployment roots from GitHub Actions * update proposal description * update scroll governance proposal to bridge USDC instead of COMP * final PR comments * set message value on propsal actions --------- Co-authored-by: Isabelle Wei <[email protected]> Co-authored-by: isabelle <[email protected]> Co-authored-by: kevincheng96 <[email protected]> Co-authored-by: GitHub Actions Bot <>
2615530
to
8ec9072
Compare
constructor(Configuration memory config) { | ||
// Sanity checks | ||
uint8 decimals_ = ERC20(config.baseToken).decimals(); | ||
if (decimals_ > MAX_BASE_DECIMALS) revert BadDecimals(); | ||
if (config.storeFrontPriceFactor > FACTOR_SCALE) revert BadDiscount(); | ||
if (config.assetConfigs.length > MAX_ASSETS) revert TooManyAssets(); | ||
if (config.baseMinForRewards == 0) revert BadMinimum(); | ||
if (IPriceFeed(config.baseTokenPriceFeed).decimals() != PRICE_FEED_DECIMALS) revert BadDecimals(); | ||
|
||
// Copy configuration | ||
unchecked { | ||
governor = config.governor; | ||
pauseGuardian = config.pauseGuardian; | ||
baseToken = config.baseToken; | ||
baseTokenPriceFeed = config.baseTokenPriceFeed; | ||
extensionDelegate = config.extensionDelegate; | ||
storeFrontPriceFactor = config.storeFrontPriceFactor; | ||
|
||
decimals = decimals_; | ||
baseScale = uint64(10 ** decimals_); | ||
trackingIndexScale = config.trackingIndexScale; | ||
if (baseScale < BASE_ACCRUAL_SCALE) revert BadDecimals(); | ||
accrualDescaleFactor = baseScale / BASE_ACCRUAL_SCALE; | ||
|
||
baseMinForRewards = config.baseMinForRewards; | ||
baseTrackingSupplySpeed = config.baseTrackingSupplySpeed; | ||
baseTrackingBorrowSpeed = config.baseTrackingBorrowSpeed; | ||
|
||
baseBorrowMin = config.baseBorrowMin; | ||
targetReserves = config.targetReserves; | ||
} | ||
|
||
// Set interest rate model configs | ||
unchecked { | ||
supplyKink = config.supplyKink; | ||
supplyPerSecondInterestRateSlopeLow = config.supplyPerYearInterestRateSlopeLow / SECONDS_PER_YEAR; | ||
supplyPerSecondInterestRateSlopeHigh = config.supplyPerYearInterestRateSlopeHigh / SECONDS_PER_YEAR; | ||
supplyPerSecondInterestRateBase = config.supplyPerYearInterestRateBase / SECONDS_PER_YEAR; | ||
borrowKink = config.borrowKink; | ||
borrowPerSecondInterestRateSlopeLow = config.borrowPerYearInterestRateSlopeLow / SECONDS_PER_YEAR; | ||
borrowPerSecondInterestRateSlopeHigh = config.borrowPerYearInterestRateSlopeHigh / SECONDS_PER_YEAR; | ||
borrowPerSecondInterestRateBase = config.borrowPerYearInterestRateBase / SECONDS_PER_YEAR; | ||
} | ||
|
||
// Set asset info | ||
numAssets = uint8(config.assetConfigs.length); | ||
|
||
(asset00_a, asset00_b) = getPackedAssetInternal(config.assetConfigs, 0); | ||
(asset01_a, asset01_b) = getPackedAssetInternal(config.assetConfigs, 1); | ||
(asset02_a, asset02_b) = getPackedAssetInternal(config.assetConfigs, 2); | ||
(asset03_a, asset03_b) = getPackedAssetInternal(config.assetConfigs, 3); | ||
(asset04_a, asset04_b) = getPackedAssetInternal(config.assetConfigs, 4); | ||
(asset05_a, asset05_b) = getPackedAssetInternal(config.assetConfigs, 5); | ||
(asset06_a, asset06_b) = getPackedAssetInternal(config.assetConfigs, 6); | ||
(asset07_a, asset07_b) = getPackedAssetInternal(config.assetConfigs, 7); | ||
(asset08_a, asset08_b) = getPackedAssetInternal(config.assetConfigs, 8); | ||
(asset09_a, asset09_b) = getPackedAssetInternal(config.assetConfigs, 9); | ||
(asset10_a, asset10_b) = getPackedAssetInternal(config.assetConfigs, 10); | ||
(asset11_a, asset11_b) = getPackedAssetInternal(config.assetConfigs, 11); | ||
(asset12_a, asset12_b) = getPackedAssetInternal(config.assetConfigs, 12); | ||
(asset13_a, asset13_b) = getPackedAssetInternal(config.assetConfigs, 13); | ||
(asset14_a, asset14_b) = getPackedAssetInternal(config.assetConfigs, 14); | ||
} |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.non-payable-constructor Note
if (assetInfo.asset == asset) { | ||
return assetInfo; | ||
} | ||
unchecked { i++; } |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-prefix-increment-not-postfix Note
The prefix increment expression is cheaper in terms of gas.
asset.borrowCollateralFactor | ||
)); | ||
} | ||
unchecked { i++; } |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-prefix-increment-not-postfix Note
The prefix increment expression is cheaper in terms of gas.
asset.liquidateCollateralFactor | ||
)); | ||
} | ||
unchecked { i++; } |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-prefix-increment-not-postfix Note
The prefix increment expression is cheaper in terms of gas.
bool absorbPaused, | ||
bool buyPaused | ||
) override external { | ||
if (msg.sender != governor && msg.sender != pauseGuardian) revert Unauthorized(); |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-nested-if Note
There are more advantages, such as easier to read code and better coverage reports.
} else if (initialUserBalance != 0 && finalUserBalance == 0) { | ||
// clear bit for asset | ||
userBasic[account].assetsIn &= ~(uint16(1) << assetInfo.offset); | ||
} |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-nested-if Note
There are more advantages, such as easier to read code and better coverage reports.
accrueInternal(); | ||
for (uint i = 0; i < accounts.length; ) { | ||
absorbInternal(absorber, accounts[i]); | ||
unchecked { i++; } |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-prefix-increment-not-postfix Note
The prefix increment expression is cheaper in terms of gas.
// Using gas price instead of base fee would more accurately reflect spend, | ||
// but is also subject to abuse if refunds were to be given automatically. | ||
LiquidatorPoints memory points = liquidatorPoints[absorber]; | ||
points.numAbsorbs++; |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-prefix-increment-not-postfix Note
The prefix increment expression is cheaper in terms of gas.
|
||
emit AbsorbCollateral(absorber, account, asset, seizeAmount, value); | ||
} | ||
unchecked { i++; } |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-prefix-increment-not-postfix Note
The prefix increment expression is cheaper in terms of gas.
if (isBuyPaused()) revert Paused(); | ||
|
||
int reserves = getReserves(); | ||
if (reserves >= 0 && uint(reserves) >= targetReserves) revert NotForSale(); |
Check notice
Code scanning / Semgrep OSS
Semgrep Finding: rules.solidity.performance.use-nested-if Note
There are more advantages, such as easier to read code and better coverage reports.
I moved the one-line change to Merging now that proposal 233 has passed and queued. |
Create deployment and market initialization proposals on Scroll mainnet and Scroll Alpha testnet (bridged to Goerli) for USDC market by @isabellewei from the Scroll team --------- Co-authored-by: isabellewei <[email protected]> Co-authored-by: Isabelle Wei <[email protected]> Co-authored-by: isabelle <[email protected]>
Create deployment and market initialization proposals on Scroll mainnet and Scroll Alpha testnet (bridged to Goerli) for USDC market
by @isabellewei from the Scroll team