Skip to content

Commit 59f2899

Browse files
authored
Merge pull request #119 from PufferFinance/external-protocol-logic
Refactor PufferProtocol to keep <24KB
2 parents a71569f + 3599a63 commit 59f2899

18 files changed

+1638
-1412
lines changed

mainnet-contracts/script/DeployPuffer.s.sol

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { RewardsCoordinatorMock } from "../test/mocks/RewardsCoordinatorMock.sol
3030
import { EigenAllocationManagerMock } from "../test/mocks/EigenAllocationManagerMock.sol";
3131
import { RestakingOperatorController } from "../src/RestakingOperatorController.sol";
3232
import { RestakingOperatorController } from "../src/RestakingOperatorController.sol";
33+
import { PufferProtocolLogic } from "../src/PufferProtocolLogic.sol";
3334
/**
3435
* @title DeployPuffer
3536
* @author Puffer Finance
@@ -181,8 +182,21 @@ contract DeployPuffer is BaseScript {
181182
address(moduleManager), abi.encodeCall(moduleManager.initialize, (address(accessManager)))
182183
);
183184

185+
PufferProtocolLogic pufferProtocolLogic = new PufferProtocolLogic({
186+
pufferVault: PufferVaultV5(payable(pufferVault)),
187+
validatorTicket: ValidatorTicket(address(validatorTicketProxy)),
188+
guardianModule: GuardianModule(payable(guardiansDeployment.guardianModule)),
189+
moduleManager: address(moduleManagerProxy),
190+
oracle: IPufferOracleV2(oracle),
191+
beaconDepositContract: getStakingContract(),
192+
pufferRevenueDistributor: payable(revenueDepositor)
193+
});
194+
184195
// Initialize the Pool
185-
pufferProtocol.initialize({ accessManager: address(accessManager) });
196+
pufferProtocol.initialize({
197+
accessManager: address(accessManager),
198+
pufferProtocolLogic: address(pufferProtocolLogic)
199+
});
186200

187201
vm.label(address(accessManager), "AccessManager");
188202
vm.label(address(operationsCoordinator), "OperationsCoordinator");
@@ -216,8 +230,9 @@ contract DeployPuffer is BaseScript {
216230
pufferVault: address(0), // overwritten in DeployEverything
217231
pufferDepositor: address(0), // overwritten in DeployEverything
218232
weth: address(0), // overwritten in DeployEverything
219-
revenueDepositor: address(0) // overwritten in DeployEverything
220-
});
233+
revenueDepositor: address(0), // overwritten in DeployEverything
234+
pufferProtocolLogic: address(pufferProtocolLogic)
235+
});
221236
}
222237

223238
function getStakingContract() internal returns (address) {

mainnet-contracts/script/DeploymentStructs.sol

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ struct PufferProtocolDeployment {
3434
address weth; // from pufETH repository (dependency)
3535
address timelock; // from pufETH repository (dependency)
3636
address revenueDepositor;
37+
address pufferProtocolLogic;
3738
}
3839

3940
struct BridgingDeployment {

mainnet-contracts/script/GenerateBLSKeysAndRegisterValidators.s.sol

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import "forge-std/Script.sol";
55
import { stdJson } from "forge-std/StdJson.sol";
66
import { Permit } from "../src/structs/Permit.sol";
77
import { ValidatorKeyData } from "../src/struct/ValidatorKeyData.sol";
8-
import { IPufferProtocol } from "../src/interface/IPufferProtocol.sol";
8+
import { IPufferProtocolFull } from "../src/interface/IPufferProtocolFull.sol";
99
import { PufferProtocol } from "../src/PufferProtocol.sol";
1010
import { PufferVaultV5 } from "../src/PufferVaultV5.sol";
1111
import { ValidatorTicket } from "../src/ValidatorTicket.sol";
@@ -107,7 +107,7 @@ contract GenerateBLSKeysAndRegisterValidators is Script {
107107
numBatches: 1
108108
});
109109

110-
IPufferProtocol(protocolAddress).registerValidatorKey(
110+
IPufferProtocolFull(protocolAddress).registerValidatorKey(
111111
validatorData, moduleName, 0, new bytes[](0), block.timestamp + SIGNATURE_VALIDITY_PERIOD
112112
);
113113

@@ -156,8 +156,9 @@ contract GenerateBLSKeysAndRegisterValidators is Script {
156156
function _generateValidatorKey(uint256 idx, bytes32 moduleName) internal {
157157
uint256 numberOfGuardians = pufferProtocol.GUARDIAN_MODULE().getGuardians().length;
158158
bytes[] memory guardianPubKeys = pufferProtocol.GUARDIAN_MODULE().getGuardiansEnclavePubkeys();
159-
address moduleAddress = IPufferProtocol(protocolAddress).getModuleAddress(moduleName);
160-
bytes memory withdrawalCredentials = IPufferProtocol(protocolAddress).getWithdrawalCredentials(moduleAddress);
159+
address moduleAddress = IPufferProtocolFull(protocolAddress).getModuleAddress(moduleName);
160+
bytes memory withdrawalCredentials =
161+
IPufferProtocolFull(protocolAddress).getWithdrawalCredentials(moduleAddress);
161162

162163
string[] memory inputs = new string[](17);
163164
inputs[0] = "coral-cli";

mainnet-contracts/script/SetupAccess.s.sol

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { GenerateAccessManagerCallData } from "../script/GenerateAccessManagerCa
2121
import { GenerateAccessManagerCalldata2 } from "../script/AccessManagerMigrations/GenerateAccessManagerCalldata2.s.sol";
2222
import { GenerateRestakingOperatorCalldata } from
2323
"../script/AccessManagerMigrations/07_GenerateRestakingOperatorCalldata.s.sol";
24+
import { IPufferProtocolLogic } from "../src/interface/IPufferProtocolLogic.sol";
2425

2526
import {
2627
ROLE_ID_OPERATIONS_MULTISIG,
@@ -322,8 +323,8 @@ contract SetupAccess is BaseScript {
322323

323324
bytes4[] memory paymasterSelectors = new bytes4[](3);
324325
paymasterSelectors[0] = PufferProtocol.provisionNode.selector;
325-
paymasterSelectors[1] = PufferProtocol.skipProvisioning.selector;
326-
paymasterSelectors[2] = PufferProtocol.batchHandleWithdrawals.selector;
326+
paymasterSelectors[1] = IPufferProtocolLogic.skipProvisioning.selector;
327+
paymasterSelectors[2] = IPufferProtocolLogic.batchHandleWithdrawals.selector;
327328

328329
calldatas[1] = abi.encodeWithSelector(
329330
AccessManager.setTargetFunctionRole.selector,
@@ -333,12 +334,12 @@ contract SetupAccess is BaseScript {
333334
);
334335

335336
bytes4[] memory publicSelectors = new bytes4[](6);
336-
publicSelectors[0] = PufferProtocol.registerValidatorKey.selector;
337+
publicSelectors[0] = IPufferProtocolLogic.registerValidatorKey.selector;
337338
publicSelectors[1] = PufferProtocol.depositValidatorTickets.selector;
338339
publicSelectors[2] = PufferProtocol.withdrawValidatorTickets.selector;
339340
publicSelectors[3] = PufferProtocol.revertIfPaused.selector;
340-
publicSelectors[4] = PufferProtocol.depositValidationTime.selector;
341-
publicSelectors[5] = PufferProtocol.withdrawValidationTime.selector;
341+
publicSelectors[4] = IPufferProtocolLogic.depositValidationTime.selector;
342+
publicSelectors[5] = IPufferProtocolLogic.withdrawValidationTime.selector;
342343

343344
calldatas[2] = abi.encodeWithSelector(
344345
AccessManager.setTargetFunctionRole.selector,

mainnet-contracts/src/ProtocolSignatureNonces.sol

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,4 @@ abstract contract ProtocolSignatureNonces {
7878
return $._nonces[selector][owner]++;
7979
}
8080
}
81-
82-
/**
83-
* @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`.
84-
* @param selector The function selector that determines the nonce space
85-
* @param owner The address whose nonce to validate and consume
86-
* @param nonce The expected nonce value
87-
*
88-
* @dev This function validates that the provided nonce matches the expected
89-
* current nonce before consuming it. This prevents replay attacks and
90-
* ensures proper signature ordering.
91-
*
92-
* @dev Reverts with InvalidAccountNonce if the nonce doesn't match.
93-
*/
94-
function _useCheckedNonce(bytes32 selector, address owner, uint256 nonce) internal virtual {
95-
uint256 current = _useNonce(selector, owner);
96-
if (nonce != current) {
97-
revert InvalidAccountNonce(selector, owner, current);
98-
}
99-
}
10081
}

0 commit comments

Comments
 (0)