Skip to content

Commit

Permalink
Merge pull request #153 from kreskohq/dev-341-add-krxag
Browse files Browse the repository at this point in the history
DEV-341: krXAG
  • Loading branch information
fxp3 authored Jun 25, 2024
2 parents 2fb2fb2 + f515726 commit a8a96b4
Show file tree
Hide file tree
Showing 10 changed files with 105 additions and 18 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ bin
*.secrets
*.npmrc

soljson-*
# misc
*.logs
*.tsbuildinfo
Expand Down
6 changes: 3 additions & 3 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,17 @@
"editor.formatOnSave": true,
"solidity.linter.type": "solhint",
"solidity.test.executeOnSave": false,
"solidity.compiler.version.remote": "v0.8.25+commit.b61c2a91",
"solidity.compiler.version.remote": "v0.8.23+commit.f704f362",
"solidity.compiler.outDir": "build/vsc",
"solidity.compiler.location": "Extension",
"solidity.compiler.location": "Remote",
"solidity.project.monorepo": false,
"solidity.project.sources": "src/contracts",
"solidity.validation.delay": 300,
"solidity.project.libs": [
"lib"
],
"solidity.formatter": "prettier",
"solidity.validation.onSave": false,
"solidity.validation.onSave": true,
"solidity.validation.onChange": false,
"solidity.validation.onOpen": false,
"solidity.test.verbosity": 2,
Expand Down
50 changes: 50 additions & 0 deletions configs/foundry/deploy/arbitrum/assets-arbitrum.json
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,40 @@
"21_isSharedOrSwappedCollateral": true,
"22_isCoverAsset": false
}
},
{
"00_name": "Silver",
"01_symbol": "krXAG",
"02_underlying": "",
"03_wrapFee": 0,
"04_unwrapFee": 0,
"05_config": {
"00_ticker": "XAG",
"02_anchor": "0x0000000000000000000000000000000000000000",
"03_oracles": [
5,
2
],
"04_factor": 1e4,
"05_kFactor": 1e4,
"06_openFee": 0,
"07_closeFee": 50,
"08_liqIncentive": 1.05e4,
"09_maxDebtMinter": 1720e18,
"10_maxDebtSCDP": 1720e18,
"11_depositLimitSCDP": 0,
"12_swapInFeeSCDP": 9,
"13_swapOutFeeSCDP": 14,
"14_protocolFeeShareSCDP": 7.5e2,
"15_liqIncentiveSCDP": 1.035e4,
"16_decimals": 0,
"17_isMinterCollateral": true,
"18_isMinterMintable": true,
"19_isSharedCollateral": false,
"20_isSwapMintable": true,
"21_isSharedOrSwappedCollateral": true,
"22_isCoverAsset": false
}
}
],
"05_kiss": {
Expand Down Expand Up @@ -656,6 +690,22 @@
"11_useAdapter": false,
"12_invertPyth": false,
"13_isClosable": true
},
{
"00_ticker": "XAG",
"01_mockPrice": 0,
"02_priceDecimals": 8,
"03_chainlink": "0xC56765f04B248394CF1619D20dB8082Edbfa75b1",
"04_api3": "0x0000000000000000000000000000000000000000",
"05_vault": "0x0000000000000000000000000000000000000000",
"06_pythId": "0xf2fb02c32b055c805e7238d628e5e9dadef274376114eb1f012337cabe93871e",
"07_staleTimePyth": 30,
"08_staleTimeAPI3": 86401,
"09_staleTimeChainlink": 86401,
"10_staleTimeRedstone": 50,
"11_useAdapter": false,
"12_invertPyth": false,
"13_isClosable": true
}
],
"07_customTradeRoutes": []
Expand Down
1 change: 1 addition & 0 deletions out/foundry/deploy/42161/krXAG-latest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"akrXAG":{"address":"0x4d516E2049542B350368A44cBE71F3bbc00000D6","ctor":"0x0000000000000000000000001d6a65bbfbbc995a19fc19cb17fa135f9edb6a24","implementation":"0xf6245924800C32a114FB33257a0a8e3e97d6729D","initializer":"0x000000000000000000000000f6245924800c32a114fb33257a0a8e3e97d6729d000000000000000000000000000000000070ab95211e32fda3b706589d3482d500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000104613d25bb0000000000000000000000001d6a65bbfbbc995a19fc19cb17fa135f9edb6a24000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000266489bde85ff0dfe1ebf9f0a7e6fed3a973cec3000000000000000000000000000000000000000000000000000000000000001b4b7265736b6f20417373657420416e63686f723a2053696c76657200000000000000000000000000000000000000000000000000000000000000000000000006616b72584147000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"krXAG":{"address":"0x1d6A65BBfbbc995a19Fc19cB17FA135f9EdB6A24","implementation":"0x3dFD0B77E42F1f88c094F11E0F4BFd49aF5efae9","initializer":"0x0000000000000000000000003dfd0b77e42f1f88c094f11e0f4bfd49af5efae9000000000000000000000000000000000070ab95211e32fda3b706589d3482d5000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a471206626000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000012000000000000000000000000266489bde85ff0dfe1ebf9f0a7e6fed3a973cec30000000000000000000000000000000000177abd99485dcaea3efaa91db3fe720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000266489bde85ff0dfe1ebf9f0a7e6fed3a973cec300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4b7265736b6f3a2053696c76657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056b7258414700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}}
2 changes: 1 addition & 1 deletion src/contracts/core/periphery/DataV1.sol
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {IAssetStateFacet} from "common/interfaces/IAssetStateFacet.sol";
import {PercentageMath} from "libs/PercentageMath.sol";
import {IPyth} from "vendor/pyth/IPyth.sol";
import {IKresko} from "periphery/IKresko.sol";
import {Arrays} from "libs/Arrays.sol";
import {Arrays} from "libs/Arrays.sol";

// solhint-disable avoid-low-level-calls, var-name-mixedcase

Expand Down
2 changes: 1 addition & 1 deletion src/contracts/scripts/deploy/libs/LibDeploy.s.sol
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {IDeploymentFactory} from "factory/IDeploymentFactory.sol";
import {MockPyth} from "mocks/MockPyth.sol";
import {getPythViewData, getMockPythPayload, PythView} from "vendor/pyth/PythScript.sol";
import {LibJSON, JSON} from "scripts/deploy/libs/LibJSON.s.sol";
import {MockMarketStatus} from "src/contracts/mocks/MockMarketStatus.sol";
import {MockMarketStatus} from "mocks-misc/MockMarketStatus.sol";

library LibDeploy {
using Conversions for bytes[];
Expand Down
6 changes: 5 additions & 1 deletion src/contracts/scripts/payloads/KrAssetPayloads.sol
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;
pragma solidity ^0.8.0;

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

contract KrAssetPayload is ArbDeployAddr {
address public immutable newAssetAddr;
address constant krXAUAddr = 0xe0A49C9215206f9cfb79981901bDF1f2716d3215;

constructor(address _newAssetAddr) {
newAssetAddr = _newAssetAddr;
Expand Down Expand Up @@ -35,5 +36,8 @@ contract KrAssetPayload is ArbDeployAddr {

scdp().isRoute[krJPYAddr][newAssetAddr] = true;
scdp().isRoute[newAssetAddr][krJPYAddr] = true;

scdp().isRoute[krXAUAddr][newAssetAddr] = true;
scdp().isRoute[newAssetAddr][krXAUAddr] = true;
}
}
51 changes: 41 additions & 10 deletions src/contracts/scripts/tasks/AddKrAsset.s.sol
Original file line number Diff line number Diff line change
@@ -1,21 +1,23 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import {AssetAdder} from "scripts/utils/AssetAdder.s.sol";
import {Log} from "kresko-lib/utils/Libs.s.sol";
import {Deployed} from "scripts/deploy/libs/Deployed.s.sol";
import {KrAssetPayload} from "scripts/payloads/KrAssetPayloads.sol";
import {deployPayload} from "scripts/payloads/Payloads.sol";
import {IExtendedDiamondCutFacet} from "diamond/interfaces/IDiamondCutFacet.sol";
import {IERC20} from "kresko-lib/token/IERC20.sol";

contract AddKrAsset is AssetAdder {
using Log for *;

address payable internal newAssetAddr;

string assetName = "Gold";
string assetTicker = "XAU";
string assetName = "Silver";
string assetTicker = "XAG";
string assetSymbol = string.concat("kr", assetTicker);
bytes32 marketStatusSource = bytes32("XAU");
bytes32 marketStatusSource = bytes32("XAG");

function setUp() public virtual {
vm.createSelectFork("arbitrum");
Expand All @@ -24,22 +26,51 @@ contract AddKrAsset is AssetAdder {

function createFork() public {
broadcastWith(safe);
states_looseOracles();
createAddKrAsset();
states_looseOracles();
}

function createAddKrAsset() public {
broadcastWith(safe);
newAssetAddr = deployKrAsset(assetSymbol);
newAssetAddr = _createAddKrAsset();

IERC20 token = IERC20(newAssetAddr);

prank(safe);
fetchPythAndUpdate();
syncTimeLocal();

string memory info = string.concat(
"\n************************************************************",
"\n* Created ",
token.symbol(),
" succesfully.",
"\n************************************************************",
"\n* (address) -> ",
vm.toString(newAssetAddr),
"\n* (name) -> ",
token.name(),
"\n* (getPrice) -> ",
fpStr(kresko.getPrice(newAssetAddr)),
"\n* (getPushPrice) -> ",
fpStr(uint256(kresko.getPushPrice(newAssetAddr).answer)),
"\n************************************************************"
);
Log.clg(info);
Log.br();
}

function fpStr(uint256 value) public pure returns (string memory) {
return string.concat(vm.toString(value / 1e8), ".", vm.toString(value % 1e8));
}

function _createAddKrAsset() private rebroadcasted(safe) returns (address payable krAssetAddr_) {
krAssetAddr_ = deployKrAsset(assetSymbol);

address payloadAddr = deployPayload(
type(KrAssetPayload).creationCode,
abi.encode(newAssetAddr),
abi.encode(krAssetAddr_),
string.concat(assetSymbol, "-initializer")
);
IExtendedDiamondCutFacet(kreskoAddr).executeInitializer(payloadAddr, abi.encodeCall(KrAssetPayload.executePayload, ()));
Log.br();
newAssetAddr.clg(string.concat(assetSymbol, " deployed @ "));
Log.hr();
}
}
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 @@ -143,7 +143,7 @@ contract ArbScript is Scripted, ArbDeploy {
vault.setWithdrawFee(USDCAddr, 0);
}

function states_looseOracles() internal {
function states_looseOracles() public rebroadcasted(safe) {
vault.setAssetFeed(USDCAddr, 0x50834F3163758fcC1Df9973b6e91f0F0F0434aD3, type(uint24).max);
vault.setAssetFeed(USDCeAddr, 0x50834F3163758fcC1Df9973b6e91f0F0F0434aD3, type(uint24).max);
kresko.setMaxPriceDeviationPct(25e2);
Expand Down
2 changes: 1 addition & 1 deletion src/contracts/test/AddKrAsset.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ contract AddKrAssetTest is Tested, AddKrAsset {
uint256 testMint;

function setUp() public override {
super.initialize(223579321);
super.initialize(225611889);

createAddKrAsset();

Expand Down

0 comments on commit a8a96b4

Please sign in to comment.