Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
6702d6a
feat: enable sBUIDL as collateral in yield and prime
kasperpawlowski Jun 16, 2025
94531ef
feat: deploy USDT0 vault on base
kasperpawlowski Jun 30, 2025
b49aa4d
fix: oracle ambiguity
kasperpawlowski Jul 1, 2025
d980ea0
feat: vaults whitelisting
kasperpawlowski Jul 2, 2025
61f2b7d
Merge pull request #321 from euler-xyz/base-usdt0
kasperpawlowski Jul 3, 2025
177e8a5
feat: CRS recommendations
kasperpawlowski Jul 3, 2025
9af6eb8
feat: add USDe and sUSDe vaults to Prime
kasperpawlowski Jul 3, 2025
f89caa2
fix: num of optimizations for earn
kasperpawlowski Jul 3, 2025
48a76ee
feat: redeploy Pareto Frontier
kasperpawlowski Jul 4, 2025
d4ec870
Merge pull request #325 from euler-xyz/prime-usde-susde
kasperpawlowski Jul 4, 2025
3c167f7
feat: sUSDS and sUSDC on Arbitrum
kasperpawlowski Jul 4, 2025
93a82c4
feat: finalize EULSwap
kasperpawlowski Jul 7, 2025
992a3f3
feat: frontier reconfiguration [WIP]
kasperpawlowski Jul 7, 2025
db7ec3b
fix: multisend simulations
kasperpawlowski Jul 7, 2025
20c2af9
feat: frontiers upgrade
kasperpawlowski Jul 7, 2025
234db80
feat: MergeSafeBatchBuilderFiles
kasperpawlowski Jul 7, 2025
e4a8881
feat: new frontier vaults whitelisting
kasperpawlowski Jul 7, 2025
3c3b4ba
feat: --skip-oft-hub-chain-config
kasperpawlowski Jul 8, 2025
50527fa
feat: whitelist mock tac vaults
kasperpawlowski Jul 9, 2025
a262b5c
feat: CRS
kasperpawlowski Jul 9, 2025
6a897fb
feat: new frontier markets
kasperpawlowski Jul 9, 2025
af78cbf
feat: whitelist new frontiers
kasperpawlowski Jul 9, 2025
75663ab
feat: --to-block
kasperpawlowski Jul 10, 2025
6038df1
feat: transfer gov
kasperpawlowski Jul 10, 2025
5aba42e
Merge branch 'development' into sbuidl
kasperpawlowski Jul 10, 2025
760e3e7
feat: bring sBUIDL to Prime & Yield
kasperpawlowski Jul 10, 2025
5588a68
Merge branch 'development' into custom-script-merge-safe-txs
kasperpawlowski Jul 10, 2025
649f858
feat: MergeSafeBatchBuilderFiles
kasperpawlowski Jul 10, 2025
12a82da
Merge pull request #326 from euler-xyz/frontier
kasperpawlowski Jul 10, 2025
021b674
feat: EuleEarnVaultLens update
kasperpawlowski Jul 11, 2025
59540d4
feat: MigratePosition
kasperpawlowski Jul 11, 2025
79342d4
feat: CRS
kasperpawlowski Jul 14, 2025
9b234cd
feat: Frontier YieldFi
kasperpawlowski Jul 14, 2025
10537b7
feat: add syrupUSDC to Prime
kasperpawlowski Jul 14, 2025
0f07ef0
feat: whitelist syrupUSDC vault in prime
kasperpawlowski Jul 14, 2025
1c66a71
feat: whitelisting on tac
kasperpawlowski Jul 14, 2025
fe60627
feat: more vaults whitelisting
kasperpawlowski Jul 14, 2025
ec11806
feat: whitelist tac vaults
kasperpawlowski Jul 15, 2025
5c667a0
fix: frontier name
kasperpawlowski Jul 15, 2025
59e71fa
feat: add tETH and rsETH to the arbitrum cluster
kasperpawlowski Jul 17, 2025
1fde1cb
Merge branch 'development' into sbuidl
kasperpawlowski Jul 18, 2025
3161f8b
Merge pull request #312 from euler-xyz/sbuidl
kasperpawlowski Jul 18, 2025
5b04708
feat: CRS
kasperpawlowski Jul 18, 2025
8a72d12
chore: update euler-earn
kasperpawlowski Jul 18, 2025
8914b6e
feat: euler earn lens
kasperpawlowski Jul 18, 2025
dba921e
feat: new PTs in yield
kasperpawlowski Jul 18, 2025
9ddc0be
Merge pull request #328 from euler-xyz/pts
kasperpawlowski Jul 21, 2025
1fae2fb
Merge pull request #327 from euler-xyz/arbitrum-cluster
kasperpawlowski Jul 21, 2025
50cdc39
feat: new vaults whitelisting
kasperpawlowski Jul 21, 2025
89475d9
fix: remove redundant
kasperpawlowski Jul 22, 2025
88008a1
feat: whitelist new vaults
kasperpawlowski Jul 22, 2025
7224075
feat: add pt-tusde vault
kasperpawlowski Jul 22, 2025
2f732f8
Merge pull request #329 from euler-xyz/pt-tusde
kasperpawlowski Jul 22, 2025
c5db085
feat: CRS
kasperpawlowski Jul 22, 2025
38cf866
feat: BridgeEULToLabsMultisig
kasperpawlowski Jul 23, 2025
2a3177b
feat: display labels
kasperpawlowski Jul 24, 2025
7d05be7
feat: whitelist new vaults
kasperpawlowski Jul 24, 2025
d5d2a9b
feat: add new PTs to frontiers
kasperpawlowski Jul 24, 2025
d5fe2a2
feat: CRS
kasperpawlowski Jul 29, 2025
fbb94f8
feat: offboarding in yield
kasperpawlowski Jul 29, 2025
4eaf6e5
feat: add ezeth to the cluster
kasperpawlowski Jul 29, 2025
af7470d
feat: frontier hyperwave
kasperpawlowski Jul 29, 2025
9b98378
feat: whitelist new frontier cluster
kasperpawlowski Jul 29, 2025
6af5934
whitelist new TAC vaults in Edge Capital cluster
hoytech Jul 29, 2025
edaf153
Merge pull request #333 from euler-xyz/tac-new-edge-capital-vaults
kasperpawlowski Jul 29, 2025
dcd64dc
feat: whitelist mev capital vaults
kasperpawlowski Jul 29, 2025
c4f302e
Merge pull request #332 from euler-xyz/frontier
kasperpawlowski Jul 31, 2025
872dc5b
Merge pull request #331 from euler-xyz/ezeth
kasperpawlowski Jul 31, 2025
559d9de
Merge pull request #330 from euler-xyz/offboarding
kasperpawlowski Jul 31, 2025
dc2effe
feat: CRS
kasperpawlowski Aug 4, 2025
061abb2
feat: add pt-pusde to yield
kasperpawlowski Aug 4, 2025
ddb06a9
feat: add xaut to prime
kasperpawlowski Aug 4, 2025
d91ef58
add fixed cyclical binary irm
dglowinski Aug 6, 2025
6fa211d
Merge pull request #335 from euler-xyz/xaut
kasperpawlowski Aug 6, 2025
10ecd37
Merge pull request #334 from euler-xyz/pt-pusde
kasperpawlowski Aug 6, 2025
73c539f
feat: CRS
kasperpawlowski Aug 6, 2025
8b52410
feat: CRS
kasperpawlowski Aug 7, 2025
f235329
feat: CRS
kasperpawlowski Aug 9, 2025
311ed30
chore: forge fmt
kasperpawlowski Aug 9, 2025
26d4b23
feat: checkKeyringCredentialOrWildCard for HookTargetAccessControlKey…
kasperpawlowski Aug 9, 2025
a5d61e9
feat: whitelist TAC vaults
kasperpawlowski Aug 11, 2025
d53ff93
feat: same assets vault in the cluster - improvements
kasperpawlowski Aug 11, 2025
5b716f4
feat: linea cluster deployment
kasperpawlowski Aug 11, 2025
d04beaa
feat: verification check script
kasperpawlowski Aug 11, 2025
6f743f8
chore: add safe base url for linea
kasperpawlowski Aug 11, 2025
c577e54
Merge remote-tracking branch 'origin/irm-cyclical-binary' into develo…
kasperpawlowski Aug 11, 2025
dfe6641
feat: add kinky and fixed cyclical binary IRMs
kasperpawlowski Aug 11, 2025
2280ac1
feat: CRS + remove phased out vaults from yield
kasperpawlowski Aug 12, 2025
1606070
feat: update euler earn lens
kasperpawlowski Aug 12, 2025
74526c8
fix: new IRM factories deployment
kasperpawlowski Aug 12, 2025
f5b8ec9
chore: update euler-earn
kasperpawlowski Aug 12, 2025
8e343c2
fix: deployment
kasperpawlowski Aug 12, 2025
b59212a
feat: configure the oracle router only if needed
kasperpawlowski Aug 13, 2025
519ea36
feat: wrsETH cluster on Linea
kasperpawlowski Aug 13, 2025
ec2bd7e
feat: remove phased out vaults
kasperpawlowski Aug 13, 2025
8c4e1ce
feat: frontier USDai
kasperpawlowski Aug 13, 2025
36b0362
feat: CRS
kasperpawlowski Aug 14, 2025
d6a82cf
feat: frontier strata
kasperpawlowski Aug 14, 2025
eb0464f
feat: USDai K3 remarks
kasperpawlowski Aug 14, 2025
317952a
Merge branch 'usdai' into development
kasperpawlowski Aug 15, 2025
3cf44fb
feat: public allocator deployment
kasperpawlowski Aug 15, 2025
de02e40
feat: earn vaults whitelisting
kasperpawlowski Aug 18, 2025
3d1626f
feat: whitelist linea vaults
kasperpawlowski Aug 18, 2025
d7fa98a
feat: CRS
kasperpawlowski Aug 19, 2025
203e368
feat: offboard expired PT tokens from Yield
kasperpawlowski Aug 19, 2025
0f679c8
Merge branch 'pt-offboarding' into development
kasperpawlowski Aug 19, 2025
a3ac2d2
whitelist new linea vaults
kanvgupta Aug 20, 2025
4bf543c
fix: vault whitelisting options
kasperpawlowski Aug 20, 2025
9039edb
feat: CRS
kasperpawlowski Aug 20, 2025
c87cd5e
Merge branch 'development' of https://github.com/euler-xyz/evk-periph…
kasperpawlowski Aug 20, 2025
e04bc55
feat: CRS
kasperpawlowski Aug 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions script/02_PeripheryFactories.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {EulerRouterFactory} from "../src/EulerRouterFactory/EulerRouterFactory.s
import {SnapshotRegistry} from "../src/SnapshotRegistry/SnapshotRegistry.sol";
import {EulerKinkIRMFactory} from "../src/IRMFactory/EulerKinkIRMFactory.sol";
import {EulerKinkyIRMFactory} from "../src/IRMFactory/EulerKinkyIRMFactory.sol";
import {EulerFixedCyclicalBinaryIRMFactory} from "../src/IRMFactory/EulerFixedCyclicalBinaryIRMFactory.sol";
import {EulerIRMAdaptiveCurveFactory} from "../src/IRMFactory/EulerIRMAdaptiveCurveFactory.sol";
import {GovernorAccessControlEmergencyFactory} from "../src/GovernorFactory/GovernorAccessControlEmergencyFactory.sol";
import {CapRiskStewardFactory} from "../src/GovernorFactory/CapRiskStewardFactory.sol";
Expand All @@ -18,6 +19,7 @@ contract PeripheryFactories is ScriptUtils {
address externalVaultRegistry;
address kinkIRMFactory;
address kinkyIRMFactory;
address fixedCyclicalBinaryIRMFactory;
address adaptiveCurveIRMFactory;
address irmRegistry;
address governorAccessControlEmergencyFactory;
Expand All @@ -40,6 +42,9 @@ contract PeripheryFactories is ScriptUtils {
vm.serializeAddress("peripheryFactories", "externalVaultRegistry", deployedContracts.externalVaultRegistry);
object = vm.serializeAddress("peripheryFactories", "kinkIRMFactory", deployedContracts.kinkIRMFactory);
object = vm.serializeAddress("peripheryFactories", "kinkyIRMFactory", deployedContracts.kinkyIRMFactory);
object = vm.serializeAddress(
"peripheryFactories", "fixedCyclicalBinaryIRMFactory", deployedContracts.fixedCyclicalBinaryIRMFactory
);
object = vm.serializeAddress(
"peripheryFactories", "adaptiveCurveIRMFactory", deployedContracts.adaptiveCurveIRMFactory
);
Expand All @@ -64,6 +69,7 @@ contract PeripheryFactories is ScriptUtils {
deployedContracts.externalVaultRegistry = address(new SnapshotRegistry(evc, getDeployer()));
deployedContracts.kinkIRMFactory = address(new EulerKinkIRMFactory());
deployedContracts.kinkyIRMFactory = address(new EulerKinkyIRMFactory());
deployedContracts.fixedCyclicalBinaryIRMFactory = address(new EulerFixedCyclicalBinaryIRMFactory());
deployedContracts.adaptiveCurveIRMFactory = address(new EulerIRMAdaptiveCurveFactory());
deployedContracts.irmRegistry = address(new SnapshotRegistry(evc, getDeployer()));
deployedContracts.governorAccessControlEmergencyFactory =
Expand Down
62 changes: 47 additions & 15 deletions script/08_Lenses.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,17 @@ contract Lenses is ScriptUtils {
address oracleAdapterRegistry = vm.parseJsonAddress(json, ".oracleAdapterRegistry");
address kinkIRMFactory = vm.parseJsonAddress(json, ".kinkIRMFactory");
address adaptiveCurveIRMFactory = vm.parseJsonAddress(json, ".adaptiveCurveIRMFactory");

lenses = execute(eVaultFactory, oracleAdapterRegistry, kinkIRMFactory, adaptiveCurveIRMFactory);
address kinkyIRMFactory = vm.parseJsonAddress(json, ".kinkyIRMFactory");
address fixedCyclicalBinaryIRMFactory = vm.parseJsonAddress(json, ".fixedCyclicalBinaryIRMFactory");

lenses = execute(
eVaultFactory,
oracleAdapterRegistry,
kinkIRMFactory,
adaptiveCurveIRMFactory,
kinkyIRMFactory,
fixedCyclicalBinaryIRMFactory
);

string memory object;
object = vm.serializeAddress("lenses", "accountLens", lenses[0]);
Expand All @@ -36,21 +45,34 @@ contract Lenses is ScriptUtils {
address eVaultFactory,
address oracleAdapterRegistry,
address kinkIRMFactory,
address adaptiveCurveIRMFactory
address adaptiveCurveIRMFactory,
address kinkyIRMFactory,
address fixedCyclicalBinaryIRMFactory
) public broadcast returns (address[] memory lenses) {
lenses = execute(eVaultFactory, oracleAdapterRegistry, kinkIRMFactory, adaptiveCurveIRMFactory);
lenses = execute(
eVaultFactory,
oracleAdapterRegistry,
kinkIRMFactory,
adaptiveCurveIRMFactory,
kinkyIRMFactory,
fixedCyclicalBinaryIRMFactory
);
}

function execute(
address eVaultFactory,
address oracleAdapterRegistry,
address kinkIRMFactory,
address adaptiveCurveIRMFactory
address adaptiveCurveIRMFactory,
address kinkyIRMFactory,
address fixedCyclicalBinaryIRMFactory
) public returns (address[] memory lenses) {
lenses = new address[](6);
lenses[0] = address(new AccountLens());
lenses[1] = address(new OracleLens(oracleAdapterRegistry));
lenses[2] = address(new IRMLens(kinkIRMFactory, adaptiveCurveIRMFactory));
lenses[2] = address(
new IRMLens(kinkIRMFactory, adaptiveCurveIRMFactory, kinkyIRMFactory, fixedCyclicalBinaryIRMFactory)
);
lenses[3] = address(new UtilsLens(eVaultFactory, address(lenses[1])));
lenses[4] = address(new VaultLens(address(lenses[1]), address(lenses[3]), address(lenses[2])));
lenses[5] = address(new EulerEarnVaultLens(address(lenses[3])));
Expand Down Expand Up @@ -107,24 +129,34 @@ contract LensIRMDeployer is ScriptUtils {
string memory json = getScriptFile(inputScriptFileName);
address kinkIRMFactory = vm.parseJsonAddress(json, ".kinkIRMFactory");
address adaptiveCurveIRMFactory = vm.parseJsonAddress(json, ".adaptiveCurveIRMFactory");
address kinkyIRMFactory = vm.parseJsonAddress(json, ".kinkyIRMFactory");
address fixedCyclicalBinaryIRMFactory = vm.parseJsonAddress(json, ".fixedCyclicalBinaryIRMFactory");

irmLens = execute(kinkIRMFactory, adaptiveCurveIRMFactory);
irmLens = execute(kinkIRMFactory, adaptiveCurveIRMFactory, kinkyIRMFactory, fixedCyclicalBinaryIRMFactory);

string memory object;
object = vm.serializeAddress("lens", "irmLens", irmLens);
vm.writeJson(object, string.concat(vm.projectRoot(), "/script/", outputScriptFileName));
}

function deploy(address kinkIRMFactory, address adaptiveCurveIRMFactory)
public
broadcast
returns (address irmLens)
{
irmLens = execute(kinkIRMFactory, adaptiveCurveIRMFactory);
function deploy(
address kinkIRMFactory,
address adaptiveCurveIRMFactory,
address kinkyIRMFactory,
address fixedCyclicalBinaryIRMFactory
) public broadcast returns (address irmLens) {
irmLens = execute(kinkIRMFactory, adaptiveCurveIRMFactory, kinkyIRMFactory, fixedCyclicalBinaryIRMFactory);
}

function execute(address kinkIRMFactory, address adaptiveCurveIRMFactory) public returns (address irmLens) {
irmLens = address(new IRMLens(kinkIRMFactory, adaptiveCurveIRMFactory));
function execute(
address kinkIRMFactory,
address adaptiveCurveIRMFactory,
address kinkyIRMFactory,
address fixedCyclicalBinaryIRMFactory
) public returns (address irmLens) {
irmLens = address(
new IRMLens(kinkIRMFactory, adaptiveCurveIRMFactory, kinkyIRMFactory, fixedCyclicalBinaryIRMFactory)
);
}
}

Expand Down
26 changes: 20 additions & 6 deletions script/20_EulerEarnFactory.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -4,34 +4,48 @@ pragma solidity ^0.8.0;

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

contract EulerEarnFactory is ScriptUtils {
function run() public broadcast returns (address eulerEarnfactory) {
contract EulerEarnFactoryDeployer is ScriptUtils {
function run() public broadcast returns (address eulerEarnfactory, address eulerEarnPublicAllocator) {
string memory inputScriptFileName = "21_EulerEarnFactory_input.json";
string memory outputScriptFileName = "21_EulerEarnFactory_output.json";
string memory json = getScriptFile(inputScriptFileName);
address evc = vm.parseJsonAddress(json, ".evc");
address permit2 = vm.parseJsonAddress(json, ".permit2");
address perspective = vm.parseJsonAddress(json, ".perspective");

eulerEarnfactory = execute(evc, permit2, perspective);
(eulerEarnfactory, eulerEarnPublicAllocator) = execute(evc, permit2, perspective);

string memory object;
object = vm.serializeAddress("factory", "eulerEarnfactory", eulerEarnfactory);
object = vm.serializeAddress("publicAllocator", "eulerEarnPublicAllocator", eulerEarnPublicAllocator);

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

function deploy(address evc, address permit2, address perspective) public broadcast returns (address factory) {
factory = execute(evc, permit2, perspective);
function deploy(address evc, address permit2, address perspective)
public
broadcast
returns (address factory, address publicAllocator)
{
(factory, publicAllocator) = execute(evc, permit2, perspective);
}

function execute(address evc, address permit2, address perspective) public returns (address factory) {
function execute(address evc, address permit2, address perspective)
public
returns (address factory, address publicAllocator)
{
bytes memory bytecode = abi.encodePacked(
vm.getCode("out-euler-earn/EulerEarnFactory.sol/EulerEarnFactory.json"),
abi.encode(getDeployer(), evc, permit2, perspective)
);
assembly {
factory := create(0, add(bytecode, 0x20), mload(bytecode))
}

bytecode =
abi.encodePacked(vm.getCode("out-euler-earn/PublicAllocator.sol/PublicAllocator.json"), abi.encode(evc));
assembly {
publicAllocator := create(0, add(bytecode, 0x20), mload(bytecode))
}
}
}
35 changes: 18 additions & 17 deletions script/50_CoreAndPeriphery.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import {EVaultFactoryGovernorDeployer, TimelockControllerDeployer} from "./12_Go
import {TermsOfUseSignerDeployer} from "./13_TermsOfUseSigner.s.sol";
import {OFTAdapterUpgradeableDeployer, MintBurnOFTAdapterDeployer} from "./14_OFT.s.sol";
import {EdgeFactoryDeployer} from "./15_EdgeFactory.s.sol";
import {EulerEarnFactory} from "./20_EulerEarnFactory.s.sol";
import {EulerEarnFactoryDeployer} from "./20_EulerEarnFactory.s.sol";
import {EulerSwapImplementationDeployer} from "./21_EulerSwapImplementation.s.sol";
import {EulerSwapFactoryDeployer} from "./22_EulerSwapFactory.s.sol";
import {EulerSwapPeripheryDeployer} from "./23_EulerSwapPeriphery.s.sol";
Expand Down Expand Up @@ -99,9 +99,6 @@ contract CoreAndPeriphery is BatchBuilder, SafeMultisendBuilder {
int256 adjustmentSpeed;
}

mapping(uint256 chainId => bool isHarvestCoolDownCheckOn) internal EULER_EARN_HARVEST_COOL_DOWN_CHECK_ON;
uint256[1] internal EULER_EARN_HARVEST_COOL_DOWN_CHECK_ON_CHAIN_IDS = [1];

address internal constant BURN_ADDRESS = address(0xdead);
uint256 internal constant EUL_HUB_CHAIN_ID = 1;
uint8 internal constant EUL_DECIMALS = 18;
Expand Down Expand Up @@ -138,11 +135,6 @@ contract CoreAndPeriphery is BatchBuilder, SafeMultisendBuilder {
AdaptiveCurveIRMParams[] internal DEFAULT_ADAPTIVE_CURVE_IRMS_PARAMS;

constructor() {
for (uint256 i = 0; i < EULER_EARN_HARVEST_COOL_DOWN_CHECK_ON_CHAIN_IDS.length; ++i) {
uint256 chainId = EULER_EARN_HARVEST_COOL_DOWN_CHECK_ON_CHAIN_IDS[i];
EULER_EARN_HARVEST_COOL_DOWN_CHECK_ON[chainId] = true;
}

for (uint256 i = 0; i < IRM_INITIAL_RATES_AT_TARGET.length; ++i) {
DEFAULT_ADAPTIVE_CURVE_IRMS_PARAMS.push(
AdaptiveCurveIRMParams({
Expand Down Expand Up @@ -472,7 +464,10 @@ contract CoreAndPeriphery is BatchBuilder, SafeMultisendBuilder {
console.log("- OFT Adapter already deployed. Skipping...");
}

if (containsOftHubChainId(block.chainid) && bridgeAddresses.oftAdapter != address(0)) {
if (
containsOftHubChainId(block.chainid) && bridgeAddresses.oftAdapter != address(0)
&& !getSkipOFTHubChainConfig()
) {
console.log("+ Attempting to configure OFT Adapter on chain %s", block.chainid);

LayerZeroUtil lzUtil = new LayerZeroUtil();
Expand Down Expand Up @@ -661,6 +656,7 @@ contract CoreAndPeriphery is BatchBuilder, SafeMultisendBuilder {
&& peripheryAddresses.oracleAdapterRegistry == address(0)
&& peripheryAddresses.externalVaultRegistry == address(0) && peripheryAddresses.kinkIRMFactory == address(0)
&& peripheryAddresses.kinkyIRMFactory == address(0)
&& peripheryAddresses.fixedCyclicalBinaryIRMFactory == address(0)
&& peripheryAddresses.adaptiveCurveIRMFactory == address(0) && peripheryAddresses.irmRegistry == address(0)
&& peripheryAddresses.governorAccessControlEmergencyFactory == address(0)
&& peripheryAddresses.capRiskStewardFactory == address(0)
Expand All @@ -674,6 +670,7 @@ contract CoreAndPeriphery is BatchBuilder, SafeMultisendBuilder {
peripheryAddresses.externalVaultRegistry = peripheryContracts.externalVaultRegistry;
peripheryAddresses.kinkIRMFactory = peripheryContracts.kinkIRMFactory;
peripheryAddresses.kinkyIRMFactory = peripheryContracts.kinkyIRMFactory;
peripheryAddresses.fixedCyclicalBinaryIRMFactory = peripheryContracts.fixedCyclicalBinaryIRMFactory;
peripheryAddresses.adaptiveCurveIRMFactory = peripheryContracts.adaptiveCurveIRMFactory;
peripheryAddresses.irmRegistry = peripheryContracts.irmRegistry;
peripheryAddresses.governorAccessControlEmergencyFactory =
Expand Down Expand Up @@ -859,13 +856,13 @@ contract CoreAndPeriphery is BatchBuilder, SafeMultisendBuilder {
console.log("- EulerUngovernedNzxPerspective already deployed. Skipping...");
}

if (coreAddresses.eulerEarnFactory == address(0)) {
console.log("+ Deploying EulerEarn factory...");
EulerEarnFactory deployer = new EulerEarnFactory();
coreAddresses.eulerEarnFactory =
if (coreAddresses.eulerEarnFactory == address(0) && peripheryAddresses.eulerEarnPublicAllocator == address(0)) {
console.log("+ Deploying EulerEarn factory and public allocator...");
EulerEarnFactoryDeployer deployer = new EulerEarnFactoryDeployer();
(coreAddresses.eulerEarnFactory, peripheryAddresses.eulerEarnPublicAllocator) =
deployer.deploy(coreAddresses.evc, coreAddresses.permit2, peripheryAddresses.evkFactoryPerspective);
} else {
console.log("- EulerEarn factory already deployed. Skipping...");
console.log("- EulerEarn factory and public allocator already deployed. Skipping...");
if (vm.isDir("out-euler-earn")) vm.removeDir("out-euler-earn", true);
}

Expand Down Expand Up @@ -927,8 +924,12 @@ contract CoreAndPeriphery is BatchBuilder, SafeMultisendBuilder {
if (lensAddresses.irmLens == address(0)) {
console.log("+ Deploying LensIRM...");
LensIRMDeployer deployer = new LensIRMDeployer();
lensAddresses.irmLens =
deployer.deploy(peripheryAddresses.kinkIRMFactory, peripheryAddresses.adaptiveCurveIRMFactory);
lensAddresses.irmLens = deployer.deploy(
peripheryAddresses.kinkIRMFactory,
peripheryAddresses.adaptiveCurveIRMFactory,
peripheryAddresses.kinkyIRMFactory,
peripheryAddresses.fixedCyclicalBinaryIRMFactory
);
} else {
console.log("- LensIRM already deployed. Skipping...");
}
Expand Down
10 changes: 8 additions & 2 deletions script/interactiveDeployment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ if ! script/utils/checkEnvironment.sh "$@"; then
exit 1
fi

eulerEarnCompilerOptions="--via-ir --optimize --optimizer-runs 800 --use 0.8.26 --out out-euler-earn"
eulerEarnCompilerOptions="--via-ir --optimize --optimizer-runs 200 --use 0.8.26 --out out-euler-earn"
eulerSwapCompilerOptions="--optimize --optimizer-runs 1000000 --use 0.8.27 --out out-euler-swap"

while true; do
Expand Down Expand Up @@ -779,10 +779,16 @@ while true; do
--arg eVaultFactory "$eVaultFactory" \
--arg oracleAdapterRegistry "$oracle_adapter_registry" \
--arg kinkIRMFactory "$kink_irm_factory" \
--arg adaptiveCurveIRMFactory "$adaptive_curve_irm_factory" \
--arg kinkyIRMFactory "$kinky_irm_factory" \
--arg fixedCyclicalBinaryIRMFactory "$fixed_cyclical_binary_irm_factory" \
'{
eVaultFactory: $eVaultFactory,
oracleAdapterRegistry: $oracleAdapterRegistry,
kinkIRMFactory: $kinkIRMFactory
kinkIRMFactory: $kinkIRMFactory,
adaptiveCurveIRMFactory: $adaptiveCurveIRMFactory,
kinkyIRMFactory: $kinkyIRMFactory,
fixedCyclicalBinaryIRMFactory: $fixedCyclicalBinaryIRMFactory
}' --indent 4 > script/${jsonName}_input.json
;;
1)
Expand Down
17 changes: 12 additions & 5 deletions script/production/ConfigWhitelistGovernedPerspective.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ eval 'set -- $SCRIPT_ARGS'
addresses_dir_path="${ADDRESSES_DIR_PATH%/}/$(cast chain-id --rpc-url $DEPLOYMENT_RPC_URL)"
evc=$(jq -r '.evc' "$addresses_dir_path/CoreAddresses.json")

if [[ "$@" != *"--earn"* && "$@" != *"--evk"* ]]; then
echo "Error: Either --earn or --evk option must be provided"
echo "Usage: $0 <csv_file_path> [--earn|--evk] [other_options...]"
exit 1
fi

if [[ "$@" == *"--earn"* ]]; then
governed_perspective=$(jq -r '.eulerEarnGovernedPerspective' "$addresses_dir_path/PeripheryAddresses.json")
else
Expand Down Expand Up @@ -100,6 +106,7 @@ items="["

while IFS=, read -r -a columns || [ -n "$columns" ]; do
vault="${columns[0]}"
label="${columns[1]}"
whitelist="${columns[2]}"

if [[ "$vault" == "Vault" ]]; then
Expand All @@ -110,20 +117,20 @@ while IFS=, read -r -a columns || [ -n "$columns" ]; do

if [[ "$whitelist" == "Yes" ]]; then
if [[ $isVerified == *false* ]]; then
echo "Adding 'perspectiveVerify' batch item for vault $vault"
echo "Adding 'perspectiveVerify' batch item for vault $vault ($label)"
items+="($governed_perspective,$onBehalfOf,0,$(cast calldata "perspectiveVerify(address,bool)" $vault true)),"
elif [[ "$verbose" == "--verbose" ]]; then
echo "Vault $vault is already verified. Skipping..."
echo "Vault $vault ($label) is already verified. Skipping..."
fi
elif [[ "$whitelist" == "No" ]]; then
if [[ $isVerified == *true* ]]; then
echo "Adding 'perspectiveUnverify' batch item for vault $vault"
echo "Adding 'perspectiveUnverify' batch item for vault $vault ($label)"
items+="($governed_perspective,$onBehalfOf,0,$(cast calldata "perspectiveUnverify(address)" $vault)),"
elif [[ "$verbose" == "--verbose" ]]; then
echo "Vault $vault is not verified. Skipping..."
echo "Vault $vault ($label) is not verified. Skipping..."
fi
else
echo "Invalid Whitelist value for vault $vault. Skipping..."
echo "Invalid Whitelist value for vault $vault ($label). Skipping..."
fi
done < <(tr -d '\r' < "$csv_file")

Expand Down
Loading