From 2e3be1d92e9491f26b515d601658c8e05e724ac3 Mon Sep 17 00:00:00 2001 From: BkChoy Date: Thu, 9 May 2024 12:16:18 -0400 Subject: [PATCH] removed foundry --- .github/workflows/continuous-integration.yml | 8 --- .gitignore | 4 -- .gitmodules | 3 - foundry.toml | 12 ---- get-value.sh | 25 -------- hardhat.config.ts | 1 - lib/forge-std | 1 - package.json | 1 - scripts/input/1/config.json | 7 --- test/foundry/Base.t.sol | 19 ------ .../fork/CommunityVaultAutomationFork.t.sol | 18 ------ .../fork/scripts/Deployment.2.24.t.sol | 60 ------------------- test/foundry/invariant/handlers/Handler.sol | 38 ------------ test/foundry/invariant/helpers/AddressSet.sol | 53 ---------------- test/foundry/mock/CommunityVCSMock.sol | 52 ---------------- .../unit/CommunityVaultAutomation.t.sol | 33 ---------- test/foundry/utils/Types.sol | 8 --- test/foundry/utils/Utils.sol | 47 --------------- test/foundry/utils/proxy/UUPSProxy.sol | 8 --- update-config.sh | 19 ------ yarn.lock | 7 --- 21 files changed, 424 deletions(-) delete mode 100644 .gitmodules delete mode 100644 foundry.toml delete mode 100755 get-value.sh delete mode 160000 lib/forge-std delete mode 100644 scripts/input/1/config.json delete mode 100644 test/foundry/Base.t.sol delete mode 100644 test/foundry/fork/CommunityVaultAutomationFork.t.sol delete mode 100644 test/foundry/fork/scripts/Deployment.2.24.t.sol delete mode 100644 test/foundry/invariant/handlers/Handler.sol delete mode 100644 test/foundry/invariant/helpers/AddressSet.sol delete mode 100644 test/foundry/mock/CommunityVCSMock.sol delete mode 100644 test/foundry/unit/CommunityVaultAutomation.t.sol delete mode 100644 test/foundry/utils/Types.sol delete mode 100644 test/foundry/utils/Utils.sol delete mode 100644 test/foundry/utils/proxy/UUPSProxy.sol delete mode 100755 update-config.sh diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index dd38fe1c..cff1eedc 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -1,9 +1,6 @@ name: CI on: [push] -env: - FOUNDRY_PROFILE: ci - jobs: ci: name: Lint & Test @@ -20,11 +17,6 @@ jobs: path: "**/node_modules" key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - name: Install Yarn dependencies run: yarn install diff --git a/.gitignore b/.gitignore index 851b5fc5..4fe36936 100644 --- a/.gitignore +++ b/.gitignore @@ -7,9 +7,5 @@ deployments/localhost.json .openzeppelin/unknown-31337.json .openzeppelin/unknown-7777.json .envrc -forge-cache/ .vscode -out -cache_forge -test/foundry/simulation .openzeppelin/unknown-1337.json \ No newline at end of file diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 888d42dc..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "lib/forge-std"] - path = lib/forge-std - url = https://github.com/foundry-rs/forge-std diff --git a/foundry.toml b/foundry.toml deleted file mode 100644 index 4f09860b..00000000 --- a/foundry.toml +++ /dev/null @@ -1,12 +0,0 @@ -[profile.default] -src = 'contracts' -out = 'out' -libs = ['node_modules', 'lib'] -test = 'test' -cache_path = 'cache_forge' -fs_permissions = [{ access = "read", path = "./" }] -optimizer = true -optimizer_runs = 2_000 - -[rpc_endpoints] -ethereum = "${ETHEREUM_RPC_URL}" diff --git a/get-value.sh b/get-value.sh deleted file mode 100755 index 5f53d359..00000000 --- a/get-value.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -# Used to get the value from a JSON file for a given key. -# This is needed for retrieval of config vars in contracts. -if [ "$#" -ne 2 ]; then - echo "Usage: $0 json_file key" - exit 1 -fi - -JSON_FILE="$1" -KEY="$2" - -if [ ! -f "$JSON_FILE" ]; then - echo "Error: JSON file not found." - exit 1 -fi - -VALUE=$(jq -r ".${KEY}" "$JSON_FILE") - -if [ "$VALUE" == "null" ]; then - echo "Error: Key not found in JSON file." - exit 1 -fi - -echo $VALUE diff --git a/hardhat.config.ts b/hardhat.config.ts index 56195c3f..976fb595 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -4,7 +4,6 @@ import '@typechain/hardhat' import '@nomiclabs/hardhat-waffle' import '@openzeppelin/hardhat-upgrades' import '@nomiclabs/hardhat-etherscan' -import '@nomicfoundation/hardhat-foundry' const balance = '100000000000000000000000' const accounts = [ diff --git a/lib/forge-std b/lib/forge-std deleted file mode 160000 index 155d547c..00000000 --- a/lib/forge-std +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 155d547c449afa8715f538d69454b83944117811 diff --git a/package.json b/package.json index d18fb1c8..1fcd2e2f 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,6 @@ "solhint": "solhint contracts/**/*.sol" }, "devDependencies": { - "@nomicfoundation/hardhat-foundry": "^1.1.1", "@nomicfoundation/hardhat-network-helpers": "^1.0.6", "@nomiclabs/hardhat-ethers": "^2.2.1", "@nomiclabs/hardhat-etherscan": "^3.1.7", diff --git a/scripts/input/1/config.json b/scripts/input/1/config.json deleted file mode 100644 index 3e42eb0a..00000000 --- a/scripts/input/1/config.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "CommunityVCS": "0xAc12290b097f6893322F5430627e472131fBC1B5", - "MerkleDistributor": "0xe7Dd77d408920c000C40C35c4c111318Ba8B4767", - "PriorityPool": "0xDdC796a66E8b83d0BcCD97dF33A6CcFBA8fd60eA", - "StakingPool": "0xb8b295df2cd735b15BE5Eb419517Aa626fc43cD5", - "Multisig": "0xB351EC0FEaF4B99FdFD36b484d9EC90D0422493D" -} diff --git a/test/foundry/Base.t.sol b/test/foundry/Base.t.sol deleted file mode 100644 index 9582f42f..00000000 --- a/test/foundry/Base.t.sol +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.15; - -import {Test, console2} from "forge-std/Test.sol"; -import {Users} from "./utils/Types.sol"; -import {Utils} from "./utils/Utils.sol"; - -abstract contract BaseTest is Test, Utils { - Users internal users; - uint256 internal network; - - function init(bool _fork) public { - if (_fork) { - network = vm.createSelectFork(vm.rpcUrl("ethereum")); - } else { - //merkleDistributor = new MerkleDistributor(); - } - } -} diff --git a/test/foundry/fork/CommunityVaultAutomationFork.t.sol b/test/foundry/fork/CommunityVaultAutomationFork.t.sol deleted file mode 100644 index 0a71107a..00000000 --- a/test/foundry/fork/CommunityVaultAutomationFork.t.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.15; - -import {CommunityVaultAutomation} from "../../../contracts/linkStaking/CommunityVaultAutomation.sol"; -import {CommunityVCS} from "../../../contracts/linkStaking/CommunityVCS.sol"; -import {IVault} from "../../../contracts/linkStaking/CommunityVCS.sol"; -import {BaseTest} from "../Base.t.sol"; -import {ERC677} from "../../../contracts/core/tokens/base/ERC677.sol"; - -contract CommunityVaultAutomationForkTest is BaseTest { - bool internal _fork = true; - CommunityVaultAutomation internal communityVaultAutomation; - - function setUp() public { - BaseTest.init(_fork); - communityVaultAutomation = new CommunityVaultAutomation(getValue("CommunityVCS"), 0, 0); - } -} diff --git a/test/foundry/fork/scripts/Deployment.2.24.t.sol b/test/foundry/fork/scripts/Deployment.2.24.t.sol deleted file mode 100644 index a5dae8b4..00000000 --- a/test/foundry/fork/scripts/Deployment.2.24.t.sol +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.15; -import {StakingPool} from "../../../../contracts/core/StakingPool.sol"; -import {PriorityPool} from "../../../../contracts/core/priorityPool/PriorityPool.sol"; -import {CommunityVCS} from "../../../../contracts/linkStaking/CommunityVCS.sol"; -import {CommunityVaultAutomation} from "../../../../contracts/linkStaking/CommunityVaultAutomation.sol"; -import {BaseTest} from "../../Base.t.sol"; - -contract Deployment is BaseTest { - bool internal _fork = true; - StakingPool internal stakingPool; - PriorityPool internal priorityPool; - CommunityVCS internal communityVCS; - CommunityVaultAutomation internal communityVaultAutomation; - uint256 internal minRewardsTotal = 650 ether; - uint256 internal minRewardsPerVault = 65 ether; - address internal multisig; - - function setUp() public { - BaseTest.init(_fork); - communityVCS = CommunityVCS(getValue("CommunityVCS")); - stakingPool = StakingPool(getValue("StakingPool")); - priorityPool = PriorityPool(getValue("PriorityPool")); - multisig = getValue("Multisig"); - vm.startPrank(multisig); - communityVaultAutomation = new CommunityVaultAutomation(address(communityVCS), minRewardsTotal, minRewardsPerVault); - - // upgrade CommunityVCS - CommunityVCS impl = new CommunityVCS(); - communityVCS.upgradeTo(address(impl)); - - // upgrade StakingPool - StakingPool stakingPoolImpl = new StakingPool(); - stakingPool.upgradeTo(address(stakingPoolImpl)); - - // upgrade PriorityPool - PriorityPool priorityPoolImpl = new PriorityPool(); - priorityPool.upgradeTo(address(priorityPoolImpl)); - vm.stopPrank(); - } - - function testFork_upgrade_successful() public { - assertEq(address(communityVCS), address(getValue("CommunityVCS"))); - assertEq(address(stakingPool), getValue("StakingPool")); - assertEq(address(priorityPool), getValue("PriorityPool")); - } - - function testFork_CommunityVaultAutomation_success() public { - assertEq(communityVaultAutomation.minRewardsTotal(), minRewardsTotal); - assertEq(communityVaultAutomation.minRewardsPerVault(), minRewardsPerVault); - } - - function testFork_StakingPool_owner() public { - assertEq(stakingPool.priorityPool(), address(priorityPool)); - } - - function testFork_PriorityPool_owner() public { - assertEq(address(priorityPool.stakingPool()), address(stakingPool)); - } -} diff --git a/test/foundry/invariant/handlers/Handler.sol b/test/foundry/invariant/handlers/Handler.sol deleted file mode 100644 index 54a6fb53..00000000 --- a/test/foundry/invariant/handlers/Handler.sol +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.15; - -import {Test, console2} from "forge-std/Test.sol"; -import {AddressSet, LibAddressSet} from "../helpers/AddressSet.sol"; - -contract Handler is Test { - using LibAddressSet for AddressSet; - - AddressSet internal _actors; - address internal admin; - address internal currentActor; - - mapping(bytes32 => uint256) public calls; - - - modifier createActor() { - currentActor = msg.sender; - _actors.add(msg.sender); - _; - } - - modifier countCall(bytes32 key) { - calls[key]++; - _; - } - - constructor() { - } - - - - function callSummary() external view { - console2.log("Call summary:"); - console2.log("-------------------"); - - } -} diff --git a/test/foundry/invariant/helpers/AddressSet.sol b/test/foundry/invariant/helpers/AddressSet.sol deleted file mode 100644 index a073cbca..00000000 --- a/test/foundry/invariant/helpers/AddressSet.sol +++ /dev/null @@ -1,53 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.15; - -struct AddressSet { - address[] addrs; - mapping(address => bool) saved; - mapping(address => uint256) called; - mapping(address => bool) depositLink; -} - -library LibAddressSet { - function add(AddressSet storage s, address addr) internal { - if (!s.saved[addr]) { - s.addrs.push(addr); - s.saved[addr] = true; - s.called[addr]++; - } else { - s.called[addr]++; - } - } - - function contains(AddressSet storage s, address addr) internal view returns (bool) { - return s.saved[addr]; - } - - function count(AddressSet storage s) internal view returns (uint256) { - return s.addrs.length; - } - - function rand(AddressSet storage s, uint256 seed) internal view returns (address) { - if (s.addrs.length > 0) { - return s.addrs[seed % s.addrs.length]; - } else { - return address(0); - } - } - - function forEach(AddressSet storage s, function(address) external func) internal { - for (uint256 i; i < s.addrs.length; ++i) { - func(s.addrs[i]); - } - } - - function reduce(AddressSet storage s, uint256 acc, function(uint256,address) external returns (uint256) func) - internal - returns (uint256) - { - for (uint256 i; i < s.addrs.length; ++i) { - acc = func(acc, s.addrs[i]); - } - return acc; - } -} diff --git a/test/foundry/mock/CommunityVCSMock.sol b/test/foundry/mock/CommunityVCSMock.sol deleted file mode 100644 index 7b0acc31..00000000 --- a/test/foundry/mock/CommunityVCSMock.sol +++ /dev/null @@ -1,52 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity 0.8.15; - -contract CommunityVCSMock { - VaultMock[] public vaults; - - constructor(uint256 _totalVaults) { - for (uint256 i = 0; i < _totalVaults; i++) { - uint256 _total = (i + 1) * 1 ether; - if (i == 4) { - (i + 1) * 1 ether; - } else { - if (i > 2) { - _total = 0; - } - } - - vaults.push(new VaultMock(_total)); - } - } - - function getVaults() external view returns (address[] memory) { - address[] memory _vaults = new address[](vaults.length); - for (uint256 i = 0; i < vaults.length; i++) { - _vaults[i] = address(vaults[i]); - } - - return _vaults; - } - - function claimRewards(uint256[] memory _vaults, uint256 _minRewards) external returns (uint256) { - uint256 _totalRewards = 0; - for (uint256 i = 0; i < _vaults.length; i++) { - uint256 _rewards = vaults[_vaults[i]].getRewards(); - _totalRewards += _rewards; - assert(_rewards >= _minRewards); - } - return _totalRewards; - } -} - -contract VaultMock { - uint256 public holdings; - - constructor(uint256 _holdings) { - holdings = _holdings; - } - - function getRewards() external view returns (uint256) { - return holdings; - } -} diff --git a/test/foundry/unit/CommunityVaultAutomation.t.sol b/test/foundry/unit/CommunityVaultAutomation.t.sol deleted file mode 100644 index ff833183..00000000 --- a/test/foundry/unit/CommunityVaultAutomation.t.sol +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.15; - -import {CommunityVaultAutomation} from "../../../contracts/linkStaking/CommunityVaultAutomation.sol"; -import {CommunityVCS} from "../../../contracts/linkStaking/CommunityVCS.sol"; -import {IVault} from "../../../contracts/linkStaking/CommunityVCS.sol"; -import {BaseTest} from "../Base.t.sol"; -import {ERC677} from "../../../contracts/core/tokens/base/ERC677.sol"; -import {CommunityVCSMock} from "../mock/CommunityVCSMock.sol"; - -contract CommunityVaultAutomationTest is BaseTest { - bool internal _fork = false; - CommunityVaultAutomation internal communityVaultAutomation; - CommunityVCSMock internal communityVCSMock; - - function setUp() public { - BaseTest.init(_fork); - communityVCSMock = new CommunityVCSMock(5); - communityVaultAutomation = new CommunityVaultAutomation(address(communityVCSMock), 0, 1); - } - - function test_performUpkeep_success() public { - uint256[4] memory _vaultsReference = [uint256(0), 1, 2, 4]; - (bool upkeepNeeded, bytes memory performData) = communityVaultAutomation.checkUpkeep(""); - assertEq(upkeepNeeded, true); - uint256[] memory _vaults = abi.decode(performData, (uint256[])); - assertTrue(_vaults.length == 4); - for (uint256 i = 0; i < _vaultsReference.length; i++) { - assertTrue(_vaults[i] == _vaultsReference[i]); - } - communityVaultAutomation.performUpkeep(performData); - } -} diff --git a/test/foundry/utils/Types.sol b/test/foundry/utils/Types.sol deleted file mode 100644 index a4526419..00000000 --- a/test/foundry/utils/Types.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.15; - -struct Users { - address payable admin; - address payable user1; - address payable user2; -} diff --git a/test/foundry/utils/Utils.sol b/test/foundry/utils/Utils.sol deleted file mode 100644 index 4b37c4e8..00000000 --- a/test/foundry/utils/Utils.sol +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.15; - -import {Script} from "forge-std/Script.sol"; - -contract Utils is Script { - function updateDeployment(address newAddress, string memory key) internal { - string memory inputDir = "scripts/input/"; - string memory chainDir = string.concat(vm.toString(block.chainid), "/config.json"); - string[] memory inputs = new string[](4); - inputs[0] = "./update-config.sh"; - inputs[1] = string.concat(inputDir, chainDir); - inputs[2] = key; - inputs[3] = vm.toString(newAddress); - - vm.ffi(inputs); - } - - function getValue(string memory key) internal returns (address) { - string memory inputDir = "scripts/input/"; - string memory chainDir = string.concat(vm.toString(block.chainid), "/config.json"); - string[] memory inputs = new string[](3); - inputs[0] = "./get-value.sh"; - inputs[1] = string.concat(inputDir, chainDir); - inputs[2] = key; - - bytes memory r = vm.ffi(inputs); - address addr; - assembly { - addr := mload(add(r, 20)) - } - return addr; - } - - function getStringValue(string memory key) internal returns (string memory) { - string memory inputDir = "script/input/"; - string memory chainDir = string.concat(vm.toString(block.chainid), "/config.json"); - string[] memory inputs = new string[](3); - inputs[0] = "./get-value.sh"; - inputs[1] = string.concat(inputDir, chainDir); - inputs[2] = key; - - bytes memory r = vm.ffi(inputs); - - return string(r); - } -} diff --git a/test/foundry/utils/proxy/UUPSProxy.sol b/test/foundry/utils/proxy/UUPSProxy.sol deleted file mode 100644 index 087d654e..00000000 --- a/test/foundry/utils/proxy/UUPSProxy.sol +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.15; - -import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; - -contract UUPSProxy is ERC1967Proxy { - constructor(address _implementation, bytes memory _data) ERC1967Proxy(_implementation, _data) {} -} diff --git a/update-config.sh b/update-config.sh deleted file mode 100755 index f2d170e4..00000000 --- a/update-config.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# Used to update the value from a JSON file after a new deployment. -if [ "$#" -ne 3 ]; then - echo "Usage: $0 json_file key value" - exit 1 -fi - -JSON_FILE="$1" -KEY="$2" -VALUE="$3" - -if [ ! -f "$JSON_FILE" ]; then - echo "Error: JSON file not found." - exit 1 -fi - -jq ". + {\"$KEY\": \"$VALUE\"}" "$JSON_FILE" >"$JSON_FILE.tmp" && mv "$JSON_FILE.tmp" "$JSON_FILE" -echo "Added $KEY with value $VALUE to $JSON_FILE" diff --git a/yarn.lock b/yarn.lock index 636cf8fb..625753be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1225,13 +1225,6 @@ mcl-wasm "^0.7.1" rustbn.js "~0.2.0" -"@nomicfoundation/hardhat-foundry@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.1.1.tgz#db72b1f33f9cfaecc27e67f69ad436f8710162d6" - integrity sha512-cXGCBHAiXas9Pg9MhMOpBVQCkWRYoRFG7GJJAph+sdQsfd22iRs5U5Vs9XmpGEQd1yEvYISQZMeE68Nxj65iUQ== - dependencies: - chalk "^2.4.2" - "@nomicfoundation/hardhat-network-helpers@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.6.tgz#5e2026ddde5ca539f70a2bf498528afd08bd0827"