Skip to content

Commit

Permalink
feat: add krEUR deploy
Browse files Browse the repository at this point in the history
  • Loading branch information
fxp3 committed May 6, 2024
1 parent 9b0993f commit 2108481
Show file tree
Hide file tree
Showing 9 changed files with 77 additions and 29 deletions.
12 changes: 10 additions & 2 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ hasPM2 := `bunx pm2 | grep -q 'usage: pm2' && echo true || echo false`
@deploy script sig:
forge script $1 --sig "$2()" --ffi --broadcast \
--chain arbitrum \
--fork-url "$RPC_ARBITRUM_INFURA" \
--fork-url "$RPC_ARBITRUM_URL" \
--verify

@resume script sig:
forge script $1 --sig "$2()" --ffi --broadcast \
--chain arbitrum \
--skip-simulation \
--rpc-url "$RPC_ARBITRUM_INFURA" \
--rpc-url "$RPC_ARBITRUM_URL" \
--verify \
--resume

Expand Down Expand Up @@ -221,6 +221,14 @@ set positional-arguments
forge script $1 --sig "$2()" --ffi --broadcast --skip-simulation -vvv && \
echo "-> $1.$2() ran successfully"

@send-fork script func:
forge script $1 --sig "$2()" --ffi --broadcast --skip-simulation -vvv --unlocked --fork-url "https://rpc.tenderly.co/fork/ca98ed00-27df-4838-bdff-0cb955211c5a" && \
echo "-> $1.$2() ran successfully"

@resume-fork script func:
forge script $1 --sig "$2()" --ffi --broadcast --skip-simulation -vvv --unlocked --rpc-url "https://rpc.tenderly.co/fork/ca98ed00-27df-4838-bdff-0cb955211c5a" --resume && \
echo "-> $1.$2() ran successfully"

@test func:
forge test --mt ".*$1.*" --ffi -vvv && \
echo "-> $1.$2() ran successfully"
Expand Down
1 change: 1 addition & 0 deletions out/foundry/deploy/42161/krEUR-latest.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion out/foundry/deploy/42161/market-status-update-latest.json

Large diffs are not rendered by default.

23 changes: 10 additions & 13 deletions src/contracts/scripts/MarketStatus.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,20 @@ import {ProtocolUpgrader} from "scripts/utils/ProtocolUpgrader.s.sol";
import {DataV2} from "periphery/DataV2.sol";
import {IMarketStatus} from "common/interfaces/IMarketStatus.sol";
import {deployPayload} from "scripts/payloads/Payloads.sol";
import {krEURTask} from "scripts/tasks/krEUR.s.sol";

// solhint-disable no-empty-blocks, reason-string, state-visibility

contract MarketStatusUpdate is ProtocolUpgrader, ArbScript {
contract MarketStatusUpdate is ProtocolUpgrader, krEURTask {
using Log for *;
using Help for *;

address sender;
IMarketStatus provider = IMarketStatus(0xf6188e085ebEB716a730F8ecd342513e72C8AD04);
DataV2 dataV2;
address krEURAddr;

function setUp() public virtual {
vm.createSelectFork("arbitrum");
useMnemonic("MNEMONIC");
initUpgrader(kreskoAddr, factoryAddr, CreateMode.Create2);
}
Expand All @@ -30,18 +31,14 @@ contract MarketStatusUpdate is ProtocolUpgrader, ArbScript {
dataV2 = newDataV2;
}

function payload0010() public output("market-status-update") {
function execAll() public {
broadcastWith(safe);
createFacetCut("CommonConfigFacet");
createFacetCut("CommonStateFacet");
createFacetCut("AssetStateFacet");
createFacetCut("MinterMintFacet");
createFacetCut("MinterBurnFacet");
createFacetCut("SCDPSwapFacet");
createFacetCut("SCDPFacet");
createFacetCut("ViewDataFacet");
createFacetCut("MinterLiquidationFacet");
executeCuts("MarketStatusUpdate", false);
addMarketStatus();
krEURAddr = deployKrEUR();
}

function addMarketStatus() public output("market-status-update") {
fullUpgrade();
kresko.setMarketStatusProvider(address(provider));
}
}
2 changes: 2 additions & 0 deletions src/contracts/scripts/deploy/libs/LibDeploy.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,8 @@ library LibDeploy {
(IKreskoAsset(proxyAddr), meta.anchorName, meta.anchorSymbol, json.params.common.admin)
);

meta.anchorSalt.blg("");
meta.krAssetSalt.blg("");
// deploy krasset + anchor in batch
bytes[] memory batch = new bytes[](2);
batch[0] = abi.encodeCall(
Expand Down
30 changes: 30 additions & 0 deletions src/contracts/scripts/payloads/PayloadKrEUR.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

import {cs} from "common/State.sol";
import {scdp} from "scdp/SState.sol";
import {ArbDeployAddr} from "kresko-lib/info/ArbDeployAddr.sol";

contract PayloadKrEUR is ArbDeployAddr {
address public immutable krEURAddr;

constructor(address _krEURAddr) {
krEURAddr = _krEURAddr;
}

function executePayload() external {
require(cs().assets[krEURAddr].ticker == bytes32("EUR"), "Invalid krEUR address or not added to protocol");

scdp().isRoute[krEURAddr][kissAddr] = true;
scdp().isRoute[kissAddr][krEURAddr] = true;

scdp().isRoute[krETHAddr][krEURAddr] = true;
scdp().isRoute[krEURAddr][krETHAddr] = true;

scdp().isRoute[krBTCAddr][krEURAddr] = true;
scdp().isRoute[krEURAddr][krBTCAddr] = true;

scdp().isRoute[krSOLAddr][krEURAddr] = true;
scdp().isRoute[krEURAddr][krSOLAddr] = true;
}
}
13 changes: 4 additions & 9 deletions src/contracts/scripts/tasks/krEUR.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,9 @@ import {FeedConfiguration, Oracle} from "common/Types.sol";
import {IAggregatorV3} from "kresko-lib/vendor/IAggregatorV3.sol";
import {IExtendedDiamondCutFacet} from "diamond/interfaces/IDiamondCutFacet.sol";
import {deployPayload} from "scripts/payloads/Payloads.sol";
import {Payload0003} from "scripts/payloads/Payload0003.sol";
import {PayloadKrEUR} from "scripts/payloads/PayloadKrEUR.sol";

// solhint-disable no-empty-blocks, reason-string, state-visibility

contract krEURTask is ArbScript {
using Log for *;
using Help for *;
Expand All @@ -30,16 +29,12 @@ contract krEURTask is ArbScript {
LibDeploy.writeOutputJSON();
}

function execAll() public returns (address krEURAddr) {
if (currentForkId == 0) {
currentForkId = vm.createSelectFork("arbitrum");
}
function deployKrEUR() public returns (address krEURAddr) {
JSON.Config memory json = JSON.getConfig("arbitrum", "arbitrum");
broadcastWith(safe);

(, LibDeploy.DeployedKrAsset memory deployInfo) = addKrAsset(json, "krEUR");
address payload = deployPayload(type(Payload0003).creationCode, abi.encode(deployInfo.addr), 1);
IExtendedDiamondCutFacet(kreskoAddr).executeInitializer(payload, abi.encodeCall(Payload0003.executePayload, ()));
address payload = deployPayload(type(PayloadKrEUR).creationCode, abi.encode(deployInfo.addr), 12);
IExtendedDiamondCutFacet(kreskoAddr).executeInitializer(payload, abi.encodeCall(PayloadKrEUR.executePayload, ()));
return deployInfo.addr;
}

Expand Down
2 changes: 1 addition & 1 deletion src/contracts/scripts/utils/ArbScript.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ contract ArbScript is Anvil, Scripted, ArbDeployAddr {
bytes[] pythUpdate;
PythView pythView;
address[] clAssets = [USDCAddr, WBTCAddr, wethAddr];
string pythAssets = "ETH,USDC,BTC,ARB,SOL";
string pythAssets = "ETH,USDC,BTC,ARB,SOL,EUR";

function initialize(string memory mnemonic) public {
useMnemonic(mnemonic);
Expand Down
21 changes: 18 additions & 3 deletions src/contracts/test/forked/MarketStatusUpdate.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ contract MarketStatusUpdateTest is MarketStatusUpdate {

function setUp() public override {
super.setUp();
payload0010();
execAll();

sender = getAddr(0);
prank(sender);
Expand All @@ -42,7 +42,7 @@ contract MarketStatusUpdateTest is MarketStatusUpdate {
assets[7] = address(krSOLAddr);
assets[8] = address(kissAddr);

for (uint i = 0; i < assets.length; i++) {
for (uint256 i; i < assets.length; i++) {
kresko.getMarketStatus(assets[i]).eq(true);
}

Expand Down Expand Up @@ -97,12 +97,27 @@ contract MarketStatusUpdateTest is MarketStatusUpdate {

prank(sender);
vm.expectRevert();
kresko.mintKreskoAsset(MintArgs({account: sender, receiver: sender, krAsset: kissAddr, amount: 1e18}), pythUpdate);
kresko.mintKreskoAsset(MintArgs({account: sender, receiver: sender, krAsset: kissAddr, amount: 11e18}), pythUpdate);

prank(provider.owner());
provider.setStatus(tickers, open);

prank(sender);
kresko.mintKreskoAsset(MintArgs({account: sender, receiver: sender, krAsset: kissAddr, amount: 1e18}), pythUpdate);
}

function testMintKrEUR() external {
// prank(provider.owner());
// provider.setStatus(tickers, closed);

prank(sender);
// vm.expectRevert();
kresko.mintKreskoAsset(MintArgs({account: sender, receiver: sender, krAsset: krEURAddr, amount: 10.1e18}), pythUpdate);

// prank(provider.owner());
// provider.setStatus(tickers, open);

// prank(sender);
// kresko.mintKreskoAsset(MintArgs({account: sender, receiver: sender, krAsset: kissAddr, amount: 1e18}), pythUpdate);
}
}

0 comments on commit 2108481

Please sign in to comment.