Skip to content

Commit

Permalink
feat: etherfi + Ethena zksync capo (#52)
Browse files Browse the repository at this point in the history
* feat: add sDAI capo

* feat: weETH, sUSDS, USDSe capo

* fix: script and tests naming

* chore: cleanup

* chore: update weETH and sUSDe snapshots + fork block tests

* chore: weETH + sUSDe reports

* fix:  update solc on CLRatePriceCapAdapter

* fix: zksync ci test support

* chore: update ci

* fix: ci

* fix: ci

---------

Co-authored-by: Harsh Pandey <[email protected]>
  • Loading branch information
ianflexa and brotherlymite authored Nov 22, 2024
1 parent fc0ade5 commit 93886f1
Show file tree
Hide file tree
Showing 20 changed files with 540 additions and 43 deletions.
26 changes: 0 additions & 26 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,4 @@ LEDGER_SENDER=
# Deployment via private key
PRIVATE_KEY=

# Test rpc_endpoints
RPC_MAINNET=https://eth.llamarpc.com
RPC_AVALANCHE=https://api.avax.network/ext/bc/C/rpc
RPC_OPTIMISM=https://optimism.llamarpc.com
RPC_POLYGON=https://polygon.llamarpc.com
RPC_ARBITRUM=https://arbitrum.llamarpc.com
RPC_FANTOM=https://rpc.ftm.tools
RPC_HARMONY=https://api.harmony.one
RPC_METIS=https://andromeda.metis.io/?owner=1088
RPC_BASE=https://base.llamarpc.com
RPC_ZKEVM=https://zkevm-rpc.com
RPC_GNOSIS=https://rpc.ankr.com/gnosis
RPC_BNB=https://binance.llamarpc.com

# Etherscan api keys for verification & download utils
ETHERSCAN_API_KEY_MAINNET=
ETHERSCAN_API_KEY_POLYGON=
ETHERSCAN_API_KEY_AVALANCHE=
ETHERSCAN_API_KEY_FANTOM=
ETHERSCAN_API_KEY_OPTIMISM=
ETHERSCAN_API_KEY_ARBITRUM=
ETHERSCAN_API_KEY_BASE=
ETHERSCAN_API_KEY_ZKEVM=
ETHERSCAN_API_KEY_GNOSIS=
ETHERSCAN_API_KEY_BNB=


52 changes: 40 additions & 12 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,43 @@ on:

jobs:
test-sol:
uses: bgd-labs/github-workflows/.github/workflows/foundry-test.yml@main
secrets: inherit
with:
mode: "CHANGED"

test-sol-zksync:
uses: bgd-labs/github-workflows/.github/workflows/foundry-test.yml@main
secrets: inherit
with:
mode: "CHANGED"
zksync: true
ROOT_DIR: "zksync"
name: Foundry build n test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: bgd-labs/action-rpc-env@main
with:
ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}

# we simply use foundry zk for all jobs in this repo
- name: Run Foundry setup
uses: bgd-labs/github-workflows/.github/actions/foundry-setup@main
with:
ZKSYNC: "true"

- name: Run Forge tests
id: test
uses: bgd-labs/github-workflows/.github/actions/foundry-test@main
with:
MODE: "CHANGED"

- name: Run ZK tests
id: zktest
uses: bgd-labs/github-workflows/.github/actions/foundry-test@main
with:
MODE: "CHANGED"
ZKSYNC: true
ROOT_DIR: "zksync"

- name: Run Forge tests
uses: bgd-labs/github-workflows/.github/actions/comment-artifact@main

# we let failing tests pass so we can log them in the comment, still we want the ci to fail
- name: Post test
if: ${{ steps.test.outputs.testStatus != 0 || steps.zktest.outputs.testStatus != 0 }}
run: |
echo "tests failed"
exit 1
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ deploy-bnbx-bnb :; forge script scripts/DeployBnb.s.sol:DeployBNBxBnb --rpc-url

deploy-ezeth-mainnet :; forge script scripts/DeployEthereum.s.sol:DeployEzEthEthereum --rpc-url mainnet $(common-flags)

deploy-sdai-mainnet :; forge script scripts/DeployEthereum.s.sol:DeploySDaiEthereum --rpc-url mainnet $(common-flags)
deploy-sdai-gnosis :; forge script scripts/DeployGnosis.s.sol:DeploySDaiGnosis --rpc-url gnosis $(common-flags)

deploy-rseth-mainnet :; forge script scripts/DeployEthereum.s.sol:DeployRsEthEthereum --rpc-url mainnet $(common-flags)

# Utilities
Expand Down
26 changes: 26 additions & 0 deletions reports/sDAI_Ethereum.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Capo Report

| Capped sDAI / DAI / USD | DAI / USD | Diff | Date | 7-day growth in yearly % |
| ----------------------- | ---------- | ------ | ----------- | ------------------------ |
| 1.11334971 | 0.99966482 | 10.76% | 17 Oct 2024 | 5.38% |
| 1.1136328 | 0.99977 | 10.78% | 18 Oct 2024 | 5.35% |
| 1.11383086 | 0.99979973 | 10.79% | 19 Oct 2024 | 5.35% |
| 1.11414282 | 0.99992865 | 10.81% | 20 Oct 2024 | 5.37% |
| 1.11434215 | 0.99995926 | 10.82% | 21 Oct 2024 | 5.35% |
| 1.11428835 | 0.99976 | 10.83% | 22 Oct 2024 | 5.35% |
| 1.11442294 | 0.99973188 | 10.85% | 23 Oct 2024 | 5.35% |
| 1.11455532 | 0.99970131 | 10.86% | 24 Oct 2024 | 5.35% |
| 1.11485537 | 0.99982108 | 10.88% | 25 Oct 2024 | 5.35% |
| 1.11484808 | 0.99966494 | 10.89% | 26 Oct 2024 | 5.36% |
| 1.11510009 | 0.99974234 | 10.91% | 27 Oct 2024 | 5.35% |
| 1.11544634 | 0.99990409 | 10.92% | 28 Oct 2024 | 5.35% |
| 1.11556526 | 0.99986 | 10.94% | 29 Oct 2024 | 5.35% |
| 1.1158962 | 1.00000876 | 10.95% | 30 Oct 2024 | 5.34% |

- 7-day growth is calculated as an annualized percentage relative to the value of the rate 7 days prior.

| Max Yearly % | Max Day-to-day yearly % | Max 7-day yearly % |
| ------------ | ----------------------- | ------------------ |
| 9.69% | 5.53% | 5.38% |

- Max day-to-day yearly % indicates the maximum growth between two emissions as an annualized percentage.
26 changes: 26 additions & 0 deletions reports/sDAI_Gnosis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Capo Report

| Capped sDAI / DAI / USD | DAI / USD | Diff | Date | 7-day growth in yearly % |
| ----------------------- | ---------- | ------ | ----------- | ------------------------ |
| 1.11779532 | 0.99971365 | 11.15% | 17 Oct 2024 | 6.96% |
| 1.1179241 | 0.99966346 | 11.17% | 18 Oct 2024 | 6.74% |
| 1.11822501 | 0.99976211 | 11.19% | 19 Oct 2024 | 6.70% |
| 1.11832166 | 0.999735 | 11.20% | 20 Oct 2024 | 6.31% |
| 1.1187078 | 0.99978507 | 11.23% | 21 Oct 2024 | 7.31% |
| 1.11896805 | 0.99984 | 11.24% | 22 Oct 2024 | 6.84% |
| 1.11914493 | 0.99979999 | 11.26% | 23 Oct 2024 | 6.78% |
| 1.119103 | 0.99966681 | 11.27% | 24 Oct 2024 | 6.23% |
| 1.11942566 | 0.99966508 | 11.30% | 25 Oct 2024 | 6.88% |
| 1.11978946 | 0.99980639 | 11.32% | 26 Oct 2024 | 6.94% |
| 1.11996144 | 0.99981308 | 11.34% | 27 Oct 2024 | 7.11% |
| 1.1201338 | 0.99974778 | 11.36% | 28 Oct 2024 | 6.71% |
| 1.12047981 | 0.99987 | 11.38% | 29 Oct 2024 | 6.74% |
| 1.12103936 | 1.00018123 | 11.40% | 30 Oct 2024 | 6.69% |

- 7-day growth is calculated as an annualized percentage relative to the value of the rate 7 days prior.

| Max Yearly % | Max Day-to-day yearly % | Max 7-day yearly % |
| ------------ | ----------------------- | ------------------ |
| 9.69% | 10.69% | 7.31% |

- Max day-to-day yearly % indicates the maximum growth between two emissions as an annualized percentage.
34 changes: 34 additions & 0 deletions reports/sUSDe_ZkSync.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Capo Report

| Capped sUSDe / USDe / USD | USDe / USD | Diff | Date | 14-day growth in yearly % |
| ------------------------- | ---------- | ------ | ----------- | ------------------------- |
| 1.11195118 | 1.00024757 | 10.58% | 28 Oct 2024 | 9.33% |
| 1.1125614 | 1.0005 | 10.61% | 30 Oct 2024 | 9.62% |
| 1.11341766 | 1.00097941 | 10.64% | 31 Oct 2024 | 9.90% |
| 1.11371677 | 1.00096143 | 10.66% | 01 Nov 2024 | 10.17% |
| 1.11327601 | 1.00026341 | 10.69% | 02 Nov 2024 | 10.53% |
| 1.1143006 | 1.0008725 | 10.73% | 03 Nov 2024 | 10.58% |
| 1.11455263 | 1.00078891 | 10.76% | 04 Nov 2024 | 10.65% |
| 1.11468545 | 1.0006 | 10.79% | 05 Nov 2024 | 10.06% |
| 1.11526216 | 1.00081265 | 10.82% | 06 Nov 2024 | 10.14% |
| 1.11603128 | 1.0012 | 10.85% | 07 Nov 2024 | 10.25% |
| 1.11684814 | 1.00133096 | 10.91% | 08 Nov 2024 | 11.29% |
| 1.11737186 | 1.00150053 | 10.94% | 09 Nov 2024 | 11.33% |
| 1.11723336 | 1.00107996 | 10.97% | 10 Nov 2024 | 11.32% |
| 1.11791936 | 1.0014 | 11.00% | 11 Nov 2024 | 11.38% |
| 1.11884016 | 1.001938 | 11.02% | 12 Nov 2024 | 11.38% |
| 1.11835784 | 1.00150607 | 11.02% | 13 Nov 2024 | 10.69% |
| 1.11947894 | 1.00222841 | 11.05% | 14 Nov 2024 | 10.68% |
| 1.1193506 | 1.00183747 | 11.08% | 15 Nov 2024 | 10.68% |
| 1.12052337 | 1.0018 | 11.19% | 16 Nov 2024 | 12.67% |
| 1.12094851 | 1.00158273 | 11.25% | 17 Nov 2024 | 13.51% |
| 1.12129925 | 1.00131213 | 11.31% | 18 Nov 2024 | 14.25% |
| 1.12191947 | 1.0013 | 11.36% | 19 Nov 2024 | 14.93% |

- 14-day growth is calculated as an annualized percentage relative to the value of the rate 14 days prior.

| Max Yearly % | Max Day-to-day yearly % | Max 14-day yearly % |
| ------------ | ----------------------- | ------------------- |
| 50.00% | 38.25% | 14.93% |

- Max day-to-day yearly % indicates the maximum growth between two emissions as an annualized percentage.
41 changes: 41 additions & 0 deletions reports/weETH_ZkSync.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Capo Report

| Capped weETH / eETH(ETH) / USD | ETH / USD | Diff | Date | 7-day growth in yearly % |
| ------------------------------ | ------------- | ----- | ----------- | ------------------------ |
| 2796.30214289 | 2661.02 | 4.96% | 21 Oct 2024 | 2.82% |
| 2754.66311811 | 2621.21 | 4.96% | 22 Oct 2024 | 2.81% |
| 2640.15185513 | 2512.04 | 4.97% | 23 Oct 2024 | 2.82% |
| 2649.8634455 | 2521.09862646 | 4.98% | 24 Oct 2024 | 2.86% |
| 2605.81459261 | 2479.02 | 4.99% | 25 Oct 2024 | 2.49% |
| 2619.25098808 | 2491.62 | 4.99% | 26 Oct 2024 | 2.51% |
| 2652.20026346 | 2522.79 | 5.00% | 27 Oct 2024 | 2.43% |
| 2697.10415893 | 2565.33062993 | 5.01% | 28 Oct 2024 | 2.49% |
| 2767.7168616 | 2632.31044615 | 5.02% | 30 Oct 2024 | 2.48% |
| 2793.03766059 | 2656.18 | 5.02% | 31 Oct 2024 | 2.48% |
| 2659.20135356 | 2528.75 | 5.03% | 01 Nov 2024 | 2.42% |
| 2646.76422145 | 2516.9136 | 5.03% | 02 Nov 2024 | 2.12% |
| 2583.38116131 | 2456.258022 | 5.04% | 03 Nov 2024 | 2.50% |
| 2587.57445769 | 2460.06324246 | 5.05% | 04 Nov 2024 | 2.54% |
| 2550.78265691 | 2424.9076 | 5.06% | 05 Nov 2024 | 2.57% |
| 2735.55463878 | 2600.36 | 5.07% | 06 Nov 2024 | 2.61% |
| 2954.92711115 | 2808.6694 | 5.08% | 07 Nov 2024 | 2.60% |
| 3052.44231365 | 2900.8948 | 5.09% | 08 Nov 2024 | 3.10% |
| 3213.70316926 | 3053.91 | 5.10% | 09 Nov 2024 | 3.45% |
| 3375.72482722 | 3207.6299 | 5.11% | 10 Nov 2024 | 3.10% |
| 3359.40506995 | 3191.871483 | 5.11% | 11 Nov 2024 | 3.16% |
| 3583.57362333 | 3404.579563 | 5.12% | 12 Nov 2024 | 3.25% |
| 3328.81126755 | 3162.5422 | 5.12% | 13 Nov 2024 | 2.88% |
| 3400.41654846 | 3230.37692177 | 5.13% | 14 Nov 2024 | 2.80% |
| 3204.02893756 | 3043.4155 | 5.14% | 15 Nov 2024 | 2.65% |
| 3270.47195073 | 3106.2683715 | 5.15% | 16 Nov 2024 | 2.69% |
| 3312.50919564 | 3145.9392 | 5.16% | 17 Nov 2024 | 2.72% |
| 3277.67047438 | 3112.67627839 | 5.16% | 18 Nov 2024 | 2.58% |
| 3271.89848866 | 3106.95 | 5.17% | 19 Nov 2024 | 2.53% |

- 7-day growth is calculated as an annualized percentage relative to the value of the rate 7 days prior.

| Max Yearly % | Max Day-to-day yearly % | Max 7-day yearly % |
| ------------ | ----------------------- | ------------------ |
| 8.75% | 5.76% | 3.45% |

- Max day-to-day yearly % indicates the maximum growth between two emissions as an annualized percentage.
32 changes: 31 additions & 1 deletion scripts/DeployEthereum.s.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import {GovV3Helpers} from 'aave-helpers/GovV3Helpers.sol';
import {EthereumScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol';
import {AaveV3Ethereum, AaveV3EthereumAssets} from 'aave-address-book/AaveV3Ethereum.sol';
import {AaveV3EthereumLido, AaveV3EthereumLidoAssets} from 'aave-address-book/AaveV3EthereumLido.sol';
import {MiscEthereum} from 'aave-address-book/MiscEthereum.sol';

import {PriceCapAdapterStable} from '../src/contracts/PriceCapAdapterStable.sol';
import {IPriceCapAdapter, IChainlinkAggregator} from '../src/interfaces/IPriceCapAdapter.sol';
Expand All @@ -14,6 +16,7 @@ import {EthXPriceCapAdapter} from '../src/contracts/lst-adapters/EthXPriceCapAda
import {SUSDePriceCapAdapter} from '../src/contracts/lst-adapters/SUSDePriceCapAdapter.sol';
import {sUSDSPriceCapAdapter} from '../src/contracts/lst-adapters/sUSDSPriceCapAdapter.sol';
import {EzETHPriceCapAdapter} from '../src/contracts/lst-adapters/EzETHPriceCapAdapter.sol';
import {sDAIMainnetPriceCapAdapter} from '../src/contracts/lst-adapters/sDAIMainnetPriceCapAdapter.sol';
import {RsETHPriceCapAdapter} from '../src/contracts/lst-adapters/RsETHPriceCapAdapter.sol';

library CapAdaptersCodeEthereum {
Expand Down Expand Up @@ -126,6 +129,27 @@ library CapAdaptersCodeEthereum {
);
}

function sDAIAdapterCode() internal pure returns (bytes memory) {
return
abi.encodePacked(
type(sDAIMainnetPriceCapAdapter).creationCode,
abi.encode(
IPriceCapAdapter.CapAdapterParams({
aclManager: AaveV3Ethereum.ACL_MANAGER,
baseAggregatorAddress: DAI_PRICE_FEED,
ratioProviderAddress: MiscEthereum.sDAI_POT,
pairDescription: 'Capped sDAI / DAI / USD',
minimumSnapshotDelay: 7 days,
priceCapParams: IPriceCapAdapter.PriceCapUpdateParams({
snapshotRatio: 1_114312383890349337561189736,
snapshotTimestamp: 1729467251,
maxYearlyRatioGrowthPercent: 9_69
})
})
)
);
}

function USDSAdapterCode() internal pure returns (bytes memory) {
return
abi.encodePacked(
Expand Down Expand Up @@ -253,8 +277,14 @@ contract DeployEzEthEthereum is EthereumScript {
}
}

contract DeploySDaiEthereum is EthereumScript {
function run() external broadcast {
GovV3Helpers.deployDeterministic(CapAdaptersCodeEthereum.sDAIAdapterCode());
}
}

contract DeployRsEthEthereum is EthereumScript {
function run() external broadcast {
GovV3Helpers.deployDeterministic(CapAdaptersCodeEthereum.rsETHAdapterCode());
}
}
}
40 changes: 40 additions & 0 deletions scripts/DeployGnosis.s.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;

import {GovV3Helpers} from 'aave-helpers/GovV3Helpers.sol';
import {GnosisScript} from 'solidity-utils/contracts/utils/ScriptUtils.sol';
import {AaveV3Gnosis, AaveV3GnosisAssets} from 'aave-address-book/AaveV3Gnosis.sol';

import {sDAIGnosisPriceCapAdapter} from '../src/contracts/lst-adapters/sDAIGnosisPriceCapAdapter.sol';
import {IPriceCapAdapter} from '../src/interfaces/IPriceCapAdapter.sol';

library CapAdaptersCodeGnosis {
address public constant DAI_PRICE_FEED = 0x678df3415fc31947dA4324eC63212874be5a82f8;

function sDAIAdapterCode() internal pure returns (bytes memory) {
return
abi.encodePacked(
type(sDAIGnosisPriceCapAdapter).creationCode,
abi.encode(
IPriceCapAdapter.CapAdapterParams({
aclManager: AaveV3Gnosis.ACL_MANAGER,
baseAggregatorAddress: DAI_PRICE_FEED,
ratioProviderAddress: AaveV3GnosisAssets.sDAI_UNDERLYING,
pairDescription: 'Capped sDAI / DAI / USD',
minimumSnapshotDelay: 7 days,
priceCapParams: IPriceCapAdapter.PriceCapUpdateParams({
snapshotRatio: 1_118618102334074883,
snapshotTimestamp: 1729423540,
maxYearlyRatioGrowthPercent: 9_69
})
})
)
);
}
}

contract DeploySDaiGnosis is GnosisScript {
function run() external broadcast {
GovV3Helpers.deployDeterministic(CapAdaptersCodeGnosis.sDAIAdapterCode());
}
}
Loading

0 comments on commit 93886f1

Please sign in to comment.