From 6c953b6a424b9cad83d91f3ff85cd4a9a76cd40c Mon Sep 17 00:00:00 2001 From: Ido Date: Sun, 27 Aug 2023 23:27:03 +0300 Subject: [PATCH 1/4] update hats module version --- .gitmodules | 3 --- lib/hats-module | 1 - 2 files changed, 4 deletions(-) delete mode 160000 lib/hats-module diff --git a/.gitmodules b/.gitmodules index a52e4a2..a68c04d 100644 --- a/.gitmodules +++ b/.gitmodules @@ -11,6 +11,3 @@ [submodule "lib/solady"] path = lib/solady url = https://github.com/vectorized/solady -[submodule "lib/hats-module"] - path = lib/hats-module - url = https://github.com/Hats-Protocol/hats-module diff --git a/lib/hats-module b/lib/hats-module deleted file mode 160000 index f19c716..0000000 --- a/lib/hats-module +++ /dev/null @@ -1 +0,0 @@ -Subproject commit f19c71695faec2eeabce473ca1413e9467b60e33 From 5bf6dfb93685b8331df4afb5751a30abc62ad2d8 Mon Sep 17 00:00:00 2001 From: Ido Date: Sun, 27 Aug 2023 23:28:02 +0300 Subject: [PATCH 2/4] forge install: hats-module v0.5.0 --- .gitmodules | 3 +++ lib/hats-module | 1 + 2 files changed, 4 insertions(+) create mode 160000 lib/hats-module diff --git a/.gitmodules b/.gitmodules index a68c04d..a52e4a2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -11,3 +11,6 @@ [submodule "lib/solady"] path = lib/solady url = https://github.com/vectorized/solady +[submodule "lib/hats-module"] + path = lib/hats-module + url = https://github.com/Hats-Protocol/hats-module diff --git a/lib/hats-module b/lib/hats-module new file mode 160000 index 0000000..5a69da3 --- /dev/null +++ b/lib/hats-module @@ -0,0 +1 @@ +Subproject commit 5a69da357e70cc2e3727d6ec02097711439ec32b From b08db77e0a3e7cb0bd7f79f0d5d04408f33424ca Mon Sep 17 00:00:00 2001 From: Ido Date: Mon, 28 Aug 2023 13:14:45 +0300 Subject: [PATCH 3/4] adjust to hats-module v0.5.0 --- foundry.toml | 5 +++-- script/StakingEligibility.s.sol | 6 +++--- src/StakingEligibility.sol | 6 +++--- test/StakingEligibility.invariants.t.sol | 2 +- test/StakingEligibility.t.sol | 16 ++++++++++++++-- test/handlers/AdminHandler.sol | 2 +- test/handlers/LibHandler.sol | 2 +- test/handlers/SlashingHandler.sol | 2 +- test/handlers/StakingHandler.sol | 2 +- 9 files changed, 28 insertions(+), 15 deletions(-) diff --git a/foundry.toml b/foundry.toml index 9a76c30..40b2a91 100644 --- a/foundry.toml +++ b/foundry.toml @@ -5,7 +5,8 @@ libs = ['lib'] optimizer_runs = 1_000_000 gas_reports = ["StakingEligibility", "HatsModuleFactory"] auto_detect_solc = false -solc = "0.8.18" +solc = "0.8.19" +bytecode_hash = "none" remappings = [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", @@ -54,4 +55,4 @@ optimism = {key = "${OPTIMISM_KEY}", url = "https://api-optimistic.etherscan.io/ sepolia = {key = "${ETHERSCAN_KEY}", url = "https://api-sepolia.etherscan.io/api"} polygon = {key = "${POLYGONSCAN_KEY}", url = "https://api.polygonscan.com/api"} -# See more config options https://github.com/foundry-rs/foundry/tree/master/config \ No newline at end of file +# See more config options https://github.com/foundry-rs/foundry/tree/master/config diff --git a/script/StakingEligibility.s.sol b/script/StakingEligibility.s.sol index 2ca3056..e8eb34b 100644 --- a/script/StakingEligibility.s.sol +++ b/script/StakingEligibility.s.sol @@ -11,7 +11,7 @@ contract DeployImplementation is Script { bytes32 public SALT = bytes32(abi.encode(0x4a75)); // ~ H(4) A(a) T(7) S(5) // default values - string public version = "0.2.0"; // increment with each deploy + string public version = "0.3.0"; // increment with each deploy bool private verbose = true; /// @notice Override default values, if desired @@ -37,12 +37,12 @@ contract DeployImplementation is Script { } contract DeployInstance is Script { - address public implementation = 0xfFc3eFab7EeA6fe08B3A9FdE1F95B21683DdE869; // goerli + address public implementation = 0x9E01030aF633Be5a439DF122F2eEf750b44B8aC7; // goerli, v0.3.0 address public instance; bytes public otherImmutableArgs; bytes public initData; address public token = 0xaFF4481D10270F50f203E0763e2597776068CBc5; // goerli, WEENUS - HatsModuleFactory public factory = HatsModuleFactory(0x696DBABd781D0e90b833968cF5C36C405772D4EA); // goerli, v0.1.0 + HatsModuleFactory public factory = HatsModuleFactory(0x6D7E710BDbC80FC164ABA85e242E535c0A54CEc6); // goerli, v0.5.0 uint256 public minStake = 1 ether; uint256 public stakerHat = 0x00000060_0001_0003_0003_0001_0000_0000_0000_0000_0000_0000_0000_0000_0000_0000; // 96.1.3.3.1 // Arbitrator diff --git a/src/StakingEligibility.sol b/src/StakingEligibility.sol index 3d49006..287b3f4 100644 --- a/src/StakingEligibility.sol +++ b/src/StakingEligibility.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.18; +pragma solidity ^0.8.19; -// import { console2 } from "forge-std/Test.sol"; // remove before deploy +import { console2 } from "forge-std/Test.sol"; // remove before deploy import { HatsEligibilityModule, HatsModule } from "hats-module/HatsEligibilityModule.sol"; // import { HatsModule } from "hats-module/HatsModule.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; @@ -164,7 +164,7 @@ contract StakingEligibility is HatsEligibilityModule { /** * @inheritdoc HatsModule */ - function setUp(bytes calldata _initdata) public override initializer { + function _setUp(bytes calldata _initdata) internal override { // decode the _initData bytes and set the values in storage (uint248 _minStake, uint256 _judgeHat, uint256 _recipientHat, uint256 _cooldownPeriod) = abi.decode(_initdata, (uint248, uint256, uint256, uint256)); diff --git a/test/StakingEligibility.invariants.t.sol b/test/StakingEligibility.invariants.t.sol index ca6cd29..b157d66 100644 --- a/test/StakingEligibility.invariants.t.sol +++ b/test/StakingEligibility.invariants.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.18; +pragma solidity ^0.8.19; import { Test, console2 } from "forge-std/Test.sol"; import { diff --git a/test/StakingEligibility.t.sol b/test/StakingEligibility.t.sol index 5023035..a3557d4 100644 --- a/test/StakingEligibility.t.sol +++ b/test/StakingEligibility.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.18; +pragma solidity ^0.8.19; import { Test, console2 } from "forge-std/Test.sol"; import { StakingEligibility, IERC20 } from "src/StakingEligibility.sol"; @@ -225,12 +225,24 @@ contract HarnessTest is StakingEligibilityTest { super.setUp(); // deploy the harness implementation harnessImpl = new StakingEligibilityHarness("harness version"); + + uint256 judgeHatHarness; + uint256 recipientHatHarness; + address tokenHarness = address(IERC20(0x6B175474E89094C44Da98b954EedeAC495271d0F)); // DAI + uint248 minStakeHarness = 1000; + uint256 cooldownPeriodHarness = 1 hours; + + // encode the other immutable args + bytes memory otherImmutableArgsHarness = abi.encodePacked(tokenHarness); + // encode the init data + bytes memory initDataHarness = + abi.encode(minStakeHarness, judgeHatHarness, recipientHatHarness, cooldownPeriodHarness); // deploy an instance of the harness and initialize it with the same initData as `instance` harnessInstance = // StakingEligibilityHarness(factory.createHatsModule(address(harnessImpl), stakerHat, otherImmutableArgs, // initData)); StakingEligibilityHarness( - deployModuleInstance(factory, address(harnessImpl), stakerHat, otherImmutableArgs, initData) + deployModuleInstance(factory, address(harnessImpl), stakerHat, otherImmutableArgsHarness, initDataHarness) ); } } diff --git a/test/handlers/AdminHandler.sol b/test/handlers/AdminHandler.sol index 3d6d9b8..199510c 100644 --- a/test/handlers/AdminHandler.sol +++ b/test/handlers/AdminHandler.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.18; +pragma solidity ^0.8.19; import { Test, console2, DSTest, TestBase, StdCheats, StdUtils } from "forge-std/Test.sol"; import { StakingEligibility, IERC20 } from "src/StakingEligibility.sol"; diff --git a/test/handlers/LibHandler.sol b/test/handlers/LibHandler.sol index eabbc6e..2a27ad4 100644 --- a/test/handlers/LibHandler.sol +++ b/test/handlers/LibHandler.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.18; +pragma solidity ^0.8.19; struct AddressSet { address[] addrs; diff --git a/test/handlers/SlashingHandler.sol b/test/handlers/SlashingHandler.sol index af8da09..0ca088b 100644 --- a/test/handlers/SlashingHandler.sol +++ b/test/handlers/SlashingHandler.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.18; +pragma solidity ^0.8.19; import { Test, console2, DSTest, TestBase, StdCheats, StdUtils } from "forge-std/Test.sol"; import { StakingEligibility, IERC20 } from "src/StakingEligibility.sol"; diff --git a/test/handlers/StakingHandler.sol b/test/handlers/StakingHandler.sol index b8621fe..bb04db4 100644 --- a/test/handlers/StakingHandler.sol +++ b/test/handlers/StakingHandler.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.18; +pragma solidity ^0.8.19; import { Test, console2, DSTest, TestBase, StdCheats, StdUtils } from "forge-std/Test.sol"; import { StakingEligibility, IERC20 } from "src/StakingEligibility.sol"; From d54a3d1f082423085613ba608833d9ef40da9c20 Mon Sep 17 00:00:00 2001 From: Ido Date: Mon, 28 Aug 2023 13:16:40 +0300 Subject: [PATCH 4/4] comment console import --- src/StakingEligibility.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/StakingEligibility.sol b/src/StakingEligibility.sol index 287b3f4..7bec9f4 100644 --- a/src/StakingEligibility.sol +++ b/src/StakingEligibility.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; -import { console2 } from "forge-std/Test.sol"; // remove before deploy +// import { console2 } from "forge-std/Test.sol"; // remove before deploy import { HatsEligibilityModule, HatsModule } from "hats-module/HatsEligibilityModule.sol"; // import { HatsModule } from "hats-module/HatsModule.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";