From 62b8008308afc43e379843540f9dd555cd5fc376 Mon Sep 17 00:00:00 2001 From: Kresh Date: Thu, 26 Dec 2024 17:33:50 +0400 Subject: [PATCH 1/2] feat: adapt new delegator --- lib/core | 2 +- test/DefaultCollateralMigrator.t.sol | 108 +++++++++++++++++---------- 2 files changed, 71 insertions(+), 39 deletions(-) diff --git a/lib/core b/lib/core index 8333f3e..feb15ec 160000 --- a/lib/core +++ b/lib/core @@ -1 +1 @@ -Subproject commit 8333f3e9a2e15a84537400a30efb16e83842743e +Subproject commit feb15ec0b55e30b56b9595a8b9d8f179f173bb76 diff --git a/test/DefaultCollateralMigrator.t.sol b/test/DefaultCollateralMigrator.t.sol index 711f71d..c8c57f6 100644 --- a/test/DefaultCollateralMigrator.t.sol +++ b/test/DefaultCollateralMigrator.t.sol @@ -20,15 +20,19 @@ import {OptInService} from "@symbioticfi/core/src/contracts/service/OptInService import {Vault} from "@symbioticfi/core/src/contracts/vault/Vault.sol"; import {NetworkRestakeDelegator} from "@symbioticfi/core/src/contracts/delegator/NetworkRestakeDelegator.sol"; import {FullRestakeDelegator} from "@symbioticfi/core/src/contracts/delegator/FullRestakeDelegator.sol"; +import {OperatorSpecificDelegator} from "@symbioticfi/core/src/contracts/delegator/OperatorSpecificDelegator.sol"; +import {OperatorNetworkSpecificDelegator} from + "@symbioticfi/core/src/contracts/delegator/OperatorNetworkSpecificDelegator.sol"; import {Slasher} from "@symbioticfi/core/src/contracts/slasher/Slasher.sol"; import {VetoSlasher} from "@symbioticfi/core/src/contracts/slasher/VetoSlasher.sol"; import {Token} from "@symbioticfi/core/test/mocks/Token.sol"; import {FeeOnTransferToken} from "@symbioticfi/core/test/mocks/FeeOnTransferToken.sol"; -import {VaultConfigurator, IVaultConfigurator} from "@symbioticfi/core/src/contracts/VaultConfigurator.sol"; -import {IVault} from "@symbioticfi/core/src/interfaces/IVaultConfigurator.sol"; +import {VaultConfigurator} from "@symbioticfi/core/src/contracts/VaultConfigurator.sol"; +import {IVaultConfigurator} from "@symbioticfi/core/src/interfaces/IVaultConfigurator.sol"; import {INetworkRestakeDelegator} from "@symbioticfi/core/src/interfaces/delegator/INetworkRestakeDelegator.sol"; import {IBaseDelegator} from "@symbioticfi/core/src/interfaces/delegator/IBaseDelegator.sol"; +import {IVault} from "@symbioticfi/core/src/interfaces/vault/IVault.sol"; import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; @@ -85,8 +89,10 @@ contract DefaultCollateralMigratorTest is Test { operatorMetadataService = new MetadataService(address(operatorRegistry)); networkMetadataService = new MetadataService(address(networkRegistry)); networkMiddlewareService = new NetworkMiddlewareService(address(networkRegistry)); - operatorVaultOptInService = new OptInService(address(operatorRegistry), address(vaultFactory)); - operatorNetworkOptInService = new OptInService(address(operatorRegistry), address(networkRegistry)); + operatorVaultOptInService = + new OptInService(address(operatorRegistry), address(vaultFactory), "OperatorVaultOptInService"); + operatorNetworkOptInService = + new OptInService(address(operatorRegistry), address(networkRegistry), "OperatorNetworkOptInService"); address vaultImpl = address(new Vault(address(delegatorFactory), address(slasherFactory), address(vaultFactory))); @@ -116,6 +122,32 @@ contract DefaultCollateralMigratorTest is Test { ); delegatorFactory.whitelist(fullRestakeDelegatorImpl); + address operatorSpecificDelegatorImpl = address( + new OperatorSpecificDelegator( + address(operatorRegistry), + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(operatorSpecificDelegatorImpl); + + address operatorNetworkSpecificDelegatorImpl = address( + new OperatorNetworkSpecificDelegator( + address(operatorRegistry), + address(networkRegistry), + address(vaultFactory), + address(operatorVaultOptInService), + address(operatorNetworkOptInService), + address(delegatorFactory), + delegatorFactory.totalTypes() + ) + ); + delegatorFactory.whitelist(operatorNetworkSpecificDelegatorImpl); + address slasherImpl = address( new Slasher( address(vaultFactory), @@ -172,21 +204,21 @@ contract DefaultCollateralMigratorTest is Test { IVaultConfigurator.InitParams({ version: vaultFactory.lastVersion(), owner: alice, - vaultParams: IVault.InitParams({ - collateral: address(feeOnTransferCollateral.asset()), - delegator: address(0), - slasher: address(0), - burner: address(0xdEaD), - epochDuration: epochDuration, - depositWhitelist: false, - isDepositLimit: false, - depositLimit: 0, - defaultAdminRoleHolder: alice, - depositWhitelistSetRoleHolder: alice, - depositorWhitelistRoleHolder: alice, - isDepositLimitSetRoleHolder: alice, - depositLimitSetRoleHolder: alice - }), + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(feeOnTransferCollateral.asset()), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice + }) + ), delegatorIndex: 0, delegatorParams: abi.encode( INetworkRestakeDelegator.InitParams({ @@ -222,7 +254,7 @@ contract DefaultCollateralMigratorTest is Test { uint256 balanceBeforeAssetVault = IERC20(collateral.asset()).balanceOf(address(vault)); uint256 balanceBeforeAssetMigrator = IERC20(collateral.asset()).balanceOf(address(defaultCollateralMigrator)); - assertEq(vault.balanceOf(address(this)), 0); + assertEq(vault.slashableBalanceOf(address(this)), 0); collateral.approve(address(defaultCollateralMigrator), amount); defaultCollateralMigrator.migrate(address(collateral), address(vault), address(this), amount); @@ -236,7 +268,7 @@ contract DefaultCollateralMigratorTest is Test { IERC20(collateral.asset()).balanceOf(address(defaultCollateralMigrator)) - balanceBeforeAssetMigrator, 0 ); - assertEq(vault.balanceOf(address(this)), amount); + assertEq(vault.slashableBalanceOf(address(this)), amount); assertEq( IERC20(collateral.asset()).allowance(address(defaultCollateralMigrator), address(vault)), type(uint256).max ); @@ -255,7 +287,7 @@ contract DefaultCollateralMigratorTest is Test { uint256 balanceBeforeAssetMigrator = IERC20(feeOnTransferCollateral.asset()).balanceOf(address(defaultCollateralMigrator)); - assertEq(vaultFeeOnTransfer.balanceOf(address(this)), 0); + assertEq(vaultFeeOnTransfer.slashableBalanceOf(address(this)), 0); feeOnTransferCollateral.approve(address(defaultCollateralMigrator), amount); defaultCollateralMigrator.migrate( @@ -278,7 +310,7 @@ contract DefaultCollateralMigratorTest is Test { 0 ); - assertEq(vaultFeeOnTransfer.balanceOf(address(this)), amount - 2); + assertEq(vaultFeeOnTransfer.slashableBalanceOf(address(this)), amount - 2); assertEq( IERC20(feeOnTransferCollateral.asset()).allowance( address(defaultCollateralMigrator), address(vaultFeeOnTransfer) @@ -298,21 +330,21 @@ contract DefaultCollateralMigratorTest is Test { IVaultConfigurator.InitParams({ version: vaultFactory.lastVersion(), owner: alice, - vaultParams: IVault.InitParams({ - collateral: address(collateral.asset()), - delegator: address(0), - slasher: address(0), - burner: address(0xdEaD), - epochDuration: epochDuration, - depositWhitelist: false, - isDepositLimit: false, - depositLimit: 0, - defaultAdminRoleHolder: alice, - depositWhitelistSetRoleHolder: alice, - depositorWhitelistRoleHolder: alice, - isDepositLimitSetRoleHolder: alice, - depositLimitSetRoleHolder: alice - }), + vaultParams: abi.encode( + IVault.InitParams({ + collateral: address(collateral.asset()), + burner: address(0xdEaD), + epochDuration: epochDuration, + depositWhitelist: false, + isDepositLimit: false, + depositLimit: 0, + defaultAdminRoleHolder: alice, + depositWhitelistSetRoleHolder: alice, + depositorWhitelistRoleHolder: alice, + isDepositLimitSetRoleHolder: alice, + depositLimitSetRoleHolder: alice + }) + ), delegatorIndex: 0, delegatorParams: abi.encode( INetworkRestakeDelegator.InitParams({ From 98702ee5268f7382f3aa4fdab17956d8999a42cb Mon Sep 17 00:00:00 2001 From: Kresh Date: Fri, 27 Dec 2024 17:14:50 +0400 Subject: [PATCH 2/2] docs: update package description --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 338adbe..218d610 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@symbioticfi/periphery", "version": "1.0.0-devnet.1", - "description": "Symbiotic is a shared security protocol enabling decentralized networks to control and customize their own multi-asset restaking implementation.", + "description": "Symbiotic Periphery repository contains a helper contract allowing users to migrate their funds from Default Collaterals to Vaults in a convenient way.", "homepage": "https://symbiotic.fi/", "bugs": "https://github.com/symbioticfi/periphery/issues", "license": "MIT", @@ -25,6 +25,6 @@ "dependencies": { "@openzeppelin/contracts": "5.0.2", "@openzeppelin/contracts-upgradeable": "5.0.2", - "@symbioticfi/core": "1.0.0-devnet.5" + "@symbioticfi/core": "1.0.0-devnet.9" } }