Skip to content

Commit

Permalink
Merge branch 'release/v4.9.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
TylerEther committed Aug 3, 2024
2 parents 3316388 + 90f5b47 commit b9877f0
Show file tree
Hide file tree
Showing 43 changed files with 1,244 additions and 173 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog

## v4.9.0
### Dependencies
- Upgrade OpenZeppelin Contracts to v4.9.6

### Accumulators
- Add SAVPriceAccumulator: An accumulator that tracks ERC4626 vault share prices.

## v4.8.0
### Accumulators
- Add AdrastiaUtilizationAndErrorAccumulator: An accumulator that tracks and accumulates utilization and error based on an Adrastia supply & borrow oracle.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Adrastia Core

[![standard-readme compliant](https://img.shields.io/badge/readme%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
![7261 out of 7261 tests passing](https://img.shields.io/badge/tests-7261/7261%20passing-brightgreen.svg?style=flat-square)
![7323 out of 7323 tests passing](https://img.shields.io/badge/tests-7323/7323%20passing-brightgreen.svg?style=flat-square)
![test-coverage >99%](https://img.shields.io/badge/test%20coverage-%3E99%25-brightgreen.svg?style=flat-square)

Adrastia Core is a set of Solidity smart contracts for building EVM oracle solutions.
Expand Down
4 changes: 0 additions & 4 deletions contracts/accumulators/LiquidityAccumulator.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

pragma experimental ABIEncoderV2;

import "@openzeppelin-v4/contracts/utils/introspection/IERC165.sol";
import "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

Expand All @@ -11,7 +9,6 @@ import "../interfaces/ILiquidityAccumulator.sol";
import "../interfaces/ILiquidityOracle.sol";
import "../libraries/ObservationLibrary.sol";
import "../libraries/AddressLibrary.sol";
import "../libraries/SafeCastExt.sol";
import "../utils/SimpleQuotationMetadata.sol";
import "../strategies/averaging/IAveragingStrategy.sol";

Expand All @@ -24,7 +21,6 @@ abstract contract LiquidityAccumulator is
{
using AddressLibrary for address;
using SafeCast for uint256;
using SafeCastExt for uint256;

IAveragingStrategy public immutable averagingStrategy;

Expand Down
4 changes: 0 additions & 4 deletions contracts/accumulators/PriceAccumulator.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

pragma experimental ABIEncoderV2;

import "@openzeppelin-v4/contracts/utils/introspection/IERC165.sol";
import "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

Expand All @@ -11,7 +9,6 @@ import "../interfaces/IPriceAccumulator.sol";
import "../interfaces/IPriceOracle.sol";
import "../libraries/ObservationLibrary.sol";
import "../libraries/AddressLibrary.sol";
import "../libraries/SafeCastExt.sol";
import "../utils/SimpleQuotationMetadata.sol";
import "../strategies/averaging/IAveragingStrategy.sol";

Expand All @@ -24,7 +21,6 @@ abstract contract PriceAccumulator is
{
using AddressLibrary for address;
using SafeCast for uint256;
using SafeCastExt for uint256;

IAveragingStrategy public immutable averagingStrategy;

Expand Down
5 changes: 2 additions & 3 deletions contracts/accumulators/ValueAndErrorAccumulator.sol
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import "./LiquidityAccumulator.sol";
import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "hardhat/console.sol";
import "./LiquidityAccumulator.sol";

abstract contract ValueAndErrorAccumulator is LiquidityAccumulator {
using AddressLibrary for address;
using SafeCast for uint256;
using SafeCastExt for uint256;

uint112 public constant ERROR_ZERO = 1e18;

Expand Down
5 changes: 3 additions & 2 deletions contracts/accumulators/proto/aave/AaveV2RateAccumulator.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "../../PriceAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

abstract contract IAaveV2Pool {
struct ReserveData {
Expand Down Expand Up @@ -33,7 +34,7 @@ abstract contract IAaveV2Pool {
}

contract AaveV2RateAccumulator is PriceAccumulator {
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable aaveV2Pool;

Expand Down
5 changes: 3 additions & 2 deletions contracts/accumulators/proto/aave/AaveV3RateAccumulator.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "../../PriceAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

abstract contract IAaveV3Pool {
struct ReserveData {
Expand Down Expand Up @@ -42,7 +43,7 @@ abstract contract IAaveV3Pool {
}

contract AaveV3RateAccumulator is PriceAccumulator {
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable aaveV3Pool;

Expand Down
5 changes: 3 additions & 2 deletions contracts/accumulators/proto/aave/AaveV3SBAccumulator.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "../../LiquidityAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

abstract contract IAaveV3Pool {
struct ReserveData {
Expand Down Expand Up @@ -42,7 +43,7 @@ abstract contract IAaveV3Pool {
}

contract AaveV3SBAccumulator is LiquidityAccumulator {
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable aaveV3Pool;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";
import "@openzeppelin-v4/contracts/token/ERC20/extensions/IERC20Metadata.sol";

import "../../PriceAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

contract AdrastiaPriceAccumulator is PriceAccumulator {
using AddressLibrary for address;
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable adrastiaOracle;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "../../ValueAndErrorAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

contract AdrastiaUtilizationAndErrorAccumulator is ValueAndErrorAccumulator {
using SafeCastExt for uint256;
using SafeCast for uint256;

uint8 internal immutable _liquidityDecimals;
uint256 internal immutable _decimalFactor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";
import "@openzeppelin-v4/contracts/token/ERC20/IERC20.sol";

import "../../../libraries/SafeCastExt.sol";

import "../../LiquidityAccumulator.sol";

/// @dev Credit to Uniswap Labs under GPL-2.0-or-later license:
Expand All @@ -20,7 +19,7 @@ interface IAlgebraPoolState {

contract AlgebraLiquidityAccumulator is LiquidityAccumulator {
using AddressLibrary for address;
using SafeCastExt for uint256;
using SafeCast for uint256;

error InvalidToken(address token);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";
import "@openzeppelin-v4/contracts/token/ERC20/extensions/IERC20Metadata.sol";

import "../../PriceAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";
import "../../../libraries/uniswap-lib/FullMath.sol";

/// @dev Credit to Uniswap Labs under GPL-2.0-or-later license:
Expand All @@ -20,7 +20,7 @@ interface IAlgebraPoolState {

contract AlgebraPriceAccumulator is PriceAccumulator {
using AddressLibrary for address;
using SafeCastExt for uint256;
using SafeCast for uint256;

error InvalidToken(address token);
error NoLiquidity(address token);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";
import "@openzeppelin-v4/contracts/token/ERC20/extensions/IERC20Metadata.sol";

import "../../LiquidityAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

interface IVault {
function getPoolTokens(
Expand Down Expand Up @@ -33,7 +33,7 @@ interface ILinearPool {

contract BalancerV2LiquidityAccumulator is LiquidityAccumulator {
using AddressLibrary for address;
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable balancerVault;
address public immutable poolAddress;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";
import "@openzeppelin-v4/contracts/token/ERC20/extensions/IERC20Metadata.sol";

import "../../PriceAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";
import "../../../libraries/balancer-v2/StableMath.sol";
import "../../../libraries/balancer-v2/FixedPoint.sol";

Expand Down Expand Up @@ -54,7 +54,7 @@ interface ILinearPool {

contract BalancerV2StablePriceAccumulator is PriceAccumulator {
using AddressLibrary for address;
using SafeCastExt for uint256;
using SafeCast for uint256;
using FixedPoint for uint256;

address public immutable balancerVault;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";
import "@openzeppelin-v4/contracts/token/ERC20/extensions/IERC20Metadata.sol";

import "../../PriceAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

interface IVault {
function getPoolTokens(
Expand All @@ -29,7 +29,7 @@ interface IWeightedPool {

contract BalancerV2WeightedPriceAccumulator is PriceAccumulator {
using AddressLibrary for address;
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable balancerVault;
address public immutable poolAddress;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "../../PriceAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

abstract contract IComet {
function getSupplyRate(uint utilization) public view virtual returns (uint64);
Expand All @@ -15,7 +16,7 @@ abstract contract IComet {
}

contract CometRateAccumulator is PriceAccumulator {
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable comet;

Expand Down
5 changes: 3 additions & 2 deletions contracts/accumulators/proto/compound/CometSBAccumulator.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "../../LiquidityAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

interface IComet {
struct TotalsCollateral {
Expand All @@ -20,7 +21,7 @@ interface IComet {
}

contract CometSBAccumulator is LiquidityAccumulator {
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable comet;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "../../PriceAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";

abstract contract ICToken {
function supplyRatePerBlock() external view virtual returns (uint256);
Expand All @@ -11,7 +12,7 @@ abstract contract ICToken {
}

contract CompoundV2RateAccumulator is PriceAccumulator {
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable cToken;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "../../LiquidityAccumulator.sol";
import "../../../libraries/SafeCastExt.sol";
import "../../../libraries/EtherAsTokenLibrary.sol";

interface IComptroller {
Expand All @@ -20,7 +21,7 @@ interface ICToken {
}

contract CompoundV2SBAccumulator is LiquidityAccumulator {
using SafeCastExt for uint256;
using SafeCast for uint256;

struct TokenInfo {
ICToken cToken;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.13;

pragma experimental ABIEncoderV2;

import "../../../libraries/SafeCastExt.sol";
import {SafeCast} from "@openzeppelin-v4/contracts/utils/math/SafeCast.sol";

import "./ICurvePool.sol";
import "../../LiquidityAccumulator.sol";

contract CurveLiquidityAccumulator is LiquidityAccumulator {
using SafeCastExt for uint256;
using SafeCast for uint256;

address public immutable curvePool;

Expand Down
Loading

0 comments on commit b9877f0

Please sign in to comment.