Pārlūkot izejas kodu

fix(pulse): disable impl contract initializer (#2646)

* fix(pulse): disable impl contract initializer

* fix: ctor and tests

* fix: remove unnecessary initializable inherit
Tejas Badadare 6 mēneši atpakaļ
vecāks
revīzija
581457568b

+ 0 - 1
target_chains/ethereum/contracts/contracts/pulse/Scheduler.sol

@@ -1,7 +1,6 @@
 // SPDX-License-Identifier: Apache 2
 
 pragma solidity ^0.8.0;
-
 import "@openzeppelin/contracts/utils/math/SafeCast.sol";
 import "@openzeppelin/contracts/utils/math/SignedMath.sol";
 import "@openzeppelin/contracts/utils/math/Math.sol";

+ 3 - 1
target_chains/ethereum/contracts/contracts/pulse/SchedulerUpgradeable.sol

@@ -45,7 +45,9 @@ contract SchedulerUpgradeable is
     }
 
     /// @custom:oz-upgrades-unsafe-allow constructor
-    constructor() initializer {}
+    constructor() {
+        _disableInitializers();
+    }
 
     /// Only the owner can upgrade the contract
     function _authorizeUpgrade(address) internal override onlyOwner {}

+ 11 - 3
target_chains/ethereum/contracts/forge-test/PulseScheduler.t.sol

@@ -81,11 +81,19 @@ contract SchedulerTest is Test, SchedulerEvents, PulseSchedulerTestUtils {
         uint128 keeperFee = 10 ** 14; // 0.0001 ether
 
         SchedulerUpgradeable _scheduler = new SchedulerUpgradeable();
-        proxy = new ERC1967Proxy(address(_scheduler), "");
+        proxy = new ERC1967Proxy(
+            address(_scheduler),
+            abi.encodeWithSelector(
+                SchedulerUpgradeable.initialize.selector,
+                owner,
+                admin,
+                pyth,
+                minBalancePerFeed,
+                keeperFee
+            )
+        );
         scheduler = SchedulerUpgradeable(address(proxy));
 
-        scheduler.initialize(owner, admin, pyth, minBalancePerFeed, keeperFee);
-
         reader = new MockReader(address(proxy));
 
         // Start tests at a high timestamp to avoid underflow when we set

+ 12 - 11
target_chains/ethereum/contracts/forge-test/PulseSchedulerGasBenchmark.t.sol

@@ -24,21 +24,22 @@ contract PulseSchedulerGasBenchmark is Test, PulseSchedulerTestUtils {
         manager = address(1);
         admin = address(2);
         pyth = address(3);
-
-        SchedulerUpgradeable _scheduler = new SchedulerUpgradeable();
-        proxy = new ERC1967Proxy(address(_scheduler), "");
-        scheduler = SchedulerUpgradeable(address(proxy));
-
         uint128 minBalancePerFeed = 10 ** 16; // 0.01 ether
         uint128 keeperFee = 10 ** 15; // 0.001 ether
 
-        scheduler.initialize(
-            manager,
-            admin,
-            pyth,
-            minBalancePerFeed,
-            keeperFee
+        SchedulerUpgradeable _scheduler = new SchedulerUpgradeable();
+        proxy = new ERC1967Proxy(
+            address(_scheduler),
+            abi.encodeWithSelector(
+                SchedulerUpgradeable.initialize.selector,
+                manager,
+                admin,
+                pyth,
+                minBalancePerFeed,
+                keeperFee
+            )
         );
+        scheduler = SchedulerUpgradeable(address(proxy));
 
         // Start tests at a high timestamp to avoid underflow when we set
         // `minPublishTime = timestamp - 1 hour` in updatePriceFeeds

+ 14 - 6
target_chains/ethereum/contracts/forge-test/PulseSchedulerGovernance.t.sol

@@ -26,19 +26,27 @@ contract PulseSchedulerGovernanceTest is Test {
 
     function setUp() public {
         SchedulerUpgradeable _scheduler = new SchedulerUpgradeable();
+        uint128 minBalancePerFeed = 10 ** 16; // 0.01 ether
+        uint128 keeperFee = 10 ** 15; // 0.001 ether
+
         // Deploy proxy contract and point it to implementation
-        proxy = new ERC1967Proxy(address(_scheduler), "");
+        proxy = new ERC1967Proxy(
+            address(_scheduler),
+            abi.encodeWithSelector(
+                SchedulerUpgradeable.initialize.selector,
+                owner,
+                admin,
+                pyth,
+                minBalancePerFeed,
+                keeperFee
+            )
+        );
         // Wrap in ABI to support easier calls
         scheduler = SchedulerUpgradeable(address(proxy));
 
         // For testing upgrades
         scheduler2 = new SchedulerUpgradeable();
         schedulerInvalidMagic = new SchedulerInvalidMagic();
-
-        uint128 minBalancePerFeed = 10 ** 16; // 0.01 ether
-        uint128 keeperFee = 10 ** 15; // 0.001 ether
-
-        scheduler.initialize(owner, admin, pyth, minBalancePerFeed, keeperFee);
     }
 
     function testGetAdmin() public {