feat: eclipse warp batch #2 (#4799)

### Description

- ORCA (eclipse <> solana)
- WBTC (ethereum <> eclipse)
- USDT (ethereum <> eclipse <> solana)
pull/4804/head
Daniel Savu 3 weeks ago committed by GitHub
parent 86a0bb9198
commit 2f0495914a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 10
      rust/sealevel/environments/mainnet3/warp-routes/ORCA-eclipse-solana/program-ids.json
  2. 17
      rust/sealevel/environments/mainnet3/warp-routes/ORCA-eclipse-solana/token-config.json
  3. 14
      rust/sealevel/environments/mainnet3/warp-routes/USDT-eclipse-ethereum-solana/program-ids.json
  4. 23
      rust/sealevel/environments/mainnet3/warp-routes/USDT-eclipse-ethereum-solana/token-config.json
  5. 10
      rust/sealevel/environments/mainnet3/warp-routes/WBTC-eclipse-ethereum-solana/program-ids.json
  6. 16
      rust/sealevel/environments/mainnet3/warp-routes/WBTC-eclipse-ethereum-solana/token-config.json
  7. 2
      typescript/infra/config/environments/mainnet3/funding.ts
  8. 38
      typescript/infra/config/environments/mainnet3/warp/configGetters/getEclipseEthereumUSDTWarpConfig.ts
  9. 39
      typescript/infra/config/environments/mainnet3/warp/configGetters/getEclipseEthereumWBTCWarpConfig.ts
  10. 24
      typescript/infra/config/environments/mainnet3/warp/eclipse-ORCA-deployments.yaml
  11. 34
      typescript/infra/config/environments/mainnet3/warp/eclipse-USDT-deployments.yaml
  12. 23
      typescript/infra/config/environments/mainnet3/warp/eclipse-WBTC-deployments.yaml
  13. 2
      typescript/infra/config/environments/mainnet3/warp/warpIds.ts
  14. 4
      typescript/infra/config/warp.ts
  15. 25
      typescript/infra/scripts/funding/fund-keys-from-deployer.ts
  16. 24
      typescript/infra/scripts/generate-eclipse-usdt-warp-route-config.ts
  17. 24
      typescript/infra/scripts/generate-eclipse-wbtc-warp-route-config.ts
  18. 1
      typescript/infra/src/config/warp.ts
  19. 2
      typescript/infra/src/warp/helm.ts

@ -0,0 +1,10 @@
{
"solanamainnet": {
"hex": "0x709e5cd98def7e0acd1cd2f6b7b56a783f1ec212b34a6903c33fc6e2823a9ee9",
"base58": "8acihSm2QTGswniKgdgr4JBvJihZ1cakfvbqWCPBLoSp"
},
"eclipsemainnet": {
"hex": "0x6b0fb225a14358827459d705f4c98e87a7b243b3638f111779b6fb605c5d8306",
"base58": "8CvWJS7SPtauAXinJUURkBDLsGUXWiiTdENkEFUPjQ9j"
}
}

@ -0,0 +1,17 @@
{
"solanamainnet": {
"type": "collateral",
"decimals": 6,
"interchainGasPaymaster": "AkeHBbE5JkwVppujCQQ6WuxsVsJtruBAjUo6fDCFp6fF",
"token": "orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE",
"splTokenProgram": "token"
},
"eclipsemainnet": {
"type": "synthetic",
"decimals": 6,
"name": "Orca",
"symbol": "ORCA",
"uri": "https://raw.githubusercontent.com/hyperlane-xyz/hyperlane-registry/13ef3e3b8447ba446c562b7fb9b769324d35e6c0/deployments/warp_routes/ORCA/metadata.json",
"interchainGasPaymaster": "3Wp4qKkgf4tjXz1soGyTSndCgBPLZFSrZkiDZ8Qp9EEj"
}
}

@ -0,0 +1,14 @@
{
"solanamainnet": {
"hex": "0x9f9fcd70f9772f30e4cd5646890b640e88c6b82a8417f813aaf81dac0cd468b9",
"base58": "Bk79wMjvpPCh5iQcCEjPWFcG1V2TfgdwaBsWBEYFYSNU"
},
"eclipsemainnet": {
"hex": "0x4571f343c286dc844237b550560b90bf5e748a551d60721599b1ac0408d9c08d",
"base58": "5g5ujyYUNvdydwyDVCpZwPpgYRqH5RYJRi156cxyE3me"
},
"ethereum": {
"hex": "0x000000000000000000000000647c621ceb36853ef6a907e397adf18568e70543",
"base58": "1111111111112QCPXWTcdXUC6jAEEnqQtpRo5TXG"
}
}

@ -0,0 +1,23 @@
{
"solanamainnet": {
"type": "collateral",
"decimals": 6,
"interchainGasPaymaster": "AkeHBbE5JkwVppujCQQ6WuxsVsJtruBAjUo6fDCFp6fF",
"token": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
"splTokenProgram": "token"
},
"eclipsemainnet": {
"type": "synthetic",
"decimals": 6,
"name": "Tether USD",
"symbol": "USDT",
"uri": "https://raw.githubusercontent.com/hyperlane-xyz/hyperlane-registry/13ef3e3b8447ba446c562b7fb9b769324d35e6c0/deployments/warp_routes/USDT/metadata.json",
"interchainGasPaymaster": "3Wp4qKkgf4tjXz1soGyTSndCgBPLZFSrZkiDZ8Qp9EEj"
},
"ethereum": {
"type": "collateral",
"decimals": 6,
"token": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"foreignDeployment": "0x647C621CEb36853Ef6A907E397Adf18568E70543"
}
}

@ -0,0 +1,10 @@
{
"eclipsemainnet": {
"hex": "0x8751a99baf21a9cbc78e891d99ad8ca04bca545f5b668671a07cd0ec107923d2",
"base58": "A7EGCDYFw5R7Jfm6cYtKvY8dmkrYMgwRCJFkyQwpHTYu"
},
"ethereum": {
"hex": "0x0000000000000000000000005b4e223de74ef8c3218e66eecc541003cab3121a",
"base58": "1111111111112Gn8JRuL53pFjhHVdUdsv2Rzocp9"
}
}

@ -0,0 +1,16 @@
{
"eclipsemainnet": {
"type": "synthetic",
"decimals": 8,
"name": "Wrapped BTC",
"symbol": "WBTC",
"uri": "https://raw.githubusercontent.com/hyperlane-xyz/hyperlane-registry/13ef3e3b8447ba446c562b7fb9b769324d35e6c0/deployments/warp_routes/WBTC/metadata.json",
"interchainGasPaymaster": "3Wp4qKkgf4tjXz1soGyTSndCgBPLZFSrZkiDZ8Qp9EEj"
},
"ethereum": {
"type": "collateral",
"decimals": 8,
"token": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
"foreignDeployment": "0x5B4e223DE74ef8c3218e66EEcC541003CAB3121A"
}
}

@ -10,7 +10,7 @@ export const keyFunderConfig: KeyFunderConfig<
> = {
docker: {
repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
tag: '2cde782-20241029-100534',
tag: 'b1366fa-20241101-173610',
},
// We're currently using the same deployer/key funder key as mainnet2.
// To minimize nonce clobbering we offset the key funder cron

@ -0,0 +1,38 @@
import { ethers } from 'ethers';
import {
ChainMap,
RouterConfig,
TokenRouterConfig,
TokenType,
} from '@hyperlane-xyz/sdk';
import { tokens } from '../../../../../src/config/warp.js';
import { getRegistry as getMainnet3Registry } from '../../chains.js';
export const getEclipseEthereumUSDTWarpConfig = async (
routerConfig: ChainMap<RouterConfig>,
): Promise<ChainMap<TokenRouterConfig>> => {
const registry = await getMainnet3Registry();
// @ts-ignore - foreignDeployment configs don't conform to the TokenRouterConfig
const eclipsemainnet: TokenRouterConfig = {
type: TokenType.synthetic,
foreignDeployment: '5g5ujyYUNvdydwyDVCpZwPpgYRqH5RYJRi156cxyE3me',
gas: 300_000,
mailbox: (await registry.getChainAddresses('eclipsemainnet'))!.mailbox,
owner: '9bRSUPjfS3xS6n5EfkJzHFTRDa4AHLda8BU2pP4HoWnf',
interchainSecurityModule: ethers.constants.AddressZero,
};
let ethereum: TokenRouterConfig = {
...routerConfig.ethereum,
type: TokenType.collateral,
token: tokens.ethereum.USDT,
interchainSecurityModule: ethers.constants.AddressZero,
};
return {
eclipsemainnet,
ethereum,
};
};

@ -0,0 +1,39 @@
import { ethers } from 'ethers';
import {
ChainMap,
RouterConfig,
TokenRouterConfig,
TokenType,
} from '@hyperlane-xyz/sdk';
import { tokens } from '../../../../../src/config/warp.js';
import { getRegistry as getMainnet3Registry } from '../../chains.js';
import { DEPLOYER } from '../../owners.js';
export const getEclipseEthereumWBTCWarpConfig = async (
routerConfig: ChainMap<RouterConfig>,
): Promise<ChainMap<TokenRouterConfig>> => {
const registry = await getMainnet3Registry();
// @ts-ignore - foreignDeployment configs don't conform to the TokenRouterConfig
const eclipsemainnet: TokenRouterConfig = {
type: TokenType.synthetic,
foreignDeployment: 'A7EGCDYFw5R7Jfm6cYtKvY8dmkrYMgwRCJFkyQwpHTYu',
gas: 300_000,
mailbox: (await registry.getChainAddresses('eclipsemainnet'))!.mailbox,
owner: '9bRSUPjfS3xS6n5EfkJzHFTRDa4AHLda8BU2pP4HoWnf',
interchainSecurityModule: ethers.constants.AddressZero,
};
let ethereum: TokenRouterConfig = {
...routerConfig.ethereum,
type: TokenType.collateral,
token: tokens.ethereum.WBTC,
interchainSecurityModule: ethers.constants.AddressZero,
};
return {
eclipsemainnet,
ethereum,
};
};

@ -0,0 +1,24 @@
# Configs and artifacts for the deployment of Hyperlane Warp Routes
description: Hyperlane Warp Route artifacts
timestamp: '2024-09-19T16:00:00.000Z'
deployer: Abacus Works (Hyperlane)
data:
config:
solanamainnet:
protocolType: sealevel
type: collateral
hypAddress: '8acihSm2QTGswniKgdgr4JBvJihZ1cakfvbqWCPBLoSp'
tokenAddress: 'orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE'
tokenCoinGeckoId: orca
name: Orca
symbol: ORCA
decimals: 6
eclipsemainnet:
protocolType: sealevel
type: synthetic
hypAddress: '8CvWJS7SPtauAXinJUURkBDLsGUXWiiTdENkEFUPjQ9j'
tokenAddress: '2tGbYEm4nuPFyS6zjDTELzEhvVKizgKewi6xT7AaSKzn'
isSpl2022: true
name: Orca
symbol: ORCA
decimals: 6

@ -0,0 +1,34 @@
# Configs and artifacts for the deployment of Hyperlane Warp Routes
description: Hyperlane Warp Route artifacts
timestamp: '2024-09-19T16:00:00.000Z'
deployer: Abacus Works (Hyperlane)
data:
config:
ethereum:
protocolType: ethereum
type: collateral
hypAddress: '0x647C621CEb36853Ef6A907E397Adf18568E70543'
tokenAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7' # USDT
tokenCoinGeckoId: tether
name: USDT
symbol: USDT
decimals: 6
solanamainnet:
protocolType: sealevel
type: collateral
hypAddress: 'Bk79wMjvpPCh5iQcCEjPWFcG1V2TfgdwaBsWBEYFYSNU'
tokenAddress: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB'
tokenCoinGeckoId: tether
isSpl2022: false
name: USDT
symbol: USDT
decimals: 6
eclipsemainnet:
protocolType: sealevel
type: synthetic
hypAddress: '5g5ujyYUNvdydwyDVCpZwPpgYRqH5RYJRi156cxyE3me'
tokenAddress: 'CEBP3CqAbW4zdZA57H2wfaSG1QNdzQ72GiQEbQXyW9Tm'
isSpl2022: true
name: USDT
symbol: USDT
decimals: 6

@ -0,0 +1,23 @@
# Configs and artifacts for the deployment of Hyperlane Warp Routes
description: Hyperlane Warp Route artifacts
timestamp: '2024-09-19T16:00:00.000Z'
deployer: Abacus Works (Hyperlane)
data:
config:
ethereum:
protocolType: ethereum
type: collateral
hypAddress: '0x5B4e223DE74ef8c3218e66EEcC541003CAB3121A'
tokenAddress: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599'
name: WBTC
symbol: WBTC
decimals: 8
eclipsemainnet:
protocolType: sealevel
type: synthetic
hypAddress: 'A7EGCDYFw5R7Jfm6cYtKvY8dmkrYMgwRCJFkyQwpHTYu'
tokenAddress: '7UTjr1VC6Z9DPsWD6mh5wPzNtufN17VnzpKS3ASpfAji'
isSpl2022: true
name: WBTC
symbol: WBTC
decimals: 8

@ -4,6 +4,8 @@ export enum WarpRouteIds {
ArbitrumEthereumZircuitAMPHRETH = 'AMPHRETH/arbitrum-ethereum-zircuit',
ArbitrumNeutronEclip = 'ECLIP/arbitrum-neutron',
ArbitrumNeutronTIA = 'TIA/arbitrum-neutron',
EclipseEthereumSolanaUSDT = 'USDT/eclipsemainnet-ethereum-solanamainnet',
EclipseEthereumWBTC = 'WBTC/eclipsemainnet-ethereum',
EclipseSolanaSOL = 'SOL/eclipsemainnet-solanamainnet',
EclipseSolanaWIF = 'WIF/eclipsemainnet-solanamainnet',
EclipseStrideSTTIA = 'stTIA/eclipse-stride',

@ -12,6 +12,8 @@ import { getAncient8EthereumUSDCWarpConfig } from './environments/mainnet3/warp/
import { getArbitrumEthereumZircuitAmphrETHWarpConfig } from './environments/mainnet3/warp/configGetters/getArbitrumEthereumZircuitAmphrETHWarpConfig.js';
import { getArbitrumNeutronEclipWarpConfig } from './environments/mainnet3/warp/configGetters/getArbitrumNeutronEclipWarpConfig.js';
import { getArbitrumNeutronTiaWarpConfig } from './environments/mainnet3/warp/configGetters/getArbitrumNeutronTiaWarpConfig.js';
import { getEclipseEthereumUSDTWarpConfig } from './environments/mainnet3/warp/configGetters/getEclipseEthereumUSDTWarpConfig.js';
import { getEclipseEthereumWBTCWarpConfig } from './environments/mainnet3/warp/configGetters/getEclipseEthereumWBTCWarpConfig.js';
import { getEclipseStrideTiaWarpConfig } from './environments/mainnet3/warp/configGetters/getEclipseStrideSTTIAWarpConfig.js';
import { getEclipseStrideStTiaWarpConfig } from './environments/mainnet3/warp/configGetters/getEclipseStrideTIAWarpConfig.js';
import { getEthereumBscLUMIAWarpConfig } from './environments/mainnet3/warp/configGetters/getEthereumBscLumiaLUMIAWarpConfig.js';
@ -56,6 +58,8 @@ export const warpConfigGetterMap: Record<
[WarpRouteIds.MantapacificNeutronTIA]: getMantapacificNeutronTiaWarpConfig,
[WarpRouteIds.EclipseStrideTIA]: getEclipseStrideTiaWarpConfig,
[WarpRouteIds.EclipseStrideSTTIA]: getEclipseStrideStTiaWarpConfig,
[WarpRouteIds.EclipseEthereumSolanaUSDT]: getEclipseEthereumUSDTWarpConfig,
[WarpRouteIds.EclipseEthereumWBTC]: getEclipseEthereumWBTCWarpConfig,
};
export async function getWarpConfig(

@ -116,6 +116,16 @@ const sealevelAccountsToTrack: ChainMap<SealevelAccount[]> = {
pubkey: new PublicKey('A1XtL9mAzkNEpBPinrCpDRrPqVAFjgaxDk4ATFVoQVyc'),
walletName: 'USDC/eclipsemainnet-ethereum-solanamainnet/ata-payer',
},
{
// USDT warp route ATA payer
pubkey: new PublicKey('9i3kYQqMtkm4sw1w5SQ8ebKMmh4LPVYKZRMPaZeRfn37'),
walletName: 'USDT/eclipsemainnet-ethereum-solanamainnet/ata-payer',
},
{
// ORCA warp route ATA payer
pubkey: new PublicKey('HqAVwQA6rh1TGdyUHi2XqmCtBSyG3DZjjsCLRXWqyNuU'),
walletName: 'ORCA/eclipsemainnet-solanamainnet/ata-payer',
},
],
eclipsemainnet: [
{
@ -148,6 +158,21 @@ const sealevelAccountsToTrack: ChainMap<SealevelAccount[]> = {
pubkey: new PublicKey('AZs4Rw6H6YwJBKoHBCfChCitHnHvQcVGgrJwGh4bKmAf'),
walletName: 'TIA/eclipsemainnet-stride/ata-payer',
},
{
// USDT warp route ATA payer
pubkey: new PublicKey('78s5TD48q89EZqHNC2bfsswQXn6n3sn1ecGgqXgJe4hL'),
walletName: 'USDT/eclipsemainnet-ethereum-solanamainnet/ata-payer',
},
{
// ORCA warp route ATA payer
pubkey: new PublicKey('3ZyZHoDRzfYg4ug6Tx4Zywe6M5Vt19vPZFx9Ag8qqnXu'),
walletName: 'ORCA/eclipsemainnet-solanamainnet/ata-payer',
},
{
// WBTC warp route ATA payer
pubkey: new PublicKey('BH9VfgYaCWbwuupzsTfSy67yR4dwuCbXmFRrm6aAH2NQ'),
walletName: 'WBTC/eclipsemainnet-ethereum/ata-payer',
},
],
};

@ -0,0 +1,24 @@
import { writeFileSync } from 'fs';
import { stringify as yamlStringify } from 'yaml';
import { WarpRouteDeployConfigSchema } from '@hyperlane-xyz/sdk';
import { getEclipseEthereumUSDTWarpConfig } from '../config/environments/mainnet3/warp/configGetters/getEclipseEthereumUSDTWarpConfig.js';
async function main() {
// remove the argument in the function definition to call
// const tokenConfig = await getEclipseEthereumUSDTWarpConfig();
const parsed = WarpRouteDeployConfigSchema.safeParse('');
if (!parsed.success) {
console.dir(parsed.error.format(), { depth: null });
return;
}
writeFileSync(
'eclipse-usdt-warp-route-config.yaml',
yamlStringify(parsed.data, null, 2),
);
}
main().catch(console.error).then(console.log);

@ -0,0 +1,24 @@
import { writeFileSync } from 'fs';
import { stringify as yamlStringify } from 'yaml';
import { WarpRouteDeployConfigSchema } from '@hyperlane-xyz/sdk';
import { getEclipseEthereumWBTCWarpConfig } from '../config/environments/mainnet3/warp/configGetters/getEclipseEthereumWBTCWarpConfig.js';
async function main() {
// remove the argument in the function definition to call
// const tokenConfig = await getEclipseEthereumWBTCWarpConfig();
const parsed = WarpRouteDeployConfigSchema.safeParse('');
if (!parsed.success) {
console.dir(parsed.error.format(), { depth: null });
return;
}
writeFileSync(
'eclipse-wbtc-warp-route-config.yaml',
yamlStringify(parsed.data, null, 2),
);
}
main().catch(console.error).then(console.log);

@ -8,6 +8,7 @@ export const tokens: ChainMap<Record<string, Address>> = {
USDT: '0xdac17f958d2ee523a2206206994597c13d831ec7',
deUSD: '0x15700B564Ca08D9439C58cA5053166E8317aa138',
amphrETH: '0x5fD13359Ba15A84B76f7F87568309040176167cd',
WBTC: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',
},
sei: {
fastUSD: '0x37a4dD9CED2b19Cfe8FAC251cd727b5787E45269',

@ -27,7 +27,7 @@ export class WarpRouteMonitorHelmManager extends HelmManager {
return {
image: {
repository: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
tag: '8e2f616-20241025-163752',
tag: 'ef7a886-20241101-165749',
},
configFilePath: pathRelativeToMonorepoRoot,
fullnameOverride: this.helmReleaseName,

Loading…
Cancel
Save