From 00d2421c2d6ea35703679e75d98fbbb401b81ab3 Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Mon, 26 May 2025 19:09:45 -0400 Subject: [PATCH 01/13] Initial changes --- build-and-push.sh | 62 +++++++++++++++++++++++++++++++++ config/default.ts | 15 ++++---- config/preproduction.ts | 8 ++--- config/production.ts | 16 ++++----- config/staging.ts | 6 ++-- config/test.ts | 2 +- docker-compose.yml | 63 ++++++---------------------------- package.json | 1 + src/balance/balance.service.ts | 6 ++-- yarn.lock | 5 +++ 10 files changed, 106 insertions(+), 78 deletions(-) create mode 100755 build-and-push.sh diff --git a/build-and-push.sh b/build-and-push.sh new file mode 100755 index 000000000..e343b272d --- /dev/null +++ b/build-and-push.sh @@ -0,0 +1,62 @@ +#!/bin/bash +set -e +# Check for environment argument +if [[ "$1" != "dev" && "$1" != "prod" ]]; then + echo "Error: Please specify environment (dev or prod) as first argument" + echo "Usage: $0 " + exit 1 +fi + +if [[ -z "$2" ]]; then + if [[ "$1" == "prod" ]]; then + echo "Error: Second argument is not provided" + echo "Usage: $0 prod " + exit 1 + else + TAG="latest" + fi +else + TAG="$2" +fi + +# Set account based on environment +if [[ "$1" == "dev" ]]; then + ACCOUNT="371717752603" # sandbox account +else + ACCOUNT="001138754299" # prod account +fi + +# Set platform arguments if on ARM +platform='' +platformarg='' +if [[ "$(uname -p)" == "arm" ]]; then + platform='--platform' + platformarg='linux/amd64' +fi + +# Login to ECR +set -x +aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin ${ACCOUNT}.dkr.ecr.us-west-2.amazonaws.com + +# Build and push each image +image_name="eco-solver" +dockerfile="./Dockerfile" +build_context="." + +echo "Building ${image_name} using ${dockerfile}..." + +# Build the image with correct context +docker build "${build_context}" -f "${dockerfile}" \ + -t "${ACCOUNT}.dkr.ecr.us-west-2.amazonaws.com/${image_name}:latest" \ + ${platform:+"$platform=$platformarg"} + +# Tag with git tag if available +if [[ "${TAG}" != "latest" ]]; then + docker tag "${ACCOUNT}.dkr.ecr.us-west-2.amazonaws.com/${image_name}:latest" \ + "${ACCOUNT}.dkr.ecr.us-west-2.amazonaws.com/${image_name}:${TAG}" + docker push "${ACCOUNT}.dkr.ecr.us-west-2.amazonaws.com/${image_name}:${TAG}" +fi + + +# Push latest tag +docker push "${ACCOUNT}.dkr.ecr.us-west-2.amazonaws.com/${image_name}:latest" diff --git a/config/default.ts b/config/default.ts index af61d08a0..0570b7f7e 100644 --- a/config/default.ts +++ b/config/default.ts @@ -1,16 +1,16 @@ export default { aws: [ { - region: 'us-east-2', - secretID: 'eco-solver-secrets-dev', + region: 'us-west-2', + secretID: 'eco-solver-secrets-prod-test', }, { - region: 'us-east-2', - secretID: 'eco-solver-configs-dev', + region: 'us-west-2', + secretID: 'eco-solver-configs-prod-test', }, { - region: 'us-east-2', - secretID: 'eco-solver-whitelist-dev', + region: 'us-west-2', + secretID: 'eco-solver-whitelist-prod-test', }, ], cache: { @@ -186,6 +186,9 @@ export default { useHyperlaneDefaultHook: false, }, + rpcs: {}, + warpRoutes: {}, + externalAPIs: {}, logger: { usePino: true, diff --git a/config/preproduction.ts b/config/preproduction.ts index 8faaba481..94816d2d7 100644 --- a/config/preproduction.ts +++ b/config/preproduction.ts @@ -5,19 +5,19 @@ export default { aws: [ { - region: 'us-east-2', + region: 'us-west-2', secretID: 'eco-solver-secrets-pre-prod', }, { - region: 'us-east-2', + region: 'us-west-2', secretID: 'eco-solver-configs-pre-prod', }, { - region: 'us-east-2', + region: 'us-west-2', secretID: 'eco-solver-configs-chains-preprod', }, { - region: 'us-east-2', + region: 'us-west-2', secretID: 'eco-solver-whitelist-pre-prod', }, ], diff --git a/config/production.ts b/config/production.ts index 80293ee4a..fcd5e4a45 100644 --- a/config/production.ts +++ b/config/production.ts @@ -5,20 +5,20 @@ export default { aws: [ { - region: 'us-east-2', - secretID: 'eco-solver-secrets-prod', + region: 'us-west-2', + secretID: 'eco-solver-secrets-prod-test', }, { - region: 'us-east-2', - secretID: 'eco-solver-configs-prod', + region: 'us-west-2', + secretID: 'eco-solver-configs-prod-test', }, { - region: 'us-east-2', - secretID: 'eco-solver-configs-chains-prod', + region: 'us-west-2', + secretID: 'eco-solver-configs-chains-prod-test', }, { - region: 'us-east-2', - secretID: 'eco-solver-whitelist-prod', + region: 'us-west-2', + secretID: 'eco-solver-whitelist-prod-test', }, ], //don't add anything else here diff --git a/config/staging.ts b/config/staging.ts index cfab97d7b..25394c036 100644 --- a/config/staging.ts +++ b/config/staging.ts @@ -5,15 +5,15 @@ export default { aws: [ { - region: 'us-east-2', + region: 'us-west-2', secretID: 'eco-solver-secrets-staging', }, { - region: 'us-east-2', + region: 'us-west-2', secretID: 'eco-solver-configs-staging', }, { - region: 'us-east-2', + region: 'us-west-2', secretID: 'eco-solver-whitelist-staging', }, ], diff --git a/config/test.ts b/config/test.ts index 486844b0b..2717f7dde 100644 --- a/config/test.ts +++ b/config/test.ts @@ -1,6 +1,6 @@ export default { aws: { - region: 'test-us-east-2', + region: 'test-us-west-2', secretID: 'test-eco-solver-secrets', }, test: 'hi', diff --git a/docker-compose.yml b/docker-compose.yml index 03608c09f..205debd42 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,78 +1,35 @@ -services: - app: - build: - context: . - dockerfile: Dockerfile - container_name: eco-solver-app - ports: - - '3000:3000' - depends_on: - mongodb: - condition: service_healthy - redis: - condition: service_healthy - environment: - AWS_CONFIG_FILE: /root/.aws/config - AWS_PROFILE: ${AWS_PROFILE} - - NODE_ENV: ${NODE_ENV:-development} - NODE_CONFIG: | - { - "database": { - "auth": { - "enabled": false - }, - "uriPrefix": "mongodb://", - "uri": "mongodb:27017", - "dbName": "eco-solver-local" - }, - "redis": { - "connection": { - "host": "redis", - "port": 6379 - } - } - } - volumes: - - ./src:/usr/src/app/src - - ./config:/usr/src/app/config - - ~/.aws:/root/.aws:ro - restart: unless-stopped - command: ['yarn', 'start:dev'] - profiles: ['app', 'all'] +version: '3.8' +services: mongodb: - image: mongo:8.0 + image: mongo:latest container_name: eco-solver-mongodb ports: - - '27017:27017' + - "27017:27017" volumes: - mongodb_data:/data/db environment: - MONGO_INITDB_DATABASE=eco-solver-local healthcheck: - test: ['CMD', 'mongosh', '--eval', "db.adminCommand('ping')"] + test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/eco-solver-local --quiet interval: 10s timeout: 5s retries: 5 - start_period: 30s - restart: unless-stopped - profiles: ['db', 'all'] + start_period: 10s redis: - image: redis:7.4-alpine + image: redis:latest container_name: eco-solver-redis ports: - - '6379:6379' + - "6379:6379" volumes: - redis_data:/data healthcheck: - test: ['CMD', 'redis-cli', 'ping'] + test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 - restart: unless-stopped - profiles: ['db', 'all'] + start_period: 10s volumes: mongodb_data: diff --git a/package.json b/package.json index 145bd7c16..8ca10453c 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "@lit-protocol/auth-helpers": "^7.0.4", "@lit-protocol/constants": "^7.0.4", "@lit-protocol/lit-node-client": "^7.0.4", + "@metalayer/viem-chains": "^0.2.0", "@nestjs/bullmq": "^10.1.1", "@nestjs/cache-manager": "^3.0.0", "@nestjs/common": "^10.4.16", diff --git a/src/balance/balance.service.ts b/src/balance/balance.service.ts index 67a1748ad..d30807c92 100644 --- a/src/balance/balance.service.ts +++ b/src/balance/balance.service.ts @@ -145,9 +145,9 @@ export class BalanceService implements OnApplicationBootstrap { const [balance = 0n, decimals = 0] = [results[index * 2], results[index * 2 + 1]] //throw if we suddenly start supporting tokens with not 6 decimals //audit conversion of validity to see its support - if ((decimals as number) != 6) { - throw EcoError.BalanceServiceInvalidDecimals(tokenAddress) - } + // if ((decimals as number) != 6) { + // throw EcoError.BalanceServiceInvalidDecimals(tokenAddress) + // } tokenBalances[tokenAddress] = { address: tokenAddress, balance: balance as bigint, diff --git a/yarn.lock b/yarn.lock index 43a45a28f..3b2ed7acc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2912,6 +2912,11 @@ resolved "https://registry.yarnpkg.com/@lukeed/csprng/-/csprng-1.1.0.tgz#1e3e4bd05c1cc7a0b2ddbd8a03f39f6e4b5e6cfe" integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== +"@metalayer/viem-chains@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@metalayer/viem-chains/-/viem-chains-0.2.0.tgz#f85e05df480c20dac54787a3a6fce0cc3aeb2285" + integrity sha512-v/8Lc66GF7FxrDqG3d2JaA6lT7imKCGRqordCw3OUNwo+7kYfowOm1QDX8aVqY1G6g0Vy2yjx+Z0mige57B6lA== + "@microsoft/tsdoc@0.15.0": version "0.15.0" resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz#f29a55df17cb6e87cfbabce33ff6a14a9f85076d" From 0014aefda13e27c2c3f16d7ab42c134969d939e9 Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Mon, 26 May 2025 19:49:46 -0400 Subject: [PATCH 02/13] update config --- config/default.ts | 3 ++- config/development.ts | 52 ++++++++++++++----------------------------- 2 files changed, 19 insertions(+), 36 deletions(-) diff --git a/config/default.ts b/config/default.ts index 0570b7f7e..8294315b4 100644 --- a/config/default.ts +++ b/config/default.ts @@ -186,8 +186,9 @@ export default { useHyperlaneDefaultHook: false, }, - rpcs: {}, warpRoutes: {}, + safe: {}, + crowdLiquidity: {}, externalAPIs: {}, logger: { diff --git a/config/development.ts b/config/development.ts index c1e4f4c37..c766ed292 100644 --- a/config/development.ts +++ b/config/development.ts @@ -34,65 +34,47 @@ export default { }, intentSources: [ { - network: 'opt-sepolia', - chainID: 11155420, + network: 'towns-testnet', + chainID: 6524490, tokens: [ '0x5fd84259d66Cd46123540766Be93DFE6D43130D7', //usdc - '0x8327Db9040811545C13331A453aBe9C7AA1aCDf8', - '0x368d7C52B0F62228907C133204605a5B11A1dB6d', - '0x00D2d1162c689179e8bA7a3b936f80A010A0b5CF', - '0x3328C29843F7c7dfF7381aF54A03C7423431Eaa4', - '0xd3F4Bef596a04e2be4fbeB17Dd70f02F717c5a6c', - '0x93551e3F61F8E3EE73DDc096BddbC1ADc52f5A3a', ], }, { - network: 'base-sepolia', - chainID: 84532, + network: 'sanko-testnet', + chainID: 1992, tokens: [ - '0xAb1D243b07e99C91dE9E4B80DFc2B07a8332A2f7', //usdc - '0x8bDa9F5C33FBCB04Ea176ea5Bc1f5102e934257f', - '0x93551e3F61F8E3EE73DDc096BddbC1ADc52f5A3a', + '0xC38944D590A3B6E796dE242680259CB1dEcba077', //usdc ], }, ], solvers: { - //base sepolia - 84532: { + //towns testnet + 6524490: { targets: { - //base sepolia USDC - '0xAb1D243b07e99C91dE9E4B80DFc2B07a8332A2f7': { - contractType: 'erc20', - selectors: ['transfer(address,uint256)'], - minBalance: 1000, - }, - '0x8bDa9F5C33FBCB04Ea176ea5Bc1f5102e934257f': { - contractType: 'erc20', - selectors: ['transfer(address,uint256)'], - minBalance: 1000, - }, - '0x93551e3F61F8E3EE73DDc096BddbC1ADc52f5A3a': { + //towns testnet USDC + '0x9030B1b203D7F7aE07aa32a2eFbF5DEE7112FE30': { contractType: 'erc20', selectors: ['transfer(address,uint256)'], minBalance: 1000, }, }, - network: 'base-sepolia', - chainID: 84532, + network: 'towns-testnet', + chainID: 6524490, averageBlockTime: 2, }, - //op sepolia - 11155420: { + //sanko testnet + 1992: { targets: { - //op sepolia USDC - '0x5fd84259d66Cd46123540766Be93DFE6D43130D7': { + //sanko testnet USDC + '0xC38944D590A3B6E796dE242680259CB1dEcba077': { contractType: 'erc20', selectors: ['transfer(address,uint256)'], minBalance: 1000, }, }, - network: 'opt-sepolia', - chainID: 11155420, + network: 'sanko-testnet', + chainID: 1992, averageBlockTime: 2, }, }, From c4db194f0684f9aa6bf8663d1e51539f11c69594 Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Tue, 27 May 2025 23:05:21 -0400 Subject: [PATCH 03/13] latest changesg --- config/default.ts | 5 ++++- src/eco-configs/utils.ts | 16 ++++++++++++++++ .../services/liquidity-manager.service.ts | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/config/default.ts b/config/default.ts index 8294315b4..4b80dc4c5 100644 --- a/config/default.ts +++ b/config/default.ts @@ -189,10 +189,13 @@ export default { warpRoutes: {}, safe: {}, crowdLiquidity: {}, + fulfillment: { + run: 'single', + }, externalAPIs: {}, logger: { - usePino: true, + usePino: false, pinoConfig: { pinoHttp: { level: 'debug', diff --git a/src/eco-configs/utils.ts b/src/eco-configs/utils.ts index 114f41dfc..257c0713a 100644 --- a/src/eco-configs/utils.ts +++ b/src/eco-configs/utils.ts @@ -46,6 +46,22 @@ export function isPreEnv(): boolean { export function getChainConfig(chainID: number | string): EcoChainConfig { const id = isPreEnv() ? `${chainID}-${ChainPrefix}` : chainID.toString() const config = EcoProtocolAddresses[id] + if (id === '33111') { + return { + IntentSource: '0x478AA4042b267139055632cd5A1Eb9Eb13b3Eeaf', + Inbox: '0xB5DB3d430565cb399E05562f5638f31d19AE70b3', + HyperProver: '0x8a3B3A803667092CECb3b269e71c5E5e16a9Db93', + MetaProver: '0x0000000000000000000000000000000000000000', + } + } + if (id === '3441006') { + return { + IntentSource: '0x478AA4042b267139055632cd5A1Eb9Eb13b3Eeaf', + Inbox: '0xB5DB3d430565cb399E05562f5638f31d19AE70b3', + HyperProver: '0x8a3B3A803667092CECb3b269e71c5E5e16a9Db93', + MetaProver: '0x0000000000000000000000000000000000000000', + } + } if (config === undefined) { throw EcoError.ChainConfigNotFound(id) } diff --git a/src/liquidity-manager/services/liquidity-manager.service.ts b/src/liquidity-manager/services/liquidity-manager.service.ts index 5eb2fa344..b1a385f88 100644 --- a/src/liquidity-manager/services/liquidity-manager.service.ts +++ b/src/liquidity-manager/services/liquidity-manager.service.ts @@ -70,7 +70,7 @@ export class LiquidityManagerService implements OnApplicationBootstrap { this.config = this.ecoConfigService.getLiquidityManager() // Use OP as the default chain assuming the Kernel wallet is the same across all chains - const opChainId = 10 + const opChainId = 33111 const client = await this.kernelAccountClientService.getClient(opChainId) const kernelAddress = client.kernelAccount.address From ee16a1447c424b3c6e1a77ffdfd9951b2a987e4b Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Wed, 28 May 2025 09:07:10 -0400 Subject: [PATCH 04/13] fix prover addresses --- src/eco-configs/utils.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/eco-configs/utils.ts b/src/eco-configs/utils.ts index 257c0713a..fbed20334 100644 --- a/src/eco-configs/utils.ts +++ b/src/eco-configs/utils.ts @@ -50,16 +50,16 @@ export function getChainConfig(chainID: number | string): EcoChainConfig { return { IntentSource: '0x478AA4042b267139055632cd5A1Eb9Eb13b3Eeaf', Inbox: '0xB5DB3d430565cb399E05562f5638f31d19AE70b3', - HyperProver: '0x8a3B3A803667092CECb3b269e71c5E5e16a9Db93', - MetaProver: '0x0000000000000000000000000000000000000000', + HyperProver: '0x0000000000000000000000000000000000000000', + MetaProver: '0x8a3B3A803667092CECb3b269e71c5E5e16a9Db93', } } if (id === '3441006') { return { IntentSource: '0x478AA4042b267139055632cd5A1Eb9Eb13b3Eeaf', Inbox: '0xB5DB3d430565cb399E05562f5638f31d19AE70b3', - HyperProver: '0x8a3B3A803667092CECb3b269e71c5E5e16a9Db93', - MetaProver: '0x0000000000000000000000000000000000000000', + HyperProver: '0x0000000000000000000000000000000000000000', + MetaProver: '0x8a3B3A803667092CECb3b269e71c5E5e16a9Db93', } } if (config === undefined) { From 3559575f1220c91a849b09653533a995321ff47b Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Wed, 28 May 2025 21:52:28 -0400 Subject: [PATCH 05/13] refactor --- src/eco-configs/eco-config.service.ts | 27 ++++++++++++++++++++++++--- src/eco-configs/utils.ts | 16 ---------------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/eco-configs/eco-config.service.ts b/src/eco-configs/eco-config.service.ts index f7ce81505..5d425f6a5 100644 --- a/src/eco-configs/eco-config.service.ts +++ b/src/eco-configs/eco-config.service.ts @@ -18,6 +18,15 @@ import { ChainsSupported } from '@/common/chains/supported' import { getChainConfig } from './utils' import { EcoChains } from '@eco-foundation/chains' import { EcoError } from '../common/errors/eco-error' +import { EcoChainConfig } from '@eco-foundation/routes-ts' + +const CALDERA_CHAIN_CONFIG: EcoChainConfig = { + IntentSource: '0x50673016E0720d6B7FA5Af3290709Fc8bAF65A70', + Inbox: '0xCc71EA5C67795EF12be2328C14F7E96A39D71067', + HyperProver: '0x0000000000000000000000000000000000000000', + MetaProver: '0xcF415cFD2f287Ea5e394BAA1f12035fC57d6EED8', +} + /** * Service class for managing application configuration from multiple sources. * @@ -109,7 +118,12 @@ export class EcoConfigService { // Returns the source intents config getIntentSources(): EcoConfigType['intentSources'] { return this.get('intentSources').map((intent: IntentSource) => { - const config = getChainConfig(intent.chainID) + let config: EcoChainConfig + if (this.getSupportedChains().includes(BigInt(intent.chainID))) { + config = CALDERA_CHAIN_CONFIG + } else { + config = getChainConfig(intent.chainID) + } intent.sourceAddress = config.IntentSource intent.inbox = config.Inbox const ecoNpm = intent.config ? intent.config.ecoRoutes : ProverEcoRoutesProverAppend @@ -156,8 +170,14 @@ export class EcoConfigService { // Returns the solvers config getSolvers(): EcoConfigType['solvers'] { const solvers = this.get>('solvers') + _.entries(solvers).forEach(([, solver]: [string, Solver]) => { - const config = getChainConfig(solver.chainID) + let config: EcoChainConfig + if (this.getSupportedChains().includes(BigInt(solver.chainID))) { + config = CALDERA_CHAIN_CONFIG + } else { + config = getChainConfig(solver.chainID) + } solver.inboxAddress = config.Inbox solver.targets = addressKeys(solver.targets) ?? {} }) @@ -324,7 +344,8 @@ export class EcoConfigService { * @returns the supported chains for the event */ getSupportedChains(): bigint[] { - return _.entries(this.getSolvers()).map(([, solver]) => BigInt(solver.chainID)) + const solvers = this.get>('solvers') + return _.entries(solvers).map(([, solver]) => BigInt(solver.chainID)) } /** diff --git a/src/eco-configs/utils.ts b/src/eco-configs/utils.ts index fbed20334..114f41dfc 100644 --- a/src/eco-configs/utils.ts +++ b/src/eco-configs/utils.ts @@ -46,22 +46,6 @@ export function isPreEnv(): boolean { export function getChainConfig(chainID: number | string): EcoChainConfig { const id = isPreEnv() ? `${chainID}-${ChainPrefix}` : chainID.toString() const config = EcoProtocolAddresses[id] - if (id === '33111') { - return { - IntentSource: '0x478AA4042b267139055632cd5A1Eb9Eb13b3Eeaf', - Inbox: '0xB5DB3d430565cb399E05562f5638f31d19AE70b3', - HyperProver: '0x0000000000000000000000000000000000000000', - MetaProver: '0x8a3B3A803667092CECb3b269e71c5E5e16a9Db93', - } - } - if (id === '3441006') { - return { - IntentSource: '0x478AA4042b267139055632cd5A1Eb9Eb13b3Eeaf', - Inbox: '0xB5DB3d430565cb399E05562f5638f31d19AE70b3', - HyperProver: '0x0000000000000000000000000000000000000000', - MetaProver: '0x8a3B3A803667092CECb3b269e71c5E5e16a9Db93', - } - } if (config === undefined) { throw EcoError.ChainConfigNotFound(id) } From 7c2e5aba7cd9dde53f45afa0819ed357ca842928 Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Wed, 28 May 2025 22:31:16 -0400 Subject: [PATCH 06/13] fix --- config/development.ts | 64 ++++++++------------------- src/eco-configs/eco-config.service.ts | 22 +-------- src/eco-configs/utils.ts | 10 ++++- 3 files changed, 29 insertions(+), 67 deletions(-) diff --git a/config/development.ts b/config/development.ts index c766ed292..066f09545 100644 --- a/config/development.ts +++ b/config/development.ts @@ -2,6 +2,24 @@ export default { server: { url: 'http://localhost:3000', }, + aws: [ + { + region: 'us-west-2', + secretID: 'eco-solver-secrets-prod-test', + }, + { + region: 'us-west-2', + secretID: 'eco-solver-configs-prod-test', + }, + { + region: 'us-west-2', + secretID: 'eco-solver-configs-chains-prod-test', + }, + { + region: 'us-west-2', + secretID: 'eco-solver-whitelist-prod-test', + }, + ], logger: { usePino: false, @@ -32,52 +50,6 @@ export default { }, }, }, - intentSources: [ - { - network: 'towns-testnet', - chainID: 6524490, - tokens: [ - '0x5fd84259d66Cd46123540766Be93DFE6D43130D7', //usdc - ], - }, - { - network: 'sanko-testnet', - chainID: 1992, - tokens: [ - '0xC38944D590A3B6E796dE242680259CB1dEcba077', //usdc - ], - }, - ], - solvers: { - //towns testnet - 6524490: { - targets: { - //towns testnet USDC - '0x9030B1b203D7F7aE07aa32a2eFbF5DEE7112FE30': { - contractType: 'erc20', - selectors: ['transfer(address,uint256)'], - minBalance: 1000, - }, - }, - network: 'towns-testnet', - chainID: 6524490, - averageBlockTime: 2, - }, - //sanko testnet - 1992: { - targets: { - //sanko testnet USDC - '0xC38944D590A3B6E796dE242680259CB1dEcba077': { - contractType: 'erc20', - selectors: ['transfer(address,uint256)'], - minBalance: 1000, - }, - }, - network: 'sanko-testnet', - chainID: 1992, - averageBlockTime: 2, - }, - }, solverRegistrationConfig: { apiOptions: { diff --git a/src/eco-configs/eco-config.service.ts b/src/eco-configs/eco-config.service.ts index 5d425f6a5..b2af145bb 100644 --- a/src/eco-configs/eco-config.service.ts +++ b/src/eco-configs/eco-config.service.ts @@ -18,14 +18,6 @@ import { ChainsSupported } from '@/common/chains/supported' import { getChainConfig } from './utils' import { EcoChains } from '@eco-foundation/chains' import { EcoError } from '../common/errors/eco-error' -import { EcoChainConfig } from '@eco-foundation/routes-ts' - -const CALDERA_CHAIN_CONFIG: EcoChainConfig = { - IntentSource: '0x50673016E0720d6B7FA5Af3290709Fc8bAF65A70', - Inbox: '0xCc71EA5C67795EF12be2328C14F7E96A39D71067', - HyperProver: '0x0000000000000000000000000000000000000000', - MetaProver: '0xcF415cFD2f287Ea5e394BAA1f12035fC57d6EED8', -} /** * Service class for managing application configuration from multiple sources. @@ -118,12 +110,7 @@ export class EcoConfigService { // Returns the source intents config getIntentSources(): EcoConfigType['intentSources'] { return this.get('intentSources').map((intent: IntentSource) => { - let config: EcoChainConfig - if (this.getSupportedChains().includes(BigInt(intent.chainID))) { - config = CALDERA_CHAIN_CONFIG - } else { - config = getChainConfig(intent.chainID) - } + const config = getChainConfig(intent.chainID) intent.sourceAddress = config.IntentSource intent.inbox = config.Inbox const ecoNpm = intent.config ? intent.config.ecoRoutes : ProverEcoRoutesProverAppend @@ -172,12 +159,7 @@ export class EcoConfigService { const solvers = this.get>('solvers') _.entries(solvers).forEach(([, solver]: [string, Solver]) => { - let config: EcoChainConfig - if (this.getSupportedChains().includes(BigInt(solver.chainID))) { - config = CALDERA_CHAIN_CONFIG - } else { - config = getChainConfig(solver.chainID) - } + const config = getChainConfig(solver.chainID) solver.inboxAddress = config.Inbox solver.targets = addressKeys(solver.targets) ?? {} }) diff --git a/src/eco-configs/utils.ts b/src/eco-configs/utils.ts index 114f41dfc..5a1893b58 100644 --- a/src/eco-configs/utils.ts +++ b/src/eco-configs/utils.ts @@ -2,6 +2,13 @@ import { EcoChainConfig, EcoProtocolAddresses } from '@eco-foundation/routes-ts' import * as config from 'config' import { EcoError } from '../common/errors/eco-error' +const CALDERA_CHAIN_CONFIG: EcoChainConfig = { + IntentSource: '0x50673016E0720d6B7FA5Af3290709Fc8bAF65A70', + Inbox: '0xCc71EA5C67795EF12be2328C14F7E96A39D71067', + HyperProver: '0x0000000000000000000000000000000000000000', + MetaProver: '0xcF415cFD2f287Ea5e394BAA1f12035fC57d6EED8', +} + /** * The prefix for non-production deploys on a chain */ @@ -48,6 +55,7 @@ export function getChainConfig(chainID: number | string): EcoChainConfig { const config = EcoProtocolAddresses[id] if (config === undefined) { throw EcoError.ChainConfigNotFound(id) + } else { + return CALDERA_CHAIN_CONFIG } - return config } From 61d74738ac4f9a47a9fbb6eae50f4ff3fcc4fa21 Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Wed, 28 May 2025 22:34:06 -0400 Subject: [PATCH 07/13] clean --- package.json | 1 - src/eco-configs/eco-config.service.ts | 5 +---- yarn.lock | 5 ----- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/package.json b/package.json index 8ca10453c..145bd7c16 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,6 @@ "@lit-protocol/auth-helpers": "^7.0.4", "@lit-protocol/constants": "^7.0.4", "@lit-protocol/lit-node-client": "^7.0.4", - "@metalayer/viem-chains": "^0.2.0", "@nestjs/bullmq": "^10.1.1", "@nestjs/cache-manager": "^3.0.0", "@nestjs/common": "^10.4.16", diff --git a/src/eco-configs/eco-config.service.ts b/src/eco-configs/eco-config.service.ts index b2af145bb..f7ce81505 100644 --- a/src/eco-configs/eco-config.service.ts +++ b/src/eco-configs/eco-config.service.ts @@ -18,7 +18,6 @@ import { ChainsSupported } from '@/common/chains/supported' import { getChainConfig } from './utils' import { EcoChains } from '@eco-foundation/chains' import { EcoError } from '../common/errors/eco-error' - /** * Service class for managing application configuration from multiple sources. * @@ -157,7 +156,6 @@ export class EcoConfigService { // Returns the solvers config getSolvers(): EcoConfigType['solvers'] { const solvers = this.get>('solvers') - _.entries(solvers).forEach(([, solver]: [string, Solver]) => { const config = getChainConfig(solver.chainID) solver.inboxAddress = config.Inbox @@ -326,8 +324,7 @@ export class EcoConfigService { * @returns the supported chains for the event */ getSupportedChains(): bigint[] { - const solvers = this.get>('solvers') - return _.entries(solvers).map(([, solver]) => BigInt(solver.chainID)) + return _.entries(this.getSolvers()).map(([, solver]) => BigInt(solver.chainID)) } /** diff --git a/yarn.lock b/yarn.lock index 3b2ed7acc..43a45a28f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2912,11 +2912,6 @@ resolved "https://registry.yarnpkg.com/@lukeed/csprng/-/csprng-1.1.0.tgz#1e3e4bd05c1cc7a0b2ddbd8a03f39f6e4b5e6cfe" integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== -"@metalayer/viem-chains@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@metalayer/viem-chains/-/viem-chains-0.2.0.tgz#f85e05df480c20dac54787a3a6fce0cc3aeb2285" - integrity sha512-v/8Lc66GF7FxrDqG3d2JaA6lT7imKCGRqordCw3OUNwo+7kYfowOm1QDX8aVqY1G6g0Vy2yjx+Z0mige57B6lA== - "@microsoft/tsdoc@0.15.0": version "0.15.0" resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz#f29a55df17cb6e87cfbabce33ff6a14a9f85076d" From 27eab19d877c65fb123fbb3dcdd588f6f0f4a32d Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Fri, 30 May 2025 12:19:45 -0400 Subject: [PATCH 08/13] support more chains --- config/development.ts | 2 +- package.json | 1 + src/common/chains/supported.ts | 25 ++++++++++++++++++- src/common/chains/transport.ts | 2 ++ src/eco-configs/eco-config.service.ts | 18 ++++++++++--- src/eco-configs/utils.ts | 24 ++++++++++-------- .../kernel/create.kernel.account.ts | 17 +++++++------ yarn.lock | 5 ++++ 8 files changed, 70 insertions(+), 24 deletions(-) diff --git a/config/development.ts b/config/development.ts index 066f09545..f447517a7 100644 --- a/config/development.ts +++ b/config/development.ts @@ -9,7 +9,7 @@ export default { }, { region: 'us-west-2', - secretID: 'eco-solver-configs-prod-test', + secretID: 'eco-solver-configs-dev-test', }, { region: 'us-west-2', diff --git a/package.json b/package.json index 145bd7c16..3bcb5f90c 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "@lit-protocol/auth-helpers": "^7.0.4", "@lit-protocol/constants": "^7.0.4", "@lit-protocol/lit-node-client": "^7.0.4", + "@metalayer/viem-chains": "^0.2.2", "@nestjs/bullmq": "^10.1.1", "@nestjs/cache-manager": "^3.0.0", "@nestjs/common": "^10.4.16", diff --git a/src/common/chains/supported.ts b/src/common/chains/supported.ts index 8ea83d637..b99ddcb00 100644 --- a/src/common/chains/supported.ts +++ b/src/common/chains/supported.ts @@ -1,8 +1,31 @@ import { EcoRoutesChains } from '@eco-foundation/chains' import { Chain } from 'viem' +import { b3Testnet, studioChain, toyChainTestnet } from '@metalayer/viem-chains' +import { bscTestnet, arbitrumSepolia } from 'viem/chains' /** * List of supported chains for the solver that have modified RPC URLs or are defined in the project */ // export const ChainsSupported: Chain[] = [anvil, ...(EcoRoutesChains as Chain[])] -export const ChainsSupported: Chain[] = [...(EcoRoutesChains as Chain[])] + +// Configure custom RPC URLs for specific chains +const configureChainRpc = (chain: Chain): Chain => { + // Create a deep copy of the chain to avoid modifying the original + const modifiedChain = JSON.parse(JSON.stringify(chain)) as Chain + + // Set custom RPC URL for BSC testnet + if (modifiedChain.id === 97) { + modifiedChain.rpcUrls.default.http = [ + 'https://bnb-testnet.g.alchemy.com/v2/Pck8yx8R7BLJ6MqbVD34L', + ] + } + + return modifiedChain +} + +// Apply the configuration to all Caldera chains +const calderaChains = [bscTestnet, arbitrumSepolia, b3Testnet, studioChain, toyChainTestnet].map( + configureChainRpc, +) + +export const ChainsSupported: Chain[] = [...(EcoRoutesChains as Chain[]), ...calderaChains] diff --git a/src/common/chains/transport.ts b/src/common/chains/transport.ts index 5f64acee7..d9a34dfff 100644 --- a/src/common/chains/transport.ts +++ b/src/common/chains/transport.ts @@ -11,6 +11,8 @@ export type TransportOptions = | { isWebsocket: true; options?: WebSocketTransportConfig } | { isWebsocket?: false; options?: HttpTransportConfig } + + /** * Returns transport for the chain with the given api key * diff --git a/src/eco-configs/eco-config.service.ts b/src/eco-configs/eco-config.service.ts index f7ce81505..fe0485f2b 100644 --- a/src/eco-configs/eco-config.service.ts +++ b/src/eco-configs/eco-config.service.ts @@ -12,11 +12,11 @@ import { SafeType, Solver, } from './eco-config.types' -import { Chain, getAddress, zeroAddress } from 'viem' +import { Chain, getAddress, zeroAddress, extractChain } from 'viem' import { addressKeys } from '@/common/viem/utils' import { ChainsSupported } from '@/common/chains/supported' import { getChainConfig } from './utils' -import { EcoChains } from '@eco-foundation/chains' +import { EcoChain, EcoChains } from '@eco-foundation/chains' import { EcoError } from '../common/errors/eco-error' /** * Service class for managing application configuration from multiple sources. @@ -297,7 +297,13 @@ export class EcoConfigService { * @returns The RPC URL string for the specified chain */ getRpcUrl(chain: Chain, websocketEnabled: boolean = false) { - const rpcChain = this.ecoChains.getChain(chain.id) + let rpcChain: EcoChain | Chain + try { + rpcChain = this.ecoChains.getChain(chain.id) + } catch (e) { + rpcChain = extractChain({ chains: ChainsSupported, id: chain.id }) + } + const custom = rpcChain.rpcUrls.caldera || rpcChain.rpcUrls.alchemy || rpcChain.rpcUrls.quicknode const def = rpcChain.rpcUrls.default @@ -309,7 +315,11 @@ export class EcoConfigService { rpc = custom?.http?.[0] || def?.http?.[0] } if (!rpc) { - throw EcoError.ChainExistsButRPCNotFound(chain.id) + rpc = custom?.http?.[0] || def?.http?.[0] + websocketEnabled = false + if (!rpc) { + throw EcoError.ChainExistsButRPCNotFound(chain.id) + } } return { rpcUrl: rpc, diff --git a/src/eco-configs/utils.ts b/src/eco-configs/utils.ts index 5a1893b58..010d82fb3 100644 --- a/src/eco-configs/utils.ts +++ b/src/eco-configs/utils.ts @@ -37,11 +37,12 @@ export function getNodeEnv(): NodeEnv { * @returns true if the node env is preproduction or development */ export function isPreEnv(): boolean { - return ( - getNodeEnv() === NodeEnv.preproduction || - getNodeEnv() === NodeEnv.development || - getNodeEnv() === NodeEnv.staging - ) + return false + // return ( + // getNodeEnv() === NodeEnv.preproduction || + // getNodeEnv() === NodeEnv.development || + // getNodeEnv() === NodeEnv.staging + // ) } /** @@ -52,10 +53,11 @@ export function isPreEnv(): boolean { */ export function getChainConfig(chainID: number | string): EcoChainConfig { const id = isPreEnv() ? `${chainID}-${ChainPrefix}` : chainID.toString() - const config = EcoProtocolAddresses[id] - if (config === undefined) { - throw EcoError.ChainConfigNotFound(id) - } else { - return CALDERA_CHAIN_CONFIG - } + return CALDERA_CHAIN_CONFIG + // const config = EcoProtocolAddresses[id] + // if (config === undefined) { + // throw EcoError.ChainConfigNotFound(id) + // } else { + // return CALDERA_CHAIN_CONFIG + // } } diff --git a/src/transaction/smart-wallets/kernel/create.kernel.account.ts b/src/transaction/smart-wallets/kernel/create.kernel.account.ts index f6c9003d7..67d50d106 100644 --- a/src/transaction/smart-wallets/kernel/create.kernel.account.ts +++ b/src/transaction/smart-wallets/kernel/create.kernel.account.ts @@ -53,6 +53,7 @@ export async function createKernelAccountClient< >( parameters: KernelAccountClientConfig, owner>, ): Promise<{ client: KernelAccountClient; args: DeployFactoryArgs }> { + const logger = getLogger() const { key = 'kernelAccountClient', name = 'Kernel Account Client', transport } = parameters const { account } = parameters @@ -91,13 +92,15 @@ export async function createKernelAccountClient< kernelVersion, }) } catch (e) { - EcoLogMessage.fromDefault({ - message: `createKernelAccountClient createKernelAccount: `, - properties: { - chainID: walletClient.chain?.id, - e, - }, - }) + logger.log( + EcoLogMessage.fromDefault({ + message: `createKernelAccountClient createKernelAccount: `, + properties: { + chainID: walletClient.chain?.id, + e, + }, + }), + ) throw e } diff --git a/yarn.lock b/yarn.lock index 43a45a28f..b703e811a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2912,6 +2912,11 @@ resolved "https://registry.yarnpkg.com/@lukeed/csprng/-/csprng-1.1.0.tgz#1e3e4bd05c1cc7a0b2ddbd8a03f39f6e4b5e6cfe" integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== +"@metalayer/viem-chains@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@metalayer/viem-chains/-/viem-chains-0.2.2.tgz#359fdb7c215cebffbe871ef6ae5876f992aff5e8" + integrity sha512-74m4iyBYAnoah2H2iMNqV+Ao2dr15dkLG8ITygNFeRo62SnsJeRdA4rTKBsMRnfavqmnKwrLHE44OtLa055pYg== + "@microsoft/tsdoc@0.15.0": version "0.15.0" resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz#f29a55df17cb6e87cfbabce33ff6a14a9f85076d" From 026dd6ae2bbe4ab49c5e36a894c9130b4fb4777d Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Thu, 5 Jun 2025 16:21:19 -0400 Subject: [PATCH 09/13] clean --- config/production.ts | 10 ---------- src/common/chains/supported.ts | 2 -- 2 files changed, 12 deletions(-) diff --git a/config/production.ts b/config/production.ts index fcd5e4a45..260f01e3d 100644 --- a/config/production.ts +++ b/config/production.ts @@ -1,8 +1,4 @@ export default { - server: { - url: 'https://solver.prod.bend.eco', - }, - aws: [ { region: 'us-west-2', @@ -22,10 +18,4 @@ export default { }, ], //don't add anything else here - - solverRegistrationConfig: { - apiOptions: { - baseUrl: 'https://quotes.eco.com', - }, - }, } diff --git a/src/common/chains/supported.ts b/src/common/chains/supported.ts index b99ddcb00..b095c62c8 100644 --- a/src/common/chains/supported.ts +++ b/src/common/chains/supported.ts @@ -6,8 +6,6 @@ import { bscTestnet, arbitrumSepolia } from 'viem/chains' /** * List of supported chains for the solver that have modified RPC URLs or are defined in the project */ -// export const ChainsSupported: Chain[] = [anvil, ...(EcoRoutesChains as Chain[])] - // Configure custom RPC URLs for specific chains const configureChainRpc = (chain: Chain): Chain => { // Create a deep copy of the chain to avoid modifying the original From ef0e0e696bd86b3a4da78f45effd77b213adca0f Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Mon, 9 Jun 2025 15:31:40 -0400 Subject: [PATCH 10/13] update configs --- config/default.ts | 3 --- config/development.ts | 8 ++++---- config/production.ts | 8 ++++---- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/config/default.ts b/config/default.ts index 4b80dc4c5..2e4f8782a 100644 --- a/config/default.ts +++ b/config/default.ts @@ -127,9 +127,6 @@ export default { defaultBlockTime: 2, }, - indexer: { - url: 'https://indexer.eco.com', - }, withdraws: { chunkSize: 20, intervalDuration: 360_000, diff --git a/config/development.ts b/config/development.ts index f447517a7..04579b3a8 100644 --- a/config/development.ts +++ b/config/development.ts @@ -5,19 +5,19 @@ export default { aws: [ { region: 'us-west-2', - secretID: 'eco-solver-secrets-prod-test', + secretID: 'eco-solver-secrets-prod', }, { region: 'us-west-2', - secretID: 'eco-solver-configs-dev-test', + secretID: 'eco-solver-configs-prod', }, { region: 'us-west-2', - secretID: 'eco-solver-configs-chains-prod-test', + secretID: 'eco-solver-configs-chains-prod', }, { region: 'us-west-2', - secretID: 'eco-solver-whitelist-prod-test', + secretID: 'eco-solver-whitelist-prod', }, ], diff --git a/config/production.ts b/config/production.ts index 260f01e3d..bb1516fce 100644 --- a/config/production.ts +++ b/config/production.ts @@ -2,19 +2,19 @@ export default { aws: [ { region: 'us-west-2', - secretID: 'eco-solver-secrets-prod-test', + secretID: 'eco-solver-secrets-prod', }, { region: 'us-west-2', - secretID: 'eco-solver-configs-prod-test', + secretID: 'eco-solver-configs-prod', }, { region: 'us-west-2', - secretID: 'eco-solver-configs-chains-prod-test', + secretID: 'eco-solver-configs-chains-prod', }, { region: 'us-west-2', - secretID: 'eco-solver-whitelist-prod-test', + secretID: 'eco-solver-whitelist-prod', }, ], //don't add anything else here From 991d70a0ae4ad12b563b18049076de327cf382c6 Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Tue, 10 Jun 2025 21:56:22 -0400 Subject: [PATCH 11/13] support all caldera testnets --- src/common/chains/supported.ts | 6 ++---- src/intent-processor/services/intent-processor.service.ts | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/common/chains/supported.ts b/src/common/chains/supported.ts index b095c62c8..792ea36ef 100644 --- a/src/common/chains/supported.ts +++ b/src/common/chains/supported.ts @@ -1,6 +1,6 @@ import { EcoRoutesChains } from '@eco-foundation/chains' import { Chain } from 'viem' -import { b3Testnet, studioChain, toyChainTestnet } from '@metalayer/viem-chains' +import { TESTNET_ROLLUPS } from '@metalayer/viem-chains' import { bscTestnet, arbitrumSepolia } from 'viem/chains' /** @@ -22,8 +22,6 @@ const configureChainRpc = (chain: Chain): Chain => { } // Apply the configuration to all Caldera chains -const calderaChains = [bscTestnet, arbitrumSepolia, b3Testnet, studioChain, toyChainTestnet].map( - configureChainRpc, -) +const calderaChains = [bscTestnet, arbitrumSepolia, ...TESTNET_ROLLUPS].map(configureChainRpc) export const ChainsSupported: Chain[] = [...(EcoRoutesChains as Chain[]), ...calderaChains] diff --git a/src/intent-processor/services/intent-processor.service.ts b/src/intent-processor/services/intent-processor.service.ts index 6fb408d55..a485c39ee 100644 --- a/src/intent-processor/services/intent-processor.service.ts +++ b/src/intent-processor/services/intent-processor.service.ts @@ -105,7 +105,7 @@ export class IntentProcessorService implements OnApplicationBootstrap { const intentSourceAddr = this.getIntentSource() const proves = await this.indexerService.getNextSendBatch(intentSourceAddr) - const batchProvesPerChain = _.groupBy(proves, (prove) => prove.destinationChainId) + let batchProvesPerChain = _.groupBy(proves, (prove) => prove.destinationChainId) this.logger.debug( EcoLogMessage.fromDefault({ @@ -116,6 +116,7 @@ export class IntentProcessorService implements OnApplicationBootstrap { }, }), ) + batchProvesPerChain = {} // TODO: Remove when Eco supports Metaprover for send batches const jobsData: ExecuteSendBatchJobData[] = [] From 735ad5768828d833a4efba716979c4ee139e9f39 Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Wed, 11 Jun 2025 18:08:06 -0400 Subject: [PATCH 12/13] support different envs --- config/staging.ts | 16 ++--------- src/eco-configs/utils.ts | 28 +++++++++++++------ .../services/liquidity-manager.service.ts | 11 ++++++-- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/config/staging.ts b/config/staging.ts index 25394c036..4fcae01b2 100644 --- a/config/staging.ts +++ b/config/staging.ts @@ -1,27 +1,17 @@ export default { - server: { - url: 'https://solver.staging.bend.eco', - }, - aws: [ { region: 'us-west-2', - secretID: 'eco-solver-secrets-staging', + secretID: 'eco-solver-secrets-prod', }, { region: 'us-west-2', - secretID: 'eco-solver-configs-staging', + secretID: 'eco-solver-configs-prod', }, { region: 'us-west-2', - secretID: 'eco-solver-whitelist-staging', + secretID: 'eco-solver-whitelist-prod', }, ], //don't add anything else here - - solverRegistrationConfig: { - apiOptions: { - baseUrl: 'https://quotes-preprod.eco.com', - }, - }, } diff --git a/src/eco-configs/utils.ts b/src/eco-configs/utils.ts index 010d82fb3..20cbded40 100644 --- a/src/eco-configs/utils.ts +++ b/src/eco-configs/utils.ts @@ -2,13 +2,6 @@ import { EcoChainConfig, EcoProtocolAddresses } from '@eco-foundation/routes-ts' import * as config from 'config' import { EcoError } from '../common/errors/eco-error' -const CALDERA_CHAIN_CONFIG: EcoChainConfig = { - IntentSource: '0x50673016E0720d6B7FA5Af3290709Fc8bAF65A70', - Inbox: '0xCc71EA5C67795EF12be2328C14F7E96A39D71067', - HyperProver: '0x0000000000000000000000000000000000000000', - MetaProver: '0xcF415cFD2f287Ea5e394BAA1f12035fC57d6EED8', -} - /** * The prefix for non-production deploys on a chain */ @@ -53,7 +46,7 @@ export function isPreEnv(): boolean { */ export function getChainConfig(chainID: number | string): EcoChainConfig { const id = isPreEnv() ? `${chainID}-${ChainPrefix}` : chainID.toString() - return CALDERA_CHAIN_CONFIG + return getCalderaChainConfig() // const config = EcoProtocolAddresses[id] // if (config === undefined) { // throw EcoError.ChainConfigNotFound(id) @@ -61,3 +54,22 @@ export function getChainConfig(chainID: number | string): EcoChainConfig { // return CALDERA_CHAIN_CONFIG // } } + +function getCalderaChainConfig(): EcoChainConfig { + const env = getNodeEnv() + if (env === NodeEnv.production) { + return { + IntentSource: '0x192b12FAB612AB8c54f4B416500Ea71CF61a9473', + Inbox: '0xCB96D5Db5071b3335F8DB5a97BC90E274AAe24bF', + HyperProver: '0x0000000000000000000000000000000000000000', + MetaProver: '0x83C09c0C0579C23A6acEFD6a2b6285Bcec904207', + } + } else { + return { + IntentSource: '0x50673016E0720d6B7FA5Af3290709Fc8bAF65A70', + Inbox: '0xCc71EA5C67795EF12be2328C14F7E96A39D71067', + HyperProver: '0x0000000000000000000000000000000000000000', + MetaProver: '0xcF415cFD2f287Ea5e394BAA1f12035fC57d6EED8', + } + } +} diff --git a/src/liquidity-manager/services/liquidity-manager.service.ts b/src/liquidity-manager/services/liquidity-manager.service.ts index b1a385f88..be44d1233 100644 --- a/src/liquidity-manager/services/liquidity-manager.service.ts +++ b/src/liquidity-manager/services/liquidity-manager.service.ts @@ -36,6 +36,7 @@ import { KernelAccountClientService } from '@/transaction/smart-wallets/kernel/k import { TokenConfig } from '@/balance/types' import { removeJobSchedulers } from '@/bullmq/utils/queue' import { EcoLogMessage } from '@/common/logging/eco-log-message' +import { getNodeEnv, NodeEnv } from '@/eco-configs/utils' @Injectable() export class LiquidityManagerService implements OnApplicationBootstrap { @@ -70,8 +71,14 @@ export class LiquidityManagerService implements OnApplicationBootstrap { this.config = this.ecoConfigService.getLiquidityManager() // Use OP as the default chain assuming the Kernel wallet is the same across all chains - const opChainId = 33111 - const client = await this.kernelAccountClientService.getClient(opChainId) + const env = getNodeEnv() + let chainId + if (env === NodeEnv.production) { + chainId = 33139 // apechain + } else { + chainId = 33111 // curtis + } + const client = await this.kernelAccountClientService.getClient(chainId) const kernelAddress = client.kernelAccount.address // Track rebalances for Solver From acb83efd1b842dc1018b8ee640fc0ddfe62ff09c Mon Sep 17 00:00:00 2001 From: Chenyao Yu <4844716+chenyaoy@users.noreply.github.com> Date: Wed, 11 Jun 2025 18:34:59 -0400 Subject: [PATCH 13/13] update eco-chains package --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3bcb5f90c..40b439593 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "dependencies": { "@aws-sdk/client-kms": "^3.744.0", "@aws-sdk/client-secrets-manager": "^3.592.0", - "@eco-foundation/chains": "^1.0.32", + "@eco-foundation/chains": "^1.0.36", "@eco-foundation/routes-ts": "^2.1.19", "@launchdarkly/node-server-sdk": "^9.7.1", "@liaoliaots/nestjs-redis-health": "^9.0.4", diff --git a/yarn.lock b/yarn.lock index b703e811a..6dd0377c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1472,10 +1472,10 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@eco-foundation/chains@^1.0.32": - version "1.0.32" - resolved "https://registry.yarnpkg.com/@eco-foundation/chains/-/chains-1.0.32.tgz#281b05cff36893f0fec907ced85ce96cb6111f8f" - integrity sha512-CT5xJkg/a36AqnsTN88cO+clnt54EI/h+SR+G+dZ8MZBlB0Q2iqYypn1ii/4OHKobVOmg+HjNOjOW4EQJgxLkg== +"@eco-foundation/chains@^1.0.36": + version "1.0.36" + resolved "https://registry.yarnpkg.com/@eco-foundation/chains/-/chains-1.0.36.tgz#3ecee59a6b6dffa2b67144fc91ce568bbd8bf974" + integrity sha512-rtnyAvPEyYgDilbfNyjel0xdV7DDsNojorkwdsTXLAEg7VWeIgnltZjGknaWn3YqycCCdphUI+sVvCTKvZgx5A== dependencies: typia "^8.0.4" viem "^2.24.1"