From 579940faf6bfcb04609220c8e2ada623a30b7e3e Mon Sep 17 00:00:00 2001 From: rudewalt Date: Mon, 23 Jun 2025 14:53:22 +0300 Subject: [PATCH] deploy pt-usr-25sep2025/usr pool --- packages/contracts/hardhat.config.ts | 13 +++ packages/contracts/verify/factory.js | 13 +++ .../data/deploy/base-v1.5-pendle/config.json | 91 +++++++++++++++++++ .../base-v1.5-pendle/states/2025-06-23.json | 28 ++++++ .../hardhat-configs/hardhat.config.ts | 12 +++ .../router/hardhat-configs/hardhat.config.ts | 12 +++ packages/router/verify/pendleMarketAdapter.js | 15 +++ packages/router/verify/router.js | 4 +- packages/timelock/hardhat.config.ts | 5 +- 9 files changed, 190 insertions(+), 3 deletions(-) create mode 100644 packages/contracts/verify/factory.js create mode 100644 packages/deploy/src/data/deploy/base-v1.5-pendle/config.json create mode 100644 packages/deploy/src/data/deploy/base-v1.5-pendle/states/2025-06-23.json create mode 100644 packages/router/verify/pendleMarketAdapter.js diff --git a/packages/contracts/hardhat.config.ts b/packages/contracts/hardhat.config.ts index 860ea252..0e7760c8 100644 --- a/packages/contracts/hardhat.config.ts +++ b/packages/contracts/hardhat.config.ts @@ -4,6 +4,7 @@ require('hardhat-contract-sizer'); import 'solidity-docgen'; import './scripts'; import { config as dotEnvConfig } from 'dotenv'; +import { network } from 'hardhat'; dotEnvConfig(); @@ -50,6 +51,9 @@ const config = { sonic: { url: 'https://rpc.soniclabs.com', }, + base: { + url: 'https://mainnet.base.org', + }, }, etherscan: { apiKey: { @@ -62,6 +66,7 @@ const config = { blastSepolia: 'blast_sepolia', mainnet: process.env.ETH_API_KEY, sonic: process.env.SONIC_API_KEY, + base: process.env.BASE_API_KEY, }, customChains: [ { @@ -104,6 +109,14 @@ const config = { browserURL: 'https://sonicscan.org', }, }, + { + network: 'base', + chainId: 8453, + urls: { + apiURL: 'https://api.basescan.org/api', + browserURL: 'https://basescan.org', + }, + }, ], }, mocha: { diff --git a/packages/contracts/verify/factory.js b/packages/contracts/verify/factory.js new file mode 100644 index 00000000..25e2503a --- /dev/null +++ b/packages/contracts/verify/factory.js @@ -0,0 +1,13 @@ +module.exports = [ + '0x1768Faee0A63927FeB81100046f5D63BfE0f08dB', + '0x1e36749E00229759dca262cB25Ad8d9B21bEB3F5', + '0x601A564628f9467ea76945fdDC6F9C7604eE1C1E', + '0x4200000000000000000000000000000000000006', + '0xd48658962b93aa404fD56baa7FD07977a0EB05a9', +]; + +// address _marginlyPoolImplementation, +// address _swapRouter, +// address _feeHolder, +// address _WETH9, +// address _techPositionOwner diff --git a/packages/deploy/src/data/deploy/base-v1.5-pendle/config.json b/packages/deploy/src/data/deploy/base-v1.5-pendle/config.json new file mode 100644 index 00000000..f3db9009 --- /dev/null +++ b/packages/deploy/src/data/deploy/base-v1.5-pendle/config.json @@ -0,0 +1,91 @@ +{ + "systemContextDefaults": { + "ethNodeUri": "https://mainnet.base.org" + }, + "connection": { + "assertChainId": 8453, + "ethOptions": { + "gasPrice": 7000000 + } + }, + "tokens": [ + { + "id": "weth", + "address": "0x4200000000000000000000000000000000000006", + "assertSymbol": "WETH", + "assertDecimals": 18 + }, + { + "id": "pt-usr-25sep2025", + "address": "0xa6f0a4d18b6f6ddd408936e81b7b3a8befa18e77", + "assertSymbol": "PT-USR-25SEP2025", + "assertDecimals": 18 + }, + { + "id": "usr", + "address": "0x35E5dB674D8e93a03d814FA0ADa70731efe8a4b9", + "assertSymbol": "USR", + "assertDecimals": 18 + } + ], + "prices": [], + "priceOracles": [ + { + "id": "pendleMarketOracle", + "type": "pendleMarket", + "pendlePtLpOracle": "0x9a9fa8338dd5e5b2188006f1cd2ef26d921650c2", + "settings": [ + { + "quoteTokenId": "usr", + "baseTokenId": "pt-usr-25sep2025", + "pendleMarket": "0x715509bde846104cf2ccebf6fdf7ef1bb874bc45", + "secondsAgo": "30 min", + "secondsAgoLiquidation": "5 sec" + } + ] + } + ], + "marginlyFactory": { + "feeHolder": "0x601A564628f9467ea76945fdDC6F9C7604eE1C1E", + "techPositionOwner": "0xd48658962b93aa404fD56baa7FD07977a0EB05a9", + "wethTokenId": "weth" + }, + "marginlyPools": [ + { + "id": "pt-usr-25sep2025-usr", + "baseTokenId": "pt-usr-25sep2025", + "quoteTokenId": "usr", + "priceOracleId": "pendleMarketOracle", + "defaultSwapCallData": "20447233", + "params": { + "interestRate": "0.5%", + "maxLeverage": "20", + "swapFee": "0%", + "fee": "0%", + "mcSlippage": "0.1%", + "positionMinAmount": "1", + "quoteLimit": "200000" + } + } + ], + "adapters": [ + { + "dexId": 19, + "adapterName": "PendleMarketAdapter", + "pools": [ + { + "poolAddress": "0x715509bde846104cf2ccebf6fdf7ef1bb874bc45", + "slippage": "45", + "tokenAId": "pt-usr-25sep2025", + "tokenBId": "usr" + } + ] + } + ], + "marginlyKeeper": { + "aaveKeeper": { + "aavePoolAddressesProvider": "0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D" + }, + "uniswapKeeper": false + } +} diff --git a/packages/deploy/src/data/deploy/base-v1.5-pendle/states/2025-06-23.json b/packages/deploy/src/data/deploy/base-v1.5-pendle/states/2025-06-23.json new file mode 100644 index 00000000..c8c36568 --- /dev/null +++ b/packages/deploy/src/data/deploy/base-v1.5-pendle/states/2025-06-23.json @@ -0,0 +1,28 @@ +{ + "contracts": { + "priceOracle_pendleMarketOracle": { + "address": "0x170eBc619CdB767Fd987D54a08D77c0B4b93209e", + "txHash": "0xd0fd0c42cd78ff8f0a083ee09efd36bd58a518b32fa62cf5424e6ace7b965d0e" + }, + "PendleMarketAdapter_19": { + "address": "0x1D17f7a1E9A53Cce6C89495AF1E3753c11Bf6DA2", + "txHash": "0x9d0b985efe8612155416ea4ea055fbe2084d04a9172f76d5a8a337b6ec7b6c61" + }, + "MarginlyRouter": { + "address": "0x1e36749E00229759dca262cB25Ad8d9B21bEB3F5", + "txHash": "0xb44d1940e45c0aa9b3cdd634edd05de78c1404a7e7f9cbbab7f5883537911891" + }, + "marginlyPoolImplementation": { + "address": "0x1768Faee0A63927FeB81100046f5D63BfE0f08dB", + "txHash": "0x195e7b15df646011287dd60e6f18be316ba69ae93473323f232cc436a3768cfa" + }, + "marginlyFactory": { + "address": "0xb74a2382B5661969f0235b5c7FaCa77aA38e1eDc", + "txHash": "0xe79c90dab57df36d2f701ef9c1a03ba082f8cf84cc6d7f39cda9610f9e404cd8" + }, + "marginlyPool_pt-usr-25sep2025-usr": { + "address": "0x08555D2d418019a875d710087BabB952ef4dFDd7", + "txHash": "0x71dd89968fe831c44c21642c1708f6e7c052b604865cedaea048a5a534f700d6" + } + } +} diff --git a/packages/periphery/hardhat-configs/hardhat.config.ts b/packages/periphery/hardhat-configs/hardhat.config.ts index ad27a8e5..0514ca52 100644 --- a/packages/periphery/hardhat-configs/hardhat.config.ts +++ b/packages/periphery/hardhat-configs/hardhat.config.ts @@ -41,6 +41,9 @@ const config = { sonic: { url: 'https://rpc.soniclabs.com', }, + base: { + url: 'https://mainnet.base.org', + }, }, etherscan: { apiKey: { @@ -48,6 +51,7 @@ const config = { artioTestnet: 'artio_testnet', mainnet: process.env.ETH_API_KEY, sonic: process.env.SONIC_API_KEY, + base: process.env.BASE_API_KEY, }, customChains: [ { @@ -66,6 +70,14 @@ const config = { browserURL: 'https://sonicscan.org', }, }, + { + network: 'base', + chainId: 8453, + urls: { + apiURL: 'https://api.basescan.org/api', + browserURL: 'https://basescan.org', + }, + }, ], }, mocha: { diff --git a/packages/router/hardhat-configs/hardhat.config.ts b/packages/router/hardhat-configs/hardhat.config.ts index 0e49d61c..de90ee8d 100644 --- a/packages/router/hardhat-configs/hardhat.config.ts +++ b/packages/router/hardhat-configs/hardhat.config.ts @@ -48,6 +48,9 @@ const config = { sonic: { url: 'https://rpc.soniclabs.com', }, + base: { + url: 'https://mainnet.base.org', + }, }, etherscan: { apiKey: { @@ -58,6 +61,7 @@ const config = { mainnet: process.env.ETH_API_KEY, holesky: process.env.API_KEY, sonic: process.env.SONIC_API_KEY, + base: process.env.BASE_API_KEY, }, customChains: [ { @@ -92,6 +96,14 @@ const config = { browserURL: 'https://sonicscan.org', }, }, + { + network: 'base', + chainId: 8453, + urls: { + apiURL: 'https://api.basescan.org/api', + browserURL: 'https://basescan.org', + }, + }, ], }, mocha: { diff --git a/packages/router/verify/pendleMarketAdapter.js b/packages/router/verify/pendleMarketAdapter.js new file mode 100644 index 00000000..83b57693 --- /dev/null +++ b/packages/router/verify/pendleMarketAdapter.js @@ -0,0 +1,15 @@ +module.exports = [ + [ + { + pendleMarket: '0x715509bde846104cf2ccebf6fdf7ef1bb874bc45', + slippage: 45, + ptToken: '0xa6f0a4d18b6f6ddd408936e81b7b3a8befa18e77', + ibToken: '0x35E5dB674D8e93a03d814FA0ADa70731efe8a4b9', + }, + ], +]; + +// address pendleMarket; +// uint8 slippage; +// address ptToken; +// address ibToken; diff --git a/packages/router/verify/router.js b/packages/router/verify/router.js index 302df1eb..97a25526 100644 --- a/packages/router/verify/router.js +++ b/packages/router/verify/router.js @@ -1,8 +1,8 @@ module.exports = [ [ { - dexIndex: 0, - adapter: '0x170eBc619CdB767Fd987D54a08D77c0B4b93209e', + dexIndex: 19, + adapter: '0x1D17f7a1E9A53Cce6C89495AF1E3753c11Bf6DA2', }, ], ]; diff --git a/packages/timelock/hardhat.config.ts b/packages/timelock/hardhat.config.ts index af39ecd1..6171ea3e 100644 --- a/packages/timelock/hardhat.config.ts +++ b/packages/timelock/hardhat.config.ts @@ -2,6 +2,9 @@ import '@nomicfoundation/hardhat-toolbox'; import 'hardhat-contract-sizer'; import * as defaultConfig from './hardhat.common'; import './tasks/timelock'; +import { config as dotEnvConfig } from 'dotenv'; + +dotEnvConfig(); const config = { ...defaultConfig.default, @@ -10,7 +13,7 @@ const config = { url: 'https://arb1.arbitrum.io/rpc', }, ethereum: { - url: 'https://rpc.ankr.com/eth', + url: process.env.ETH_RPC_URL, }, holesky: { url: 'https://1rpc.io/holesky',