Skip to content

Commit 29c2edd

Browse files
authored
Merge pull request #14 from euler-xyz/fix/order-assets
Fix: pool asset0/asset1 order
2 parents 7ddd4c2 + 6e43da3 commit 29c2edd

File tree

8 files changed

+47
-39
lines changed

8 files changed

+47
-39
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636

3737
- name: Run Forge build
3838
run: |
39-
forge build --sizes
39+
forge build --force --skip test --sizes
4040
id: build
4141

4242
- name: Run Forge tests

src/MaglevBase.sol

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ abstract contract MaglevBase is IMaglevBase, EVCUtil {
1313
address public immutable asset0;
1414
address public immutable asset1;
1515
address public immutable myAccount;
16-
uint112 public immutable debtLimit0;
17-
uint112 public immutable debtLimit1;
1816
uint256 public immutable feeMultiplier;
1917

2018
uint112 internal reserve0;
@@ -38,11 +36,11 @@ abstract contract MaglevBase is IMaglevBase, EVCUtil {
3836

3937
struct BaseParams {
4038
address evc;
41-
address vault0;
42-
address vault1;
39+
address vaultA;
40+
address vaultB;
4341
address myAccount;
44-
uint112 debtLimit0;
45-
uint112 debtLimit1;
42+
uint112 debtLimitA;
43+
uint112 debtLimitB;
4644
uint256 fee;
4745
}
4846

@@ -60,20 +58,32 @@ abstract contract MaglevBase is IMaglevBase, EVCUtil {
6058
constructor(BaseParams memory params) EVCUtil(params.evc) {
6159
require(params.fee < 1e18, BadFee());
6260

63-
address vault0Evc = IEVault(params.vault0).EVC();
64-
require(vault0Evc == IEVault(params.vault1).EVC(), DifferentEVC());
65-
require(vault0Evc == params.evc, DifferentEVC());
61+
address vaultAEvc = IEVault(params.vaultA).EVC();
62+
require(vaultAEvc == IEVault(params.vaultB).EVC(), DifferentEVC());
63+
require(vaultAEvc == params.evc, DifferentEVC());
6664

67-
vault0 = params.vault0;
68-
vault1 = params.vault1;
69-
asset0 = IEVault(vault0).asset();
70-
asset1 = IEVault(vault1).asset();
71-
72-
require(asset0 != asset1, UnsupportedPair());
65+
address assetA = IEVault(params.vaultA).asset();
66+
address assetB = IEVault(params.vaultB).asset();
67+
require(assetA != assetB, UnsupportedPair());
7368

7469
myAccount = params.myAccount;
75-
reserve0 = offsetReserve(params.debtLimit0, vault0);
76-
reserve1 = offsetReserve(params.debtLimit1, vault1);
70+
(vault0, asset0, reserve0, vault1, asset1, reserve1) = assetA < assetB
71+
? (
72+
params.vaultA,
73+
assetA,
74+
offsetReserve(params.debtLimitA, params.vaultA),
75+
params.vaultB,
76+
assetB,
77+
offsetReserve(params.debtLimitB, params.vaultB)
78+
)
79+
: (
80+
params.vaultB,
81+
assetB,
82+
offsetReserve(params.debtLimitB, params.vaultB),
83+
params.vaultA,
84+
assetA,
85+
offsetReserve(params.debtLimitA, params.vaultA)
86+
);
7787
feeMultiplier = 1e18 - params.fee;
7888
}
7989

src/interfaces/IMaglevBase.sol

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ interface IMaglevBase {
1212
function asset0() external view returns (address);
1313
function asset1() external view returns (address);
1414
function myAccount() external view returns (address);
15-
function debtLimit0() external view returns (uint112);
16-
function debtLimit1() external view returns (uint112);
1715
function feeMultiplier() external view returns (uint256);
1816
function getReserves() external view returns (uint112, uint112, uint32);
1917
}

test/ConstantProduct.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ contract ConstantProductTest is MaglevTestBase {
1919
createMaglev(50e18, 50e18, 0);
2020
}
2121

22-
function createMaglev(uint112 debtLimit0, uint112 debtLimit1, uint256 fee) internal {
22+
function createMaglev(uint112 debtLimitA, uint112 debtLimitB, uint256 fee) internal {
2323
vm.prank(creator);
24-
maglev = new Maglev(getMaglevBaseParams(debtLimit0, debtLimit1, fee));
24+
maglev = new Maglev(getMaglevBaseParams(debtLimitA, debtLimitB, fee));
2525

2626
vm.prank(holder);
2727
evc.setAccountOperator(holder, address(maglev), true);

test/ConstantSum.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ contract ConstantSumTest is MaglevTestBase {
1919
createMaglev(50e18, 50e18, 0, 1, 1);
2020
}
2121

22-
function createMaglev(uint112 debtLimit0, uint112 debtLimit1, uint256 fee, uint256 priceX, uint256 priceY)
22+
function createMaglev(uint112 debtLimitA, uint112 debtLimitB, uint256 fee, uint256 priceX, uint256 priceY)
2323
internal
2424
{
2525
vm.prank(creator);
2626
maglev = new Maglev(
27-
getMaglevBaseParams(debtLimit0, debtLimit1, fee), Maglev.ConstantSumParams({priceX: priceX, priceY: priceY})
27+
getMaglevBaseParams(debtLimitA, debtLimitB, fee), Maglev.ConstantSumParams({priceX: priceX, priceY: priceY})
2828
);
2929

3030
vm.prank(holder);

test/EulerSwap.t.sol

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ contract EulerSwapTest is MaglevTestBase {
2020
}
2121

2222
function createMaglev(
23-
uint112 debtLimit0,
24-
uint112 debtLimit1,
23+
uint112 debtLimitA,
24+
uint112 debtLimitB,
2525
uint256 fee,
2626
uint256 px,
2727
uint256 py,
@@ -30,7 +30,7 @@ contract EulerSwapTest is MaglevTestBase {
3030
) internal {
3131
vm.prank(creator);
3232
maglev = new Maglev(
33-
getMaglevBaseParams(debtLimit0, debtLimit1, fee),
33+
getMaglevBaseParams(debtLimitA, debtLimitB, fee),
3434
Maglev.EulerSwapParams({priceX: px, priceY: py, concentrationX: cx, concentrationY: cy})
3535
);
3636

@@ -47,11 +47,11 @@ contract EulerSwapTest is MaglevTestBase {
4747
new Maglev(
4848
MaglevBase.BaseParams({
4949
evc: address(makeAddr("RANDOM_EVC")),
50-
vault0: address(eTST),
51-
vault1: address(eTST2),
50+
vaultA: address(eTST),
51+
vaultB: address(eTST2),
5252
myAccount: holder,
53-
debtLimit0: 50e18,
54-
debtLimit1: 50e18,
53+
debtLimitA: 50e18,
54+
debtLimitB: 50e18,
5555
fee: 0
5656
}),
5757
Maglev.EulerSwapParams({priceX: 1e18, priceY: 1e18, concentrationX: 4e18, concentrationY: 0.85e18})

test/MaglevTestBase.t.sol

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,18 @@ contract MaglevTestBase is EVaultTestBase {
4343
_mintAndDeposit(holder, eTST2, 10e18);
4444
}
4545

46-
function getMaglevBaseParams(uint112 debtLimit0, uint112 debtLimit1, uint256 fee)
46+
function getMaglevBaseParams(uint112 debtLimitA, uint112 debtLimitB, uint256 fee)
4747
internal
4848
view
4949
returns (MaglevBase.BaseParams memory)
5050
{
5151
return MaglevBase.BaseParams({
5252
evc: address(evc),
53-
vault0: address(eTST),
54-
vault1: address(eTST2),
53+
vaultA: address(eTST),
54+
vaultB: address(eTST2),
5555
myAccount: holder,
56-
debtLimit0: debtLimit0,
57-
debtLimit1: debtLimit1,
56+
debtLimitA: debtLimitA,
57+
debtLimitB: debtLimitB,
5858
fee: fee
5959
});
6060
}

test/UniswapV2Call.t.sol

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ contract UniswapV2CallTest is MaglevTestBase {
1919
}
2020

2121
function createMaglev(
22-
uint112 debtLimit0,
23-
uint112 debtLimit1,
22+
uint112 debtLimitA,
23+
uint112 debtLimitB,
2424
uint256 fee,
2525
uint256 px,
2626
uint256 py,
@@ -29,7 +29,7 @@ contract UniswapV2CallTest is MaglevTestBase {
2929
) internal {
3030
vm.prank(creator);
3131
maglev = new Maglev(
32-
getMaglevBaseParams(debtLimit0, debtLimit1, fee),
32+
getMaglevBaseParams(debtLimitA, debtLimitB, fee),
3333
Maglev.EulerSwapParams({priceX: px, priceY: py, concentrationX: cx, concentrationY: cy})
3434
);
3535

0 commit comments

Comments
 (0)