diff --git a/contracts/src/interfaces/IRenzo.sol b/contracts/src/interfaces/IRenzo.sol index e78de5953..3f71d00a9 100644 --- a/contracts/src/interfaces/IRenzo.sol +++ b/contracts/src/interfaces/IRenzo.sol @@ -58,7 +58,7 @@ interface IRenzoOracle { uint256 _ezETHBeingBurned, uint256 _existingEzETHSupply, uint256 _currentValueInProtocol - ) external pure returns (uint256); + ) external view returns (uint256); } interface IDepositQueue { diff --git a/contracts/test/MockEzEthPool.sol b/contracts/test/MockEzEthPool.sol new file mode 100644 index 000000000..7ac26c1bb --- /dev/null +++ b/contracts/test/MockEzEthPool.sol @@ -0,0 +1,247 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.20; + +import { MultiRolesAuthority } from "solmate/auth/authorities/MultiRolesAuthority.sol"; +import { FixedPointMath } from "../src/libraries/FixedPointMath.sol"; +import { ERC20Mintable } from "./ERC20Mintable.sol"; +import { IERC20 } from "../src/interfaces/IERC20.sol"; +import { IRestakeManager, IRenzoOracle } from "../src/interfaces/IRenzo.sol"; + +/// @author DELV +/// @title MockLido +/// @notice This mock yield source will accrue interest at a specified rate +/// Every stateful interaction will accrue interest, so the interest +/// accrual will approximate continuous compounding as the contract +/// is called more frequently. +/// @custom:disclaimer The language used in this code is for coding convenience +/// only, and is not intended to, and does not, have any +/// particular legal or regulatory significance. +contract MockEzEthPool is + IRestakeManager, + IRenzoOracle, + MultiRolesAuthority, + ERC20Mintable +{ + using FixedPointMath for uint256; + + // Interest State + uint256 internal _rate; + uint256 internal _lastUpdated; + + // Lido State + uint256 totalPooledEther; + uint256 totalShares; + + constructor( + uint256 _initialRate, + address _admin, + bool _isCompetitionMode, + uint256 _maxMintAmount + ) + ERC20Mintable( + "Renzo ezETH", + "ezETH", + 18, + _admin, + _isCompetitionMode, + _maxMintAmount + ) + { + _rate = _initialRate; + _lastUpdated = block.timestamp; + } + + /// Overrides /// + + function submit(address) external payable returns (uint256) { + // Accrue interest. + _accrue(); + + // If this is the first deposit, mint shares 1:1. + if (getTotalShares() == 0) { + totalShares = msg.value; + totalPooledEther = msg.value; + _mint(msg.sender, msg.value); + return msg.value; + } + + // Calculate the amount of stETH shares that should be minted. + uint256 shares = msg.value.mulDivDown( + getTotalShares(), + getTotalPooledEther() + ); + + // Update the Lido state. + totalPooledEther += msg.value; + totalShares += shares; + + // Mint the stETH tokens to the user. + _mint(msg.sender, msg.value); + + return shares; + } + + function transferShares( + address _recipient, + uint256 _sharesAmount + ) external returns (uint256) { + // Accrue interest. + _accrue(); + + // Calculate the amount of tokens that should be transferred. + uint256 tokenAmount = _sharesAmount.mulDivDown( + getTotalPooledEther(), + getTotalShares() + ); + + // Transfer the tokens to the user. + transfer(_recipient, tokenAmount); + + return tokenAmount; + } + + function transferSharesFrom( + address _sender, + address _recipient, + uint256 _sharesAmount + ) external returns (uint256) { + // Accrue interest. + _accrue(); + + // Calculate the amount of tokens that should be transferred. + uint256 tokenAmount = _sharesAmount.mulDivDown( + getTotalPooledEther(), + getTotalShares() + ); + + // Transfer the tokens to the user. + transferFrom(_sender, _recipient, tokenAmount); + + return tokenAmount; + } + + function getSharesByPooledEth( + uint256 _ethAmount + ) external view returns (uint256) { + return _ethAmount.mulDivDown(getTotalShares(), getTotalPooledEther()); + } + + function getPooledEthByShares( + uint256 _sharesAmount + ) public view returns (uint256) { + return + _sharesAmount.mulDivDown(getTotalPooledEther(), getTotalShares()); + } + + function getBufferedEther() external pure returns (uint256) { + return 0; + } + + function getTotalPooledEther() public view returns (uint256) { + return totalPooledEther + _getAccruedInterest(); + } + + function getTotalShares() public view returns (uint256) { + return totalShares; + } + + function sharesOf(address _account) external view returns (uint256) { + uint256 tokenBalance = balanceOf[_account]; + return tokenBalance.mulDivDown(getTotalShares(), getTotalPooledEther()); + } + + /// Mock /// + + function setRate(uint256 _rate_) external requiresAuthDuringCompetition { + _accrue(); + _rate = _rate_; + } + + function getRate() external view returns (uint256) { + return _rate; + } + + function _accrue() internal { + uint256 interest = _getAccruedInterest(); + if (interest > 0) { + totalPooledEther += interest; + } + _lastUpdated = block.timestamp; + } + + function _getAccruedInterest() internal view returns (uint256) { + if (_rate == 0) { + return 0; + } + + // base_balance = base_balance * (1 + r * t) + uint256 timeElapsed = (block.timestamp - _lastUpdated).divDown( + 365 days + ); + uint256 accrued = totalPooledEther.mulDown(_rate.mulDown(timeElapsed)); + return accrued; + } + + function calculateTVLs() + public + view + override + returns (uint256[][] memory, uint256[] memory, uint256) + { + uint256[][] memory operator_tokens_tvls; + uint256[] memory operator_tvls; + uint256 tvl = getTotalPooledEther(); + return (operator_tokens_tvls, operator_tvls, tvl); + } + + function depositETH() external payable { + revert("depositETH: Not Implemented"); + } + + function ezETH() external view returns (address) { + return address(this); + } + + function renzoOracle() external view returns (address) { + return address(this); + } + + // Renzo Oracle Functions // + + function lookupTokenValue( + IERC20, //_token, + uint256 //_balance + ) external pure returns (uint256) { + revert("lookupTokenValue: Not Implemented"); + } + + function lookupTokenAmountFromValue( + IERC20, // _token, + uint256 // _value + ) external pure returns (uint256) { + revert("lookupTokenValue: Not Implemented"); + } + + function lookupTokenValues( + IERC20[] memory, // _tokens, + uint256[] memory // _balances + ) external pure returns (uint256) { + revert("lookupTokenValue: Not Implemented"); + } + + function calculateMintAmount( + uint256, // _currentValueInProtocol, + uint256, // _newValueAdded, + uint256 // _existingEzETHSupply + ) external pure returns (uint256) { + revert("lookupTokenValue: Not Implemented"); + } + + function calculateRedeemAmount( + uint256 _ezETHBeingBurned, + uint256, // _existingEzETHSupply, + uint256 // _currentValueInProtocol + ) public view returns (uint256) { + return getPooledEthByShares(_ezETHBeingBurned); + } +} diff --git a/script/deploy/ApproveDeployerCoordinator.s.sol b/script/deploy/ApproveDeployerCoordinator.s.sol new file mode 100644 index 000000000..bdf1e2050 --- /dev/null +++ b/script/deploy/ApproveDeployerCoordinator.s.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity 0.8.20; + +import { Script } from "forge-std/Script.sol"; +import { VmSafe } from "forge-std/Vm.sol"; +import { HyperdriveFactory } from "contracts/src/factory/HyperdriveFactory.sol"; +import { PoolDeploymentConfig } from "script/deploy/PoolDeploymentConfig.sol"; + +contract Deployer is Script, PoolDeploymentConfig { + function run() external { + // address governance = 0xc187a246Ee5A4Fe4395a8f6C0f9F2AA3A5a06e9b; + address factory = 0x7C6FC46Cc0cC550455E5b97da1e4B8777619e5f7; + address coordinator = 0x548b9ccE3e39df56EC25b545B8F95200caf2D247; + + HyperdriveFactory hyperdriveFactory = HyperdriveFactory( + payable(factory) + ); + address governance = hyperdriveFactory.governance(); + vm.startBroadcast( + 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + ); + hyperdriveFactory.addDeployerCoordinator(coordinator); + } +} diff --git a/script/deploy/FactoryDeployer.s.sol b/script/deploy/FactoryDeployer.s.sol index 08568d2ac..c81095411 100644 --- a/script/deploy/FactoryDeployer.s.sol +++ b/script/deploy/FactoryDeployer.s.sol @@ -50,6 +50,7 @@ import { FixedPointMath } from "contracts/src/libraries/FixedPointMath.sol"; import { ERC20ForwarderFactory } from "contracts/src/token/ERC20ForwarderFactory.sol"; import { ERC20Mintable } from "contracts/test/ERC20Mintable.sol"; import { MockERC4626 } from "contracts/test/MockERC4626.sol"; +import { MockEzEthPool } from "contracts/test/MockEzEthPool.sol"; import { MockLido } from "contracts/test/MockLido.sol"; import { MockRocketPool } from "contracts/test/MockRocketPool.sol"; import { Lib } from "test/utils/Lib.sol"; @@ -182,35 +183,47 @@ contract Deployer is Script, FactoryDeploymentConfig { } function deployHyperdriveCoordinators() internal { - // Deploy the ERC4626Coordinator. - ERC4626HyperdriveDeployerCoordinator erc4626Coordinator = new ERC4626HyperdriveDeployerCoordinator( - address(summary.factory), - address(new ERC4626HyperdriveCoreDeployer()), - address(new ERC4626Target0Deployer()), - address(new ERC4626Target1Deployer()), - address(new ERC4626Target2Deployer()), - address(new ERC4626Target3Deployer()), - address(new ERC4626Target4Deployer()) - ); - summary.erc4626Coordinator = address(erc4626Coordinator); + // // Deploy the ERC4626Coordinator. + // ERC4626HyperdriveDeployerCoordinator erc4626Coordinator = new ERC4626HyperdriveDeployerCoordinator( + // address(summary.factory), + // address(new ERC4626HyperdriveCoreDeployer()), + // address(new ERC4626Target0Deployer()), + // address(new ERC4626Target1Deployer()), + // address(new ERC4626Target2Deployer()), + // address(new ERC4626Target3Deployer()), + // address(new ERC4626Target4Deployer()) + // ); + // summary.erc4626Coordinator = address(erc4626Coordinator); - // Deploy a mock StETH token if an address was not provided. - if (deployment.tokens.steth == address(0)) { - deployment.tokens.steth = deployStETH(); - summary.steth = deployment.tokens.steth; - } - // Deploy the StETHCoordinator. - StETHHyperdriveDeployerCoordinator stethCoordinator = new StETHHyperdriveDeployerCoordinator( - address(summary.factory), - address(new StETHHyperdriveCoreDeployer()), - address(new StETHTarget0Deployer()), - address(new StETHTarget1Deployer()), - address(new StETHTarget2Deployer()), - address(new StETHTarget3Deployer()), - address(new StETHTarget4Deployer()), - ILido(deployment.tokens.steth) - ); - summary.stethCoordinator = address(stethCoordinator); + // // Deploy a mock StETH token if an address was not provided. + // if (deployment.tokens.steth == address(0)) { + // deployment.tokens.steth = deployStETH(); + // summary.steth = deployment.tokens.steth; + // } + // // Deploy the StETHCoordinator. + // StETHHyperdriveDeployerCoordinator stethCoordinator = new StETHHyperdriveDeployerCoordinator( + // address(summary.factory), + // address(new StETHHyperdriveCoreDeployer()), + // address(new StETHTarget0Deployer()), + // address(new StETHTarget1Deployer()), + // address(new StETHTarget2Deployer()), + // address(new StETHTarget3Deployer()), + // address(new StETHTarget4Deployer()), + // ILido(deployment.tokens.steth) + // ); + // summary.stethCoordinator = address(stethCoordinator); + + // anvil user 0 + address admin = 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266; + + MockEzEthPool ezethPool = new MockEzEthPool( + 5e16, // 5% initial interest rate + admin, + false, + 1_000_000 ether // max mint + ); + summary.ezeth = address(ezethPool); + deployment.tokens.ezeth = address(ezethPool); // Deply the EzETHCoordinator if an address for EzETH was provided, otherwise skip. if (deployment.tokens.ezeth != address(0)) { @@ -219,35 +232,42 @@ contract Deployer is Script, FactoryDeploymentConfig { address(summary.factory), address( new EzETHHyperdriveCoreDeployer( - IRestakeManager(deployment.tokens.ezeth) + ezethPool + // IRestakeManager(deployment.tokens.ezeth) ) ), address( new EzETHTarget0Deployer( - IRestakeManager(deployment.tokens.ezeth) + ezethPool + // IRestakeManager(deployment.tokens.ezeth) ) ), address( new EzETHTarget1Deployer( - IRestakeManager(deployment.tokens.ezeth) + ezethPool + // IRestakeManager(deployment.tokens.ezeth) ) ), address( new EzETHTarget2Deployer( - IRestakeManager(deployment.tokens.ezeth) + ezethPool + // IRestakeManager(deployment.tokens.ezeth) ) ), address( new EzETHTarget3Deployer( - IRestakeManager(deployment.tokens.ezeth) + ezethPool + // IRestakeManager(deployment.tokens.ezeth) ) ), address( new EzETHTarget4Deployer( - IRestakeManager(deployment.tokens.ezeth) + ezethPool + // IRestakeManager(deployment.tokens.ezeth) ) ), - IRestakeManager(deployment.tokens.ezeth) + ezethPool + // IRestakeManager(deployment.tokens.ezeth) ) ); } else { @@ -256,43 +276,43 @@ contract Deployer is Script, FactoryDeploymentConfig { ); } - // Deply the LsETHCoordinator if an address for LsETH was provided, otherwise skip. - if (deployment.tokens.lseth != address(0)) { - summary.lsethCoordinator = address( - new LsETHHyperdriveDeployerCoordinator( - address(summary.factory), - address(new LsETHHyperdriveCoreDeployer()), - address(new LsETHTarget0Deployer()), - address(new LsETHTarget1Deployer()), - address(new LsETHTarget2Deployer()), - address(new LsETHTarget3Deployer()), - address(new LsETHTarget4Deployer()), - IRiverV1(deployment.tokens.lseth) - ) - ); - } else { - console.log( - "skipping deployment of LsETHCoordinator... no LsETH address provided." - ); - } + // // Deply the LsETHCoordinator if an address for LsETH was provided, otherwise skip. + // if (deployment.tokens.lseth != address(0)) { + // summary.lsethCoordinator = address( + // new LsETHHyperdriveDeployerCoordinator( + // address(summary.factory), + // address(new LsETHHyperdriveCoreDeployer()), + // address(new LsETHTarget0Deployer()), + // address(new LsETHTarget1Deployer()), + // address(new LsETHTarget2Deployer()), + // address(new LsETHTarget3Deployer()), + // address(new LsETHTarget4Deployer()), + // IRiverV1(deployment.tokens.lseth) + // ) + // ); + // } else { + // console.log( + // "skipping deployment of LsETHCoordinator... no LsETH address provided." + // ); + // } - // Deploy a mock RETH token if an address was not provided. - if (deployment.tokens.reth == address(0)) { - deployment.tokens.reth = deployRETH(); - summary.reth = deployment.tokens.reth; - } - summary.rethCoordinator = address( - new RETHHyperdriveDeployerCoordinator( - address(summary.factory), - address(new RETHHyperdriveCoreDeployer()), - address(new RETHTarget0Deployer()), - address(new RETHTarget1Deployer()), - address(new RETHTarget2Deployer()), - address(new RETHTarget3Deployer()), - address(new RETHTarget4Deployer()), - IRocketTokenRETH(deployment.tokens.reth) - ) - ); + // // Deploy a mock RETH token if an address was not provided. + // if (deployment.tokens.reth == address(0)) { + // deployment.tokens.reth = deployRETH(); + // summary.reth = deployment.tokens.reth; + // } + // summary.rethCoordinator = address( + // new RETHHyperdriveDeployerCoordinator( + // address(summary.factory), + // address(new RETHHyperdriveCoreDeployer()), + // address(new RETHTarget0Deployer()), + // address(new RETHTarget1Deployer()), + // address(new RETHTarget2Deployer()), + // address(new RETHTarget3Deployer()), + // address(new RETHTarget4Deployer()), + // IRocketTokenRETH(deployment.tokens.reth) + // ) + // ); } function deployStETH() internal returns (address) { diff --git a/script/deploy/PoolDeployer.s.sol b/script/deploy/PoolDeployer.s.sol index f1c50545d..b455d0a0d 100644 --- a/script/deploy/PoolDeployer.s.sol +++ b/script/deploy/PoolDeployer.s.sol @@ -50,6 +50,7 @@ import { FixedPointMath } from "contracts/src/libraries/FixedPointMath.sol"; import { ERC20ForwarderFactory } from "contracts/src/token/ERC20ForwarderFactory.sol"; import { ERC20Mintable } from "contracts/test/ERC20Mintable.sol"; import { MockRocketPool } from "contracts/test/MockRocketPool.sol"; +import { MockEzEthPool } from "contracts/test/MockEzEthPool.sol"; import { MockERC4626 } from "contracts/test/MockERC4626.sol"; import { MockLido } from "contracts/test/MockLido.sol"; import { Lib } from "test/utils/Lib.sol"; @@ -199,6 +200,24 @@ contract Deployer is Script, PoolDeploymentConfig { ); } + // If the pool is EZETH make some instance-specific preparations. + if ( + strEquals( + summary.coordinatorName, + "EzETHHyperdriveDeployerCoordinator" + ) + ) { + // Obtain sufficient shares for the contribution. + MockEzEthPool(deployment.tokens.shares).submit{ + value: deployment.init.contribution + }(summary.deployer); + // Approve the coordinator for the contribution. + MockEzEthPool(deployment.tokens.shares).approve( + deployment.init.coordinator, + deployment.init.contribution + ); + } + // Save pool parameters to summary. summary.factory = deployment.init.factory; summary.coordinator = deployment.init.coordinator; diff --git a/script/deploy/README.md b/script/deploy/README.md index 1b1b654e0..3f37a9a4e 100644 --- a/script/deploy/README.md +++ b/script/deploy/README.md @@ -38,6 +38,7 @@ Hyperdrive contract deployments have three primary steps: ```sh ETHERSCAN_API_KEY=<...> PRIVATE_KEY=<...> + SEPOLIA_RPC_URL=<..> ``` - Sample call: diff --git a/script/deploy/config/sepolia-factory.toml b/script/deploy/config/sepolia-factory.toml index 1f7258904..adc92ac80 100644 --- a/script/deploy/config/sepolia-factory.toml +++ b/script/deploy/config/sepolia-factory.toml @@ -3,11 +3,16 @@ rpcName = "sepolia" chainId = 11155111 [access] - admin = "0x25a6592F1eaA22cD7BFc590A90d56FbB765b1Edc" - governance = "0x25a6592F1eaA22cD7BFc590A90d56FbB765b1Edc" + admin = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + governance = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" defaultPausers = ["0x0000000000000000000000000000000000000000"] - feeCollector = "0x25a6592F1eaA22cD7BFc590A90d56FbB765b1Edc" - sweepCollector = "0x25a6592F1eaA22cD7BFc590A90d56FbB765b1Edc" + feeCollector = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + sweepCollector = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" +# admin = "0x25a6592F1eaA22cD7BFc590A90d56FbB765b1Edc" +# governance = "0x25a6592F1eaA22cD7BFc590A90d56FbB765b1Edc" +# defaultPausers = ["0x0000000000000000000000000000000000000000"] +# feeCollector = "0x25a6592F1eaA22cD7BFc590A90d56FbB765b1Edc" +# sweepCollector = "0x25a6592F1eaA22cD7BFc590A90d56FbB765b1Edc" [checkpointDuration] resolution = { value = 8, unit = "hours" } min = { value = 24, unit = "hours" } diff --git a/script/deploy/config/sepolia-pool-EZETH.toml b/script/deploy/config/sepolia-pool-EZETH.toml new file mode 100644 index 000000000..baad474a8 --- /dev/null +++ b/script/deploy/config/sepolia-pool-EZETH.toml @@ -0,0 +1,46 @@ +#:schema ../schema/pool-schema.json + +rpcName = "sepolia" +chainId = 11155111 +name = "EZETH" + +deployer = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" +ezeth = "0x175b607D64C1304CC8bfbB0F578E518F97D801C6" +coordinator = "0x548b9ccE3e39df56EC25b545B8F95200caf2D247" +factory = "0x7C6FC46Cc0cC550455E5b97da1e4B8777619e5f7" +registry = "0xBb037cfd37958605d0357A1577fAaa0aEE0B8981" + +deploymentId = "0xdeadbabe" +salt = "0x69420" +contribution = { value = 1000, unit = "bips" } +fixedAPR = { value = 300, unit = "bips" } +timeStretchAPR = { value = 300, unit = "bips" } +[access] + # admin = "0xc187a246Ee5A4Fe4395a8f6C0f9F2AA3A5a06e9b" + # governance = "0xc187a246Ee5A4Fe4395a8f6C0f9F2AA3A5a06e9b" + # feeCollector = "0xc187a246Ee5A4Fe4395a8f6C0f9F2AA3A5a06e9b" + # sweepCollector = "0xc187a246Ee5A4Fe4395a8f6C0f9F2AA3A5a06e9b" + + # anvil user 0 + admin = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + governance = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + feeCollector = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + sweepCollector = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" +[bounds] + minimumShareReserves = { value = 10, unit = "bips" } + minimumTransactionAmount = { value = 1000000, unit = "gwei" } + positionDuration = { value = 30, unit = "days" } + checkpointDuration = { value = 1, unit = "days" } + timeStretch = 0 +[fees] + curve = { value = 100, unit = "bips" } + flat = { value = 5, unit = "bips" } # will be multiplied by (position_duration / 365 ) + governanceLP = { value = 1500, unit = "bips" } + governanceZombie = { value = 300, unit = "bips" } +[options] + destination = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" + asBase = false + extraData = "0x00" +[tokens] + base = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + shares = "0x175b607D64C1304CC8bfbB0F578E518F97D801C6" diff --git a/script/deploy/summaries/factory-sepolia-1713901592336.toml b/script/deploy/summaries/factory-sepolia-1713901592336.toml new file mode 100644 index 000000000..5a71a9d8d --- /dev/null +++ b/script/deploy/summaries/factory-sepolia-1713901592336.toml @@ -0,0 +1,15 @@ +chain_id = 11155111 +deployer = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" +erc4626Coordinator = "0x0000000000000000000000000000000000000000" +ezeth = "0x175b607D64C1304CC8bfbB0F578E518F97D801C6" +ezethCoordinator = "0xcF802e12Fbb3FacA96D32a661bebb45242E29180" +factory = "0x7C6FC46Cc0cC550455E5b97da1e4B8777619e5f7" +linker_factory = "0xd3f851d8d0eCD138B6F90e02C17627B8c38Cc467" +lseth = "0x0000000000000000000000000000000000000000" +lsethCoordinator = "0x0000000000000000000000000000000000000000" +registry = "0xBb037cfd37958605d0357A1577fAaa0aEE0B8981" +reth = "0x0000000000000000000000000000000000000000" +rethCoordinator = "0x0000000000000000000000000000000000000000" +rpcName = "sepolia" +steth = "0x0000000000000000000000000000000000000000" +stethCoordinator = "0x0000000000000000000000000000000000000000" diff --git a/script/deploy/summaries/factory-sepolia-1713906524017.toml b/script/deploy/summaries/factory-sepolia-1713906524017.toml new file mode 100644 index 000000000..947f49fc2 --- /dev/null +++ b/script/deploy/summaries/factory-sepolia-1713906524017.toml @@ -0,0 +1,17 @@ +chain_id = 11155111 +erc4626Coordinator = "0x0000000000000000000000000000000000000000" +linker_factory = "0xd3f851d8d0eCD138B6F90e02C17627B8c38Cc467" +lseth = "0x0000000000000000000000000000000000000000" +lsethCoordinator = "0x0000000000000000000000000000000000000000" + +deployer = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" +ezeth = "0x175b607D64C1304CC8bfbB0F578E518F97D801C6" +ezethCoordinator = "0x548b9ccE3e39df56EC25b545B8F95200caf2D247" +factory = "0x7C6FC46Cc0cC550455E5b97da1e4B8777619e5f7" +registry = "0xBb037cfd37958605d0357A1577fAaa0aEE0B8981" + +reth = "0x0000000000000000000000000000000000000000" +rethCoordinator = "0x0000000000000000000000000000000000000000" +rpcName = "sepolia" +steth = "0x0000000000000000000000000000000000000000" +stethCoordinator = "0x0000000000000000000000000000000000000000" diff --git a/script/deploy/summaries/factory-sepolia-1713907553299.toml b/script/deploy/summaries/factory-sepolia-1713907553299.toml new file mode 100644 index 000000000..da5776182 --- /dev/null +++ b/script/deploy/summaries/factory-sepolia-1713907553299.toml @@ -0,0 +1,15 @@ +chain_id = 11155111 +deployer = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" +erc4626Coordinator = "0x0000000000000000000000000000000000000000" +ezeth = "0x175b607D64C1304CC8bfbB0F578E518F97D801C6" +ezethCoordinator = "0x548b9ccE3e39df56EC25b545B8F95200caf2D247" +factory = "0x7C6FC46Cc0cC550455E5b97da1e4B8777619e5f7" +linker_factory = "0xd3f851d8d0eCD138B6F90e02C17627B8c38Cc467" +lseth = "0x0000000000000000000000000000000000000000" +lsethCoordinator = "0x0000000000000000000000000000000000000000" +registry = "0xBb037cfd37958605d0357A1577fAaa0aEE0B8981" +reth = "0x0000000000000000000000000000000000000000" +rethCoordinator = "0x0000000000000000000000000000000000000000" +rpcName = "sepolia" +steth = "0x0000000000000000000000000000000000000000" +stethCoordinator = "0x0000000000000000000000000000000000000000" diff --git a/script/deploy/summaries/factory-sepolia-1713908684922.toml b/script/deploy/summaries/factory-sepolia-1713908684922.toml new file mode 100644 index 000000000..da5776182 --- /dev/null +++ b/script/deploy/summaries/factory-sepolia-1713908684922.toml @@ -0,0 +1,15 @@ +chain_id = 11155111 +deployer = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" +erc4626Coordinator = "0x0000000000000000000000000000000000000000" +ezeth = "0x175b607D64C1304CC8bfbB0F578E518F97D801C6" +ezethCoordinator = "0x548b9ccE3e39df56EC25b545B8F95200caf2D247" +factory = "0x7C6FC46Cc0cC550455E5b97da1e4B8777619e5f7" +linker_factory = "0xd3f851d8d0eCD138B6F90e02C17627B8c38Cc467" +lseth = "0x0000000000000000000000000000000000000000" +lsethCoordinator = "0x0000000000000000000000000000000000000000" +registry = "0xBb037cfd37958605d0357A1577fAaa0aEE0B8981" +reth = "0x0000000000000000000000000000000000000000" +rethCoordinator = "0x0000000000000000000000000000000000000000" +rpcName = "sepolia" +steth = "0x0000000000000000000000000000000000000000" +stethCoordinator = "0x0000000000000000000000000000000000000000" diff --git a/script/deploy/summaries/pool-sepolia-EZETH-1713908711540.toml b/script/deploy/summaries/pool-sepolia-EZETH-1713908711540.toml new file mode 100644 index 000000000..84bbaef1e --- /dev/null +++ b/script/deploy/summaries/pool-sepolia-EZETH-1713908711540.toml @@ -0,0 +1,21 @@ +baseToken = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" +chain_id = 11155111 +coordinator = "0x548b9ccE3e39df56EC25b545B8F95200caf2D247" +coordinatorName = "EzETHHyperdriveDeployerCoordinator" +deployer = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" +factory = "0x7C6FC46Cc0cC550455E5b97da1e4B8777619e5f7" +name = "EZETH" +registry = "0x0000000000000000000000000000000000000000" +registryUpdated = true +rpcName = "sepolia" +sharesToken = "0x175b607D64C1304CC8bfbB0F578E518F97D801C6" + +[instanceSummary] +hyperdrive = "0x005a0B91A78098738150ce66A8C193b2588f1C89" +hyperdriveConstructorArgs = "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000175b607d64c1304cc8bfbb0f578e518f97d801c6000000000000000000000000d3f851d8d0ecd138b6f90e02c17627b8c38cc46754fb166662b73302da315b573963f83ddefce37501a5a6f7721d2a35f55b03320000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000038d7ea4c680000000000000000000000000000000000000000000000000000000000000278d0000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000007e586abadac10000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000000256061f31dce0000000000000000000000000000000000000000000000000214e8348c4f0000000000000000000000000000000000000000000000000000006a94d74f4300000000000000000000000000000c38c5e891438a7fa1a55e42db286bd5983654c5000000000000000000000000896ca4f8071cc6541094f8f66cffbdece40ea4eb000000000000000000000000afaa5c03dd2feea4edc1105d71dd6352cc20e05c000000000000000000000000d41c18f165afd78e72b041e3e9a96d9821c8fd8d000000000000000000000000789b9e2ae5c667c1b6a2d3ea94c1befc3384c857" +target0 = "0x0c38c5e891438A7fA1a55E42Db286Bd5983654C5" +target1 = "0x896ca4F8071cc6541094f8f66cFfbDeCe40EA4Eb" +target2 = "0xAfAA5C03DD2fEEa4edC1105d71DD6352Cc20E05C" +target3 = "0xD41c18f165aFD78E72B041E3E9a96d9821c8FD8d" +target4 = "0x789B9E2aE5C667C1B6A2d3Ea94C1BeFc3384C857" +targetConstructorArgs = "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000175b607d64c1304cc8bfbb0f578e518f97d801c6000000000000000000000000d3f851d8d0ecd138b6f90e02c17627b8c38cc46754fb166662b73302da315b573963f83ddefce37501a5a6f7721d2a35f55b03320000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000038d7ea4c6800000000000000000000000000000000000000000000000000000038d7ea4c680000000000000000000000000000000000000000000000000000000000000278d0000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000007e586abadac10000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000002386f26fc100000000000000000000000000000000000000000000000000000000256061f31dce0000000000000000000000000000000000000000000000000214e8348c4f0000000000000000000000000000000000000000000000000000006a94d74f430000"