Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Spark ALM Controller
# Sky Star ALM Controller

**This repository was cloned from spark [ALM Controller](https://github.com/sparkdotfi/spark-alm-controller)**

![Foundry CI](https://github.com/marsfoundation/spark-alm-controller/actions/workflows/ci.yml/badge.svg)
[![Foundry][foundry-badge]][foundry]
Expand Down
19 changes: 17 additions & 2 deletions deploy/ControllerDeploy.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity >=0.8.0;

import { Ethereum } from "spark-address-registry/Ethereum.sol";

import { ALMProxy } from "../src/ALMProxy.sol";
import { ForeignController } from "../src/ForeignController.sol";
import { MainnetController } from "../src/MainnetController.sol";
Expand Down Expand Up @@ -54,6 +56,17 @@ library ForeignControllerDeploy {
}

library MainnetControllerDeploy {

function _addresses() internal pure returns (MainnetController.Addresses memory addresses) {
return MainnetController.Addresses({
USDS : Ethereum.USDS,
USDE : Ethereum.USDE,
SUSDE : Ethereum.SUSDE,
USTB : Ethereum.USTB,
ETHENA_MINTER : Ethereum.ETHENA_MINTER,
SUPERSTATE_REDEMPTION : Ethereum.SUPERSTATE_REDEMPTION
});
}

function deployController(
address admin,
Expand All @@ -73,7 +86,8 @@ library MainnetControllerDeploy {
vault_ : vault,
psm_ : psm,
daiUsds_ : daiUsds,
cctp_ : cctp
cctp_ : cctp,
addresses : _addresses()
}));
}

Expand All @@ -96,7 +110,8 @@ library MainnetControllerDeploy {
vault_ : vault,
psm_ : psm,
daiUsds_ : daiUsds,
cctp_ : cctp
cctp_ : cctp,
addresses : _addresses()
}));
}

Expand Down
29 changes: 20 additions & 9 deletions src/MainnetController.sol
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ import { AccessControl } from "openzeppelin-contracts/contracts/access/AccessCon
import { IERC20 } from "openzeppelin-contracts/contracts/interfaces/IERC20.sol";
import { IERC4626 } from "openzeppelin-contracts/contracts/interfaces/IERC4626.sol";

import { Ethereum } from "spark-address-registry/Ethereum.sol";

import { IALMProxy } from "./interfaces/IALMProxy.sol";
import { ICCTPLike } from "./interfaces/CCTPInterfaces.sol";
import { IRateLimits } from "./interfaces/IRateLimits.sol";
Expand Down Expand Up @@ -83,6 +81,18 @@ contract MainnetController is AccessControl {

using OptionsBuilder for bytes;

/**********************************************************************************************/
/*** Structs ***/
/**********************************************************************************************/
struct Addresses {
address USDS;
address USDE;
address SUSDE;
address USTB;
address ETHENA_MINTER;
address SUPERSTATE_REDEMPTION;
}

/**********************************************************************************************/
/*** Events ***/
/**********************************************************************************************/
Expand Down Expand Up @@ -161,7 +171,8 @@ contract MainnetController is AccessControl {
address vault_,
address psm_,
address daiUsds_,
address cctp_
address cctp_,
Addresses memory addresses
) {
_grantRole(DEFAULT_ADMIN_ROLE, admin_);

Expand All @@ -173,15 +184,15 @@ contract MainnetController is AccessControl {
daiUsds = IDaiUsdsLike(daiUsds_);
cctp = ICCTPLike(cctp_);

ethenaMinter = IEthenaMinterLike(Ethereum.ETHENA_MINTER);
superstateRedemption = ISSRedemptionLike(Ethereum.SUPERSTATE_REDEMPTION);
ethenaMinter = IEthenaMinterLike(addresses.ETHENA_MINTER);
superstateRedemption = ISSRedemptionLike(addresses.SUPERSTATE_REDEMPTION);

susde = ISUSDELike(Ethereum.SUSDE);
ustb = IUSTBLike(Ethereum.USTB);
susde = ISUSDELike(addresses.SUSDE);
ustb = IUSTBLike(addresses.USTB);
dai = IERC20(daiUsds.dai());
usdc = IERC20(psm.gem());
usds = IERC20(Ethereum.USDS);
usde = IERC20(Ethereum.USDE);
usds = IERC20(addresses.USDS);
usde = IERC20(addresses.USDE);

psmTo18ConversionFactor = psm.to18ConversionFactor();
}
Expand Down
15 changes: 12 additions & 3 deletions test/mainnet-fork/Approve.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,9 @@ contract MainnetControllerHarness is MainnetController {
address vault_,
address psm_,
address daiUsds_,
address cctp_
) MainnetController(admin_, proxy_, rateLimits_, vault_, psm_, daiUsds_, cctp_) {}
address cctp_,
MainnetController.Addresses memory addresses_
) MainnetController(admin_, proxy_, rateLimits_, vault_, psm_, daiUsds_, cctp_, addresses_) {}

function approve(address token, address spender, uint256 amount) external {
_approve(token, spender, amount);
Expand Down Expand Up @@ -132,7 +133,15 @@ contract MainnetControllerApproveSuccessTests is ApproveTestBase {
address(mainnetController.vault()),
address(mainnetController.psm()),
address(mainnetController.daiUsds()),
address(mainnetController.cctp())
address(mainnetController.cctp()),
MainnetController.Addresses({
USDS : address(mainnetController.usds()),
USDE : address(mainnetController.usde()),
SUSDE : address(mainnetController.susde()),
USTB : address(mainnetController.ustb()),
ETHENA_MINTER : address(mainnetController.ethenaMinter()),
SUPERSTATE_REDEMPTION : address(mainnetController.superstateRedemption())
})
);

vm.etch(address(mainnetController), address(harnessCode).code);
Expand Down
12 changes: 11 additions & 1 deletion test/unit/controllers/Admin.t.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.8.21;

import { Ethereum } from "spark-address-registry/Ethereum.sol";

import { ForeignController } from "../../../src/ForeignController.sol";
import { MainnetController } from "../../../src/MainnetController.sol";

Expand Down Expand Up @@ -35,7 +37,15 @@ contract MainnetControllerAdminTestBase is UnitTestBase {
address(vault),
address(psm),
address(daiUsds),
makeAddr("cctp")
makeAddr("cctp"),
MainnetController.Addresses({
USDS : Ethereum.USDS,
USDE : Ethereum.USDE,
SUSDE : Ethereum.SUSDE,
USTB : Ethereum.USTB,
ETHENA_MINTER : Ethereum.ETHENA_MINTER,
SUPERSTATE_REDEMPTION : Ethereum.SUPERSTATE_REDEMPTION
})
);
}

Expand Down
12 changes: 11 additions & 1 deletion test/unit/controllers/Constructor.t.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.8.21;

import { Ethereum } from "spark-address-registry/Ethereum.sol";

import { ForeignController } from "../../../src/ForeignController.sol";
import { MainnetController } from "../../../src/MainnetController.sol";

Expand All @@ -25,7 +27,15 @@ contract MainnetControllerConstructorTests is UnitTestBase {
address(vault),
address(psm),
address(daiUsds),
makeAddr("cctp")
makeAddr("cctp"),
MainnetController.Addresses({
USDS : Ethereum.USDS,
USDE : Ethereum.USDE,
SUSDE : Ethereum.SUSDE,
USTB : Ethereum.USTB,
ETHENA_MINTER : Ethereum.ETHENA_MINTER,
SUPERSTATE_REDEMPTION : Ethereum.SUPERSTATE_REDEMPTION
})
);

assertEq(mainnetController.hasRole(DEFAULT_ADMIN_ROLE, admin), true);
Expand Down
12 changes: 11 additions & 1 deletion test/unit/controllers/Freezer.t.sol
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity ^0.8.21;

import { Ethereum } from "spark-address-registry/Ethereum.sol";

import { MainnetController } from "../../../src/MainnetController.sol";
import { ForeignController } from "../../../src/ForeignController.sol";

Expand Down Expand Up @@ -32,7 +34,15 @@ contract MainnetControllerRemoveRelayerTests is UnitTestBase {
address(vault),
address(psm),
address(daiUsds),
makeAddr("cctp")
makeAddr("cctp"),
MainnetController.Addresses({
USDS : Ethereum.USDS,
USDE : Ethereum.USDE,
SUSDE : Ethereum.SUSDE,
USTB : Ethereum.USTB,
ETHENA_MINTER : Ethereum.ETHENA_MINTER,
SUPERSTATE_REDEMPTION : Ethereum.SUPERSTATE_REDEMPTION
})
);

vm.startPrank(admin);
Expand Down