Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: etherfi + Ethena zksync capo #52

Merged
merged 16 commits into from
Nov 22, 2024
Merged
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
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