Skip to content

Commit 8bd7c28

Browse files
Merge pull request #313 from euler-xyz/development
Development
2 parents c72be6e + cc8ff7f commit 8bd7c28

File tree

80 files changed

+2421
-754
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+2421
-754
lines changed

.gitmodules

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@
2222
[submodule "lib/forge-std"]
2323
path = lib/forge-std
2424
url = https://github.com/foundry-rs/forge-std
25-
[submodule "lib/euler-earn"]
26-
path = lib/euler-earn
27-
url = https://github.com/euler-xyz/euler-earn
2825
[submodule "lib/layerzero-devtools"]
2926
path = lib/layerzero-devtools
3027
url = https://github.com/LayerZero-Labs/devtools
@@ -37,3 +34,6 @@
3734
[submodule "lib/euler-swap"]
3835
path = lib/euler-swap
3936
url = https://github.com/euler-xyz/euler-swap
37+
[submodule "lib/euler-earn"]
38+
path = lib/euler-earn
39+
url = https://github.com/euler-xyz/euler-earn

audits/Supremacy IRMLinearKinky.pdf

193 KB
Binary file not shown.

lib/euler-earn

script/02_PeripheryFactories.s.sol

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {ScriptUtils} from "./utils/ScriptUtils.s.sol";
66
import {EulerRouterFactory} from "../src/EulerRouterFactory/EulerRouterFactory.sol";
77
import {SnapshotRegistry} from "../src/SnapshotRegistry/SnapshotRegistry.sol";
88
import {EulerKinkIRMFactory} from "../src/IRMFactory/EulerKinkIRMFactory.sol";
9+
import {EulerKinkyIRMFactory} from "../src/IRMFactory/EulerKinkyIRMFactory.sol";
910
import {EulerIRMAdaptiveCurveFactory} from "../src/IRMFactory/EulerIRMAdaptiveCurveFactory.sol";
1011
import {GovernorAccessControlEmergencyFactory} from "../src/GovernorFactory/GovernorAccessControlEmergencyFactory.sol";
1112
import {CapRiskStewardFactory} from "../src/GovernorFactory/CapRiskStewardFactory.sol";
@@ -16,6 +17,7 @@ contract PeripheryFactories is ScriptUtils {
1617
address oracleAdapterRegistry;
1718
address externalVaultRegistry;
1819
address kinkIRMFactory;
20+
address kinkyIRMFactory;
1921
address adaptiveCurveIRMFactory;
2022
address irmRegistry;
2123
address governorAccessControlEmergencyFactory;
@@ -37,6 +39,7 @@ contract PeripheryFactories is ScriptUtils {
3739
object =
3840
vm.serializeAddress("peripheryFactories", "externalVaultRegistry", deployedContracts.externalVaultRegistry);
3941
object = vm.serializeAddress("peripheryFactories", "kinkIRMFactory", deployedContracts.kinkIRMFactory);
42+
object = vm.serializeAddress("peripheryFactories", "kinkyIRMFactory", deployedContracts.kinkyIRMFactory);
4043
object = vm.serializeAddress(
4144
"peripheryFactories", "adaptiveCurveIRMFactory", deployedContracts.adaptiveCurveIRMFactory
4245
);
@@ -60,6 +63,7 @@ contract PeripheryFactories is ScriptUtils {
6063
deployedContracts.oracleAdapterRegistry = address(new SnapshotRegistry(evc, getDeployer()));
6164
deployedContracts.externalVaultRegistry = address(new SnapshotRegistry(evc, getDeployer()));
6265
deployedContracts.kinkIRMFactory = address(new EulerKinkIRMFactory());
66+
deployedContracts.kinkyIRMFactory = address(new EulerKinkyIRMFactory());
6367
deployedContracts.adaptiveCurveIRMFactory = address(new EulerIRMAdaptiveCurveFactory());
6468
deployedContracts.irmRegistry = address(new SnapshotRegistry(evc, getDeployer()));
6569
deployedContracts.governorAccessControlEmergencyFactory =

script/04_IRM.s.sol

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ pragma solidity ^0.8.0;
44

55
import {ScriptUtils} from "./utils/ScriptUtils.s.sol";
66
import {EulerKinkIRMFactory} from "../src/IRMFactory/EulerKinkIRMFactory.sol";
7+
import {EulerKinkyIRMFactory} from "../src/IRMFactory/EulerKinkyIRMFactory.sol";
78
import {EulerIRMAdaptiveCurveFactory} from "../src/IRMFactory/EulerIRMAdaptiveCurveFactory.sol";
89

910
contract KinkIRMDeployer is ScriptUtils {
@@ -40,6 +41,48 @@ contract KinkIRMDeployer is ScriptUtils {
4041
}
4142
}
4243

44+
contract KinkyIRMDeployer is ScriptUtils {
45+
function run() public broadcast returns (address irm) {
46+
string memory inputScriptFileName = "04_KinkIRM_input.json";
47+
string memory outputScriptFileName = "04_KinkIRM_output.json";
48+
string memory json = getScriptFile(inputScriptFileName);
49+
address kinkyIRMFactory = vm.parseJsonAddress(json, ".kinkyIRMFactory");
50+
uint256 baseRate = vm.parseJsonUint(json, ".baseRate");
51+
uint256 slope = vm.parseJsonUint(json, ".slope");
52+
uint256 shape = vm.parseJsonUint(json, ".shape");
53+
uint32 kink = uint32(vm.parseJsonUint(json, ".kink"));
54+
uint256 cutoff = vm.parseJsonUint(json, ".cutoff");
55+
56+
irm = execute(kinkyIRMFactory, baseRate, slope, shape, kink, cutoff);
57+
58+
string memory object;
59+
object = vm.serializeAddress("irm", "irm", irm);
60+
vm.writeJson(object, string.concat(vm.projectRoot(), "/script/", outputScriptFileName));
61+
}
62+
63+
function deploy(
64+
address kinkyIRMFactory,
65+
uint256 baseRate,
66+
uint256 slope,
67+
uint256 shape,
68+
uint32 kink,
69+
uint256 cutoff
70+
) public broadcast returns (address irm) {
71+
irm = execute(kinkyIRMFactory, baseRate, slope, shape, kink, cutoff);
72+
}
73+
74+
function execute(
75+
address kinkyIRMFactory,
76+
uint256 baseRate,
77+
uint256 slope,
78+
uint256 shape,
79+
uint32 kink,
80+
uint256 cutoff
81+
) public returns (address irm) {
82+
irm = EulerKinkyIRMFactory(kinkyIRMFactory).deploy(baseRate, slope, shape, kink, cutoff);
83+
}
84+
}
85+
4386
contract AdaptiveCurveIRMDeployer is ScriptUtils {
4487
function run() public broadcast returns (address irm) {
4588
string memory inputScriptFileName = "04_AdaptiveCurveIRM_input.json";

script/08_Lenses.s.sol

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ contract Lenses is ScriptUtils {
5353
lenses[2] = address(new IRMLens(kinkIRMFactory, adaptiveCurveIRMFactory));
5454
lenses[3] = address(new UtilsLens(eVaultFactory, address(lenses[1])));
5555
lenses[4] = address(new VaultLens(address(lenses[1]), address(lenses[3]), address(lenses[2])));
56-
lenses[5] = address(new EulerEarnVaultLens(address(lenses[1]), address(lenses[3])));
56+
lenses[5] = address(new EulerEarnVaultLens(address(lenses[3])));
5757
}
5858
}
5959

@@ -186,21 +186,20 @@ contract LensEulerEarnVaultDeployer is ScriptUtils {
186186
string memory inputScriptFileName = "08_LensEulerEarnVault_input.json";
187187
string memory outputScriptFileName = "08_LensEulerEarnVault_output.json";
188188
string memory json = getScriptFile(inputScriptFileName);
189-
address oracleLens = vm.parseJsonAddress(json, ".oracleLens");
190189
address utilsLens = vm.parseJsonAddress(json, ".utilsLens");
191190

192-
eulerEarnVaultLens = execute(oracleLens, utilsLens);
191+
eulerEarnVaultLens = execute(utilsLens);
193192

194193
string memory object;
195194
object = vm.serializeAddress("lens", "eulerEarnVaultLens", eulerEarnVaultLens);
196195
vm.writeJson(object, string.concat(vm.projectRoot(), "/script/", outputScriptFileName));
197196
}
198197

199-
function deploy(address oracleLens, address utilsLens) public broadcast returns (address eulerEarnVaultLens) {
200-
eulerEarnVaultLens = execute(oracleLens, utilsLens);
198+
function deploy(address utilsLens) public broadcast returns (address eulerEarnVaultLens) {
199+
eulerEarnVaultLens = execute(utilsLens);
201200
}
202201

203-
function execute(address oracleLens, address utilsLens) public returns (address eulerEarnVaultLens) {
204-
eulerEarnVaultLens = address(new EulerEarnVaultLens(oracleLens, utilsLens));
202+
function execute(address utilsLens) public returns (address eulerEarnVaultLens) {
203+
eulerEarnVaultLens = address(new EulerEarnVaultLens(utilsLens));
205204
}
206205
}

script/09_Perspectives.s.sol

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -423,15 +423,8 @@ contract EulerEarnPerspectivesDeployer is ScriptUtils {
423423
}
424424

425425
function execute(address eulerEarnFactory) public returns (address[] memory perspectives) {
426-
address evc;
427-
{
428-
(bool success, bytes memory data) = eulerEarnFactory.staticcall(abi.encodeWithSignature("eulerEarnImpl()"));
429-
assert(success && data.length == 32);
430-
evc = EVCUtil(abi.decode(data, (address))).EVC();
431-
}
432-
433426
address eulerEarnFactoryPerspective = address(new EulerEarnFactoryPerspective(eulerEarnFactory));
434-
address governedPerspective = address(new GovernedPerspective(evc, getDeployer()));
427+
address governedPerspective = address(new GovernedPerspective(EVCUtil(eulerEarnFactory).EVC(), getDeployer()));
435428

436429
perspectives = new address[](2);
437430
perspectives[0] = eulerEarnFactoryPerspective;

script/21_EulerEarnFactory.s.sol renamed to script/20_EulerEarnFactory.s.sol

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,26 @@ contract EulerEarnFactory is ScriptUtils {
99
string memory inputScriptFileName = "21_EulerEarnFactory_input.json";
1010
string memory outputScriptFileName = "21_EulerEarnFactory_output.json";
1111
string memory json = getScriptFile(inputScriptFileName);
12-
address eulerEarnImplementation = vm.parseJsonAddress(json, ".eulerEarnImplementation");
12+
address evc = vm.parseJsonAddress(json, ".evc");
13+
address permit2 = vm.parseJsonAddress(json, ".permit2");
14+
address perspective = vm.parseJsonAddress(json, ".perspective");
1315

14-
eulerEarnfactory = execute(eulerEarnImplementation);
16+
eulerEarnfactory = execute(evc, permit2, perspective);
1517

1618
string memory object;
1719
object = vm.serializeAddress("factory", "eulerEarnfactory", eulerEarnfactory);
1820

1921
vm.writeJson(object, string.concat(vm.projectRoot(), "/script/", outputScriptFileName));
2022
}
2123

22-
function deploy(address implementation) public broadcast returns (address factory) {
23-
factory = execute(implementation);
24+
function deploy(address evc, address permit2, address perspective) public broadcast returns (address factory) {
25+
factory = execute(evc, permit2, perspective);
2426
}
2527

26-
function execute(address implementation) public returns (address factory) {
28+
function execute(address evc, address permit2, address perspective) public returns (address factory) {
2729
bytes memory bytecode = abi.encodePacked(
28-
vm.getCode("out-euler-earn/EulerEarnFactory.sol/EulerEarnFactory.json"), abi.encode(implementation)
30+
vm.getCode("out-euler-earn/EulerEarnFactory.sol/EulerEarnFactory.json"),
31+
abi.encode(getDeployer(), evc, permit2, perspective)
2932
);
3033
assembly {
3134
factory := create(0, add(bytecode, 0x20), mload(bytecode))

script/20_EulerEarnImplementation.s.sol

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

script/22_EulerSwapImplementation.s.sol renamed to script/21_EulerSwapImplementation.s.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ pragma solidity ^0.8.0;
44

55
import {ScriptUtils} from "./utils/ScriptUtils.s.sol";
66

7-
contract EulerSwapImplementation is ScriptUtils {
7+
contract EulerSwapImplementationDeployer is ScriptUtils {
88
function run() public broadcast returns (address implementation) {
99
string memory inputScriptFileName = "22_EulerSwapImplementation_input.json";
1010
string memory outputScriptFileName = "22_EulerSwapImplementation_output.json";

0 commit comments

Comments
 (0)