Skip to content
2 changes: 2 additions & 0 deletions hardhat.config.mainnet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
MAINNET_MORPHO_BLUE_WSTETH_USDA_182DAY,
MAINNET_RETH_182DAY,
MAINNET_RETH_COORDINATOR,
MAINNET_SCRVUSD_182DAY,
MAINNET_SGYD_182DAY,
MAINNET_STUSD_182DAY,
MAINNET_SUSDE_182DAY,
Expand Down Expand Up @@ -49,6 +50,7 @@ const config: HardhatUserConfig = {
MAINNET_MORPHO_BLUE_WSTETH_USDA_182DAY,
MAINNET_MORPHO_BLUE_WBTC_USDC_182DAY,
MAINNET_MORPHO_BLUE_CBBTC_USDC_182DAY,
MAINNET_SCRVUSD_182DAY,
MAINNET_STUSD_182DAY,
MAINNET_SUSDE_182DAY,
MAINNET_SGYD_182DAY,
Expand Down
1 change: 1 addition & 0 deletions tasks/deploy/config/mainnet/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export * from "./morpho-blue-wsteth-usda-182day";
export * from "./morpho-blue-wsteth-usdc-182day";
export * from "./reth-182day";
export * from "./reth-coordinator";
export * from "./scrvusd-182day";
export * from "./sgyd-182day";
export * from "./staking-usds-coordinator";
export * from "./staking-usds-sky-182day";
Expand Down
91 changes: 91 additions & 0 deletions tasks/deploy/config/mainnet/scrvusd-182day.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import { Address, keccak256, parseEther, toBytes } from "viem";
import {
HyperdriveInstanceConfig,
getLinkerDetails,
normalizeFee,
parseDuration,
toBytes32,
} from "../../lib";
import {
CRVUSD_ADDRESS_MAINNET,
SCRVUSD_ADDRESS_MAINNET,
SIX_MONTHS,
} from "../../lib/constants";
import { MAINNET_ERC4626_COORDINATOR_NAME } from "./erc4626-coordinator";
import { MAINNET_FACTORY_NAME } from "./factory";

// The name of the pool.
export const MAINNET_SCRVUSD_182DAY_NAME =
"ElementDAO 182 Day scrvUSD Hyperdrive";

// The initial contribution of the pool.
const CONTRIBUTION = parseEther("100");

export const MAINNET_SCRVUSD_182DAY: HyperdriveInstanceConfig = {
name: MAINNET_SCRVUSD_182DAY_NAME,
prefix: "ERC4626",
coordinatorAddress: async (hre) =>
hre.hyperdriveDeploy.deployments.byName(
MAINNET_ERC4626_COORDINATOR_NAME,
).address,
deploymentId: keccak256(toBytes(MAINNET_SCRVUSD_182DAY_NAME)),
salt: toBytes32("0x69420"),
extraData: "0x",
contribution: CONTRIBUTION,
// NOTE: Link to underlying scrvUSD market
// https://crvusd.curve.fi/#/ethereum/scrvUSD
fixedAPR: parseEther("0.10"),
timestretchAPR: parseEther("0.15"),
options: async (hre) => ({
extraData: "0x",
asBase: true,
destination: (await hre.getNamedAccounts())["deployer"] as Address,
}),
// Prepare to deploy the contract by setting approvals.
prepare: async (hre) => {
let baseToken = await hre.viem.getContractAt(
"contracts/src/interfaces/IERC20.sol:IERC20",
CRVUSD_ADDRESS_MAINNET,
);
let tx = await baseToken.write.approve([
hre.hyperdriveDeploy.deployments.byName(
MAINNET_ERC4626_COORDINATOR_NAME,
).address,
CONTRIBUTION,
]);
let pc = await hre.viem.getPublicClient();
await pc.waitForTransactionReceipt({ hash: tx });
},
poolDeployConfig: async (hre) => {
let factoryContract = await hre.viem.getContractAt(
"HyperdriveFactory",
hre.hyperdriveDeploy.deployments.byName(MAINNET_FACTORY_NAME)
.address,
);
return {
baseToken: CRVUSD_ADDRESS_MAINNET,
vaultSharesToken: SCRVUSD_ADDRESS_MAINNET,
circuitBreakerDelta: parseEther("0.05"),
minimumShareReserves: parseEther("0.001"),
minimumTransactionAmount: parseEther("0.001"),
positionDuration: parseDuration(SIX_MONTHS),
checkpointDuration: parseDuration("1 day"),
timeStretch: 0n,
governance: await factoryContract.read.hyperdriveGovernance(),
feeCollector: await factoryContract.read.feeCollector(),
sweepCollector: await factoryContract.read.sweepCollector(),
checkpointRewarder: await factoryContract.read.checkpointRewarder(),
...(await getLinkerDetails(
hre,
hre.hyperdriveDeploy.deployments.byName(MAINNET_FACTORY_NAME)
.address,
)),
fees: {
curve: parseEther("0.01"),
flat: normalizeFee(parseEther("0.0005"), SIX_MONTHS),
governanceLP: parseEther("0.15"),
governanceZombie: parseEther("0.03"),
},
};
},
};
6 changes: 6 additions & 0 deletions tasks/deploy/lib/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,12 @@ export const WSTETH_ADDRESS_MAINNET =
export const WBTC_ADDRESS_MAINNET =
"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" as Address;

export const SCRVUSD_ADDRESS_MAINNET =
"0x0655977FEb2f289A4aB78af67BAB0d17aAb84367" as Address;

export const CRVUSD_ADDRESS_MAINNET =
"0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E" as Address;

// ╭─────────────────────────────────────────────────────────╮
// │ Mainnet Whales │
// ╰─────────────────────────────────────────────────────────╯
Expand Down
Loading