Skip to content

Commit 4fd4f02

Browse files
committed
Switch to EulerSwap2
1 parent eeef15f commit 4fd4f02

File tree

7 files changed

+58
-224
lines changed

7 files changed

+58
-224
lines changed

POOL_CREATION.md

Lines changed: 0 additions & 113 deletions
This file was deleted.

libflat/euler-swap

Submodule euler-swap updated 59 files

remappings.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ openzeppelin-contracts/=libflat/openzeppelin-contracts/contracts/
55
@uniswap/v4-periphery/=libflat/v4-periphery/
66
v4-periphery/=libflat/v4-periphery/
77
v4-core/=libflat/v4-core/src/
8-
solmate/=libflat/solmate/
8+
solmate/=libflat/solmate/src/
99

1010
ethereum-vault-connector/=libflat/ethereum-vault-connector/src/
1111
evc/=libflat/ethereum-vault-connector/src/

script/DeployScenario.s.sol

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ import {TestERC20} from "evk-test/unit/evault/EVaultTestBase.t.sol";
4242
import {IEVault} from "evk/EVault/IEVault.sol";
4343
import {IEulerSwap, IEVC, EulerSwap} from "euler-swap/EulerSwap.sol";
4444
import {EulerSwapFactory} from "euler-swap/EulerSwapFactory.sol";
45+
import {EulerSwapRegistry} from "euler-swap/EulerSwapRegistry.sol";
4546
import {EulerSwapPeriphery} from "euler-swap/EulerSwapPeriphery.sol";
4647
import {PoolManagerDeployer} from "euler-swap/../test/utils/PoolManagerDeployer.sol";
48+
import {PerspectiveMock} from "euler-swap/../test/utils/PerspectiveMock.sol";
4749

4850
// Maglev stuff
4951

@@ -123,7 +125,9 @@ contract DeployScenario is Script {
123125
address poolManager;
124126
address eulerSwapImpl;
125127
EulerSwapFactory eulerSwapFactory;
128+
EulerSwapRegistry eulerSwapRegistry;
126129
EulerSwapPeriphery eulerSwapPeriphery;
130+
PerspectiveMock perspectiveMock;
127131

128132
//////// Maglev
129133

@@ -268,9 +272,15 @@ contract DeployScenario is Script {
268272
}
269273

270274
function deployEulerSwap() internal {
275+
// Mocks
271276
poolManager = address(PoolManagerDeployer.deploy(address(0)));
277+
perspectiveMock = new PerspectiveMock();
278+
279+
// EulerSwap contracts
272280
eulerSwapImpl = address(new EulerSwap(address(evc), poolManager));
273-
eulerSwapFactory = new EulerSwapFactory(address(evc), address(factory), eulerSwapImpl, address(0), address(0));
281+
eulerSwapFactory = new EulerSwapFactory(address(evc), eulerSwapImpl, address(0), address(0));
282+
eulerSwapRegistry =
283+
new EulerSwapRegistry(address(evc), address(eulerSwapFactory), address(perspectiveMock), address(0));
274284
eulerSwapPeriphery = new EulerSwapPeriphery();
275285

276286
string memory result = vm.serializeAddress("eulerSwap", "eulerSwapFactory", address(eulerSwapFactory));

script/MineSaltForPool.s.sol

Lines changed: 0 additions & 75 deletions
This file was deleted.

script/scenarios/EulerSwapPoolCreation.s.sol

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -32,53 +32,59 @@ contract EulerSwapPoolCreation is DeployScenario, Test {
3232
// Note: assets must be ordered (asset0 < asset1)
3333
address vault0 = address(eUSDC);
3434
address vault1 = address(eUSDT);
35-
35+
3636
// Swap if needed to ensure proper ordering
3737
if (IEVault(vault0).asset() > IEVault(vault1).asset()) {
3838
(vault0, vault1) = (vault1, vault0);
3939
}
40-
40+
4141
// Prepare pool parameters
42-
IEulerSwap.Params memory poolParams = IEulerSwap.Params({
43-
vault0: vault0,
44-
vault1: vault1,
42+
IEulerSwap.StaticParams memory sParams = IEulerSwap.StaticParams({
43+
supplyVault0: vault0,
44+
supplyVault1: vault1,
45+
borrowVault0: vault0,
46+
borrowVault1: vault1,
4547
eulerAccount: user0,
48+
feeRecipient: user0,
49+
protocolFee: 0,
50+
protocolFeeRecipient: address(0)
51+
});
52+
53+
IEulerSwap.DynamicParams memory dParams = IEulerSwap.DynamicParams({
4654
equilibriumReserve0: 10000e18, // 10k virtual reserves
4755
equilibriumReserve1: 10000e18, // 10k virtual reserves
56+
minReserve0: 0,
57+
minReserve1: 0,
4858
priceX: 1e18, // 1:1 price
4959
priceY: 1e18,
5060
concentrationX: 0.5e18, // 50% concentration
5161
concentrationY: 0.5e18, // 50% concentration
52-
fee: 0.003e18, // 0.3% fee
53-
protocolFee: 0,
54-
protocolFeeRecipient: address(0)
62+
fee0: 0.003e18, // 0.3% fee
63+
fee1: 0.003e18, // 0.3% fee
64+
expiration: 0,
65+
swapHookedOperations: 0,
66+
swapHook: address(0)
5567
});
5668

5769
// Prepare initial state
58-
IEulerSwap.InitialState memory initialState = IEulerSwap.InitialState({
59-
currReserve0: 10000e18,
60-
currReserve1: 10000e18
61-
});
70+
IEulerSwap.InitialState memory initialState = IEulerSwap.InitialState({reserve0: 10000e18, reserve1: 10000e18});
6271

6372
// Mine salt using HookMiner to find a valid hook address
6473
console.log("\nMining salt for valid hook address...");
6574
uint160 flags = uint160(
66-
Hooks.BEFORE_INITIALIZE_FLAG |
67-
Hooks.BEFORE_SWAP_FLAG |
68-
Hooks.BEFORE_SWAP_RETURNS_DELTA_FLAG |
69-
Hooks.BEFORE_DONATE_FLAG |
70-
Hooks.BEFORE_ADD_LIQUIDITY_FLAG
75+
Hooks.BEFORE_INITIALIZE_FLAG | Hooks.BEFORE_SWAP_FLAG | Hooks.BEFORE_SWAP_RETURNS_DELTA_FLAG
76+
| Hooks.BEFORE_DONATE_FLAG | Hooks.BEFORE_ADD_LIQUIDITY_FLAG
7177
);
72-
78+
7379
// Prepare creation code
74-
bytes memory creationCode = MetaProxyDeployer.creationCodeMetaProxy(eulerSwapImpl, abi.encode(poolParams));
80+
bytes memory creationCode = MetaProxyDeployer.creationCodeMetaProxy(eulerSwapImpl, abi.encode(sParams));
7581
(address hookAddress, bytes32 salt) = HookMiner.find(address(eulerSwapFactory), flags, creationCode);
76-
82+
7783
console.log("Found salt:", uint256(salt));
7884
console.log("Hook address:", hookAddress);
7985
console.log("Hook address flags:", uint160(hookAddress) & Hooks.ALL_HOOK_MASK);
8086
console.log("Expected flags:", flags);
81-
87+
8288
// Deploy pool via EVC batch
8389
IEVC.BatchItem[] memory items = new IEVC.BatchItem[](2);
8490
items[0] = IEVC.BatchItem({
@@ -91,14 +97,14 @@ contract EulerSwapPoolCreation is DeployScenario, Test {
9197
onBehalfOfAccount: user0,
9298
targetContract: address(eulerSwapFactory),
9399
value: 0,
94-
data: abi.encodeCall(IEulerSwapFactory.deployPool, (poolParams, initialState, salt))
100+
data: abi.encodeCall(IEulerSwapFactory.deployPool, (sParams, dParams, initialState, salt))
95101
});
96102
console.log("\nDeploying EulerSwap pool...");
97103
console.log("Pool manager address:", address(poolManager));
98104
console.log("EulerSwap implementation:", address(eulerSwapImpl));
99105
evc.batch(items);
100106
console.log("SUCCESS! Pool deployed at:", hookAddress);
101-
107+
102108
// Enable vaults as collateral
103109
evc.enableCollateral(user0, vault0);
104110
evc.enableCollateral(user0, vault1);
@@ -113,9 +119,9 @@ contract EulerSwapPoolCreation is DeployScenario, Test {
113119
console.log("- Both vaults enabled as collateral");
114120
console.log("- USDC Vault:", vault0);
115121
console.log("- USDT Vault:", vault1);
116-
122+
117123
// Check if pool exists
118-
address deployedPool = eulerSwapFactory.poolByEulerAccount(user0);
124+
address deployedPool = eulerSwapRegistry.poolByEulerAccount(user0);
119125
if (deployedPool != address(0)) {
120126
console.log("- Pool deployed at:", deployedPool);
121127
console.log("");
@@ -125,4 +131,4 @@ contract EulerSwapPoolCreation is DeployScenario, Test {
125131
console.log("Error: Pool deployment may have failed!");
126132
}
127133
}
128-
}
134+
}

0 commit comments

Comments
 (0)