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/lib/hats-module b/lib/hats-module index f19c716..5a69da3 160000 --- a/lib/hats-module +++ b/lib/hats-module @@ -1 +1 @@ -Subproject commit f19c71695faec2eeabce473ca1413e9467b60e33 +Subproject commit 5a69da357e70cc2e3727d6ec02097711439ec32b 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..7bec9f4 100644 --- a/src/StakingEligibility.sol +++ b/src/StakingEligibility.sol @@ -1,5 +1,5 @@ // 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 { HatsEligibilityModule, HatsModule } from "hats-module/HatsEligibilityModule.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";