diff --git a/.github/workflows/certora-prover.yml b/.github/workflows/certora-prover.yml index 8f381bd..a2eb3e8 100644 --- a/.github/workflows/certora-prover.yml +++ b/.github/workflows/certora-prover.yml @@ -28,6 +28,10 @@ jobs: with: submodules: recursive + # Install foundry, needed for prover path resolution + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + # Run Certora munge script - name: Certora munge run: ./certora/scripts/patch.sh diff --git a/certora/confs/BaseConfForInheritance.conf b/certora/confs/BaseConfForInheritance.conf index 0b35728..27ba6b8 100644 --- a/certora/confs/BaseConfForInheritance.conf +++ b/certora/confs/BaseConfForInheritance.conf @@ -23,12 +23,6 @@ "VaultMock1:_asset=Token0", "EulerEarnHarness:_asset=Token0" ], - "packages": [ - "ethereum-vault-connector=lib/ethereum-vault-connector/src", - "euler-vault-kit=lib/euler-vault-kit/src", - "forge-std=lib/forge-std/src", - "solmate=lib/euler-vault-kit/lib/permit2/lib/solmate" - ], "compiler_map": { "EulerEarnHarness": "solc-0.8.26", "EthereumVaultConnector": "solc-0.8.26", diff --git a/certora/harnesses/ERC20Helper.sol b/certora/harnesses/ERC20Helper.sol index 0f8e5e2..d4f0dc8 100644 --- a/certora/harnesses/ERC20Helper.sol +++ b/certora/harnesses/ERC20Helper.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later pragma solidity 0.8.26; -import {SafeERC20, IERC20} from "../../lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {SafeERC20, IERC20} from "openzeppelin-contracts/token/ERC20/utils/SafeERC20.sol"; contract ERC20Helper { using SafeERC20 for IERC20; diff --git a/certora/mocks/Token0.sol b/certora/mocks/Token0.sol index bbe2679..ab760ef 100644 --- a/certora/mocks/Token0.sol +++ b/certora/mocks/Token0.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.8.21; -import {ERC20} from "../../lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; +import {ERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; contract Token0 is ERC20 { constructor() ERC20("Token0", "TOK0") {} diff --git a/certora/mocks/VaultMock0.sol b/certora/mocks/VaultMock0.sol index 604c182..49705cb 100644 --- a/certora/mocks/VaultMock0.sol +++ b/certora/mocks/VaultMock0.sol @@ -7,7 +7,7 @@ import { ERC20, ERC4626, Math -} from "../../lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol"; +} from "openzeppelin-contracts/token/ERC20/extensions/ERC4626.sol"; contract VaultMock0 is ERC4626 { constructor(IERC20 asset) ERC4626(asset) ERC20("VaultMock0", "V0") {} diff --git a/certora/mocks/VaultMock1.sol b/certora/mocks/VaultMock1.sol index 119de7c..0cbfc46 100644 --- a/certora/mocks/VaultMock1.sol +++ b/certora/mocks/VaultMock1.sol @@ -7,7 +7,7 @@ import { ERC20, ERC4626, Math -} from "../../lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol"; +} from "openzeppelin-contracts/token/ERC20/extensions/ERC4626.sol"; contract VaultMock1 is ERC4626 { constructor(IERC20 asset) ERC4626(asset) ERC20("VaultMock1", "V1") {} diff --git a/remappings.txt b/remappings.txt index b6b08e5..f9e164d 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1 +1,2 @@ +openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/ ethereum-vault-connector/=lib/ethereum-vault-connector/src/ \ No newline at end of file diff --git a/src/EulerEarn.sol b/src/EulerEarn.sol index 4635a89..27c1873 100644 --- a/src/EulerEarn.sol +++ b/src/EulerEarn.sol @@ -17,12 +17,12 @@ import {ErrorsLib} from "./libraries/ErrorsLib.sol"; import {EventsLib} from "./libraries/EventsLib.sol"; import {SafeERC20Permit2Lib} from "./libraries/SafeERC20Permit2Lib.sol"; import {UtilsLib, WAD} from "./libraries/UtilsLib.sol"; -import {SafeCast} from "../lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol"; -import {IERC20Metadata} from "../lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {SafeCast} from "openzeppelin-contracts/utils/math/SafeCast.sol"; +import {IERC20Metadata} from "openzeppelin-contracts/token/ERC20/extensions/IERC20Metadata.sol"; -import {Context} from "../lib/openzeppelin-contracts/contracts/utils/Context.sol"; -import {ReentrancyGuard} from "../lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol"; -import {Ownable2Step, Ownable} from "../lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol"; +import {Context} from "openzeppelin-contracts/utils/Context.sol"; +import {ReentrancyGuard} from "openzeppelin-contracts/utils/ReentrancyGuard.sol"; +import {Ownable2Step, Ownable} from "openzeppelin-contracts/access/Ownable2Step.sol"; import { IERC20, IERC4626, @@ -30,8 +30,8 @@ import { ERC4626, Math, SafeERC20 -} from "../lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol"; -import {EVCUtil} from "../lib/ethereum-vault-connector/src/utils/EVCUtil.sol"; +} from "openzeppelin-contracts/token/ERC20/extensions/ERC4626.sol"; +import {EVCUtil} from "ethereum-vault-connector/utils/EVCUtil.sol"; /// @title EulerEarn /// @author Forked with gratitude from Morpho Labs. Inspired by Silo Labs. diff --git a/src/EulerEarnFactory.sol b/src/EulerEarnFactory.sol index 758185e..e7fd335 100644 --- a/src/EulerEarnFactory.sol +++ b/src/EulerEarnFactory.sol @@ -10,8 +10,8 @@ import {ErrorsLib} from "./libraries/ErrorsLib.sol"; import {EulerEarn} from "./EulerEarn.sol"; -import {Ownable, Context} from "../lib/openzeppelin-contracts/contracts/access/Ownable.sol"; -import {EVCUtil} from "../lib/ethereum-vault-connector/src/utils/EVCUtil.sol"; +import {Ownable, Context} from "openzeppelin-contracts/access/Ownable.sol"; +import {EVCUtil} from "ethereum-vault-connector/utils/EVCUtil.sol"; /// @title EulerEarnFactory /// @author Forked with gratitude from Morpho Labs. Inspired by Silo Labs. diff --git a/src/PublicAllocator.sol b/src/PublicAllocator.sol index f71306c..9527976 100644 --- a/src/PublicAllocator.sol +++ b/src/PublicAllocator.sol @@ -14,8 +14,8 @@ import {IEulerEarn, MarketAllocation} from "./interfaces/IEulerEarn.sol"; import {ErrorsLib} from "./libraries/ErrorsLib.sol"; import {EventsLib} from "./libraries/EventsLib.sol"; -import {IERC4626} from "../lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol"; -import {EVCUtil} from "../lib/ethereum-vault-connector/src/utils/EVCUtil.sol"; +import {IERC4626} from "openzeppelin-contracts/interfaces/IERC4626.sol"; +import {EVCUtil} from "ethereum-vault-connector/utils/EVCUtil.sol"; /// @title PublicAllocator /// @author Forked with gratitude from Morpho Labs. Inspired by Silo Labs. diff --git a/src/interfaces/IEulerEarn.sol b/src/interfaces/IEulerEarn.sol index 27334f2..ed18e7e 100644 --- a/src/interfaces/IEulerEarn.sol +++ b/src/interfaces/IEulerEarn.sol @@ -3,8 +3,8 @@ pragma solidity >=0.5.0; import {IEulerEarnFactory} from "./IEulerEarnFactory.sol"; -import {IERC4626} from "../../lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol"; -import {IERC20Permit} from "../../lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol"; +import {IERC4626} from "openzeppelin-contracts/interfaces/IERC4626.sol"; +import {IERC20Permit} from "openzeppelin-contracts/token/ERC20/extensions/IERC20Permit.sol"; import {MarketConfig, PendingUint136, PendingAddress} from "../libraries/PendingLib.sol"; diff --git a/src/interfaces/IPublicAllocator.sol b/src/interfaces/IPublicAllocator.sol index b222ce3..4a9067b 100644 --- a/src/interfaces/IPublicAllocator.sol +++ b/src/interfaces/IPublicAllocator.sol @@ -3,7 +3,7 @@ pragma solidity >=0.5.0; import {MarketAllocation} from "./IEulerEarn.sol"; -import {IERC4626} from "../../lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol"; +import {IERC4626} from "openzeppelin-contracts/interfaces/IERC4626.sol"; /// @dev Max settable flow cap, such that caps can always be stored on 128 bits. /// @dev The actual max possible flow cap is type(uint128).max-1. diff --git a/src/libraries/ErrorsLib.sol b/src/libraries/ErrorsLib.sol index 300bb22..da0feca 100644 --- a/src/libraries/ErrorsLib.sol +++ b/src/libraries/ErrorsLib.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later pragma solidity ^0.8.0; -import {IERC4626} from "../../lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol"; +import {IERC4626} from "openzeppelin-contracts/interfaces/IERC4626.sol"; /// @title ErrorsLib /// @author Forked with gratitude from Morpho Labs. Inspired by Silo Labs. diff --git a/src/libraries/EventsLib.sol b/src/libraries/EventsLib.sol index f9dc967..862b344 100644 --- a/src/libraries/EventsLib.sol +++ b/src/libraries/EventsLib.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; import {FlowCapsConfig} from "../interfaces/IPublicAllocator.sol"; -import {IERC4626} from "../../lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol"; +import {IERC4626} from "openzeppelin-contracts/interfaces/IERC4626.sol"; import {PendingAddress} from "./PendingLib.sol"; diff --git a/src/libraries/SafeERC20Permit2Lib.sol b/src/libraries/SafeERC20Permit2Lib.sol index 59603da..0e633eb 100644 --- a/src/libraries/SafeERC20Permit2Lib.sol +++ b/src/libraries/SafeERC20Permit2Lib.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.0; import {IAllowanceTransfer} from "../interfaces/IAllowanceTransfer.sol"; -import {IERC20} from "../../lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; -import {SafeERC20} from "../../lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol"; +import {IERC20} from "openzeppelin-contracts/token/ERC20/ERC20.sol"; +import {SafeERC20} from "openzeppelin-contracts/token/ERC20/utils/SafeERC20.sol"; /// @title SafeERC20Permit2Lib Library /// @custom:security-contact security@euler.xyz diff --git a/test/ERC4626Test.sol b/test/ERC4626Test.sol index d1a5576..bbc3929 100644 --- a/test/ERC4626Test.sol +++ b/test/ERC4626Test.sol @@ -531,7 +531,7 @@ contract ERC4626Test is IntegrationTest { // max deposit is 0 assertEq(vault.maxDeposit(SUPPLIER), 0); - // although cap still allows 1 wei + // although cap still allows 1 wei assertEq(vault.totalAssets(), cap - 1); // because depositing 1 wei would throw zero shares vm.prank(SUPPLIER);