From 1a14622b22d891548851eebb5c8ced3b36688389 Mon Sep 17 00:00:00 2001 From: defiQUG Date: Wed, 29 Apr 2026 06:20:36 -0700 Subject: [PATCH] Stabilize Chain 138 PMM router helpers --- config/address-inventory.chain138.json | 17 +++++- config/runtime-env.chain138.json | 12 +++- contracts/dex/DODOPMMSwapAdapter.sol | 61 +++++++++++++++++++ foundry.toml | 12 +++- .../deploy-chain138-gas-canonicals.sh | 2 +- .../dry-run-enhanced-swap-router-chain138.sh | 14 +++-- ...ry-run-enhanced-swap-router-v2-chain138.sh | 9 ++- .../deployment/fund-chain138-eth-pmm-pools.sh | 2 +- .../inventory-chain138-pmm-desired-state.sh | 12 +++- .../inventory-register-dodo-pools-chain138.sh | 4 +- .../seed-chain138-canonical-pmm-pools.sh | 2 +- .../sync-chain138-pmm-pools-from-json.sh | 12 +++- 12 files changed, 136 insertions(+), 23 deletions(-) create mode 100644 contracts/dex/DODOPMMSwapAdapter.sol diff --git a/config/address-inventory.chain138.json b/config/address-inventory.chain138.json index 952c0fb..1d1cff7 100644 --- a/config/address-inventory.chain138.json +++ b/config/address-inventory.chain138.json @@ -1,6 +1,6 @@ { "description": "Reference inventory moved out of smom-dbis-138/.env during dotenv cleanup. These are deployed/inventory addresses, not the minimal runtime env surface.", - "updated": "2026-04-03", + "updated": "2026-04-29", "chain138Inventory": { "COMPLIANCE_REGISTRY": "0xbc54fe2b6fda157c59d59826bcfdbcc654ec9ea1", "COMPLIANCE_REGISTRY_ADDRESS": "0xbc54fe2b6fda157c59d59826bcfdbcc654ec9ea1", @@ -71,7 +71,7 @@ "MIRROR_REGISTRY": "0x6427F9739e6B6c3dDb4E94fEfeBcdF35549549d8", "ALLTRA_ADAPTER": "0x66FEBA2fC9a0B47F26DD4284DAd24F970436B8Dc", "DODO_DVM_FACTORY": "0xc93870594C7f83A0aE076c2e30b494Efc526b68E", - "DODO_VENDING_MACHINE_ADDRESS": "0xb6D9EF3575bc48De3f011C310DC24d87bEC6087C", + "DODO_VENDING_MACHINE_ADDRESS": "0xB16c3D48A111714B1795E58341FeFDd643Ab01ab", "DODO_PMM_INTEGRATION": "0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895", "DODO_PMM_PROVIDER": "0x3f729632E9553EBacCdE2e9b4c8F2B285b014F2e", "CAUSDT_ADDRESS_138": "0x5fdDF65733e3d590463F68f93Cf16E8c04081271", @@ -84,6 +84,17 @@ "WXRP_TOKEN_CHAIN138": "0xe8572f3ABD73Eff0A2e8AC5C88C2b6D180735f97", "MINT_BURN_CONTROLLER_CHAIN138": "0x44F79a3cec3fb829973d9b8d630839726D19e9c5", "TRON_ADAPTER_CHAIN138": "0x28a94FB4bC415Ac3273211429338f768074CBEF6", - "PRICE_FEED_KEEPER_ADDRESS": "0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04" + "PRICE_FEED_KEEPER_ADDRESS": "0xD3AD6831aacB5386B8A25BB8D8176a6C8a026f04", + "ENHANCED_SWAP_ROUTER_CHAIN138": "0xE6Cc7643ae2A4C720A28D8263BC4972905d7DE0f", + "ENHANCED_SWAP_ROUTER_ADDRESS": "0xE6Cc7643ae2A4C720A28D8263BC4972905d7DE0f", + "ENHANCED_SWAP_ROUTER_V1_ADDRESS": "0xE6Cc7643ae2A4C720A28D8263BC4972905d7DE0f", + "DODO_PMM_INTEGRATION_ADDRESS": "0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895", + "DODOEX_ROUTER": "0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895", + "DODO_PMM_PROVIDER_ADDRESS": "0x3f729632E9553EBacCdE2e9b4c8F2B285b014F2e", + "POOL_CUSDT_XAU_PUBLIC": "0x1AA55E2001E5651349aFf5a63FD7a7ae44f0f1b0", + "POOL_CUSDC_XAU_PUBLIC": "0xEa9AC6357CaCB42a83b9082B870610363b177CbA", + "POOL_CEURT_XAU_PUBLIC": "0xba99bc1eAac164569d5aca96c806934dDaf970CF", + "CHAIN138_POOL_WETH_USDT": "0xe227f6c0520c0c6e8786fe56fa76c4914f861533", + "CHAIN138_POOL_WETH_USDC": "0xb53a0508940b1ff90f1aad4f6cb50a7012fe5593" } } diff --git a/config/runtime-env.chain138.json b/config/runtime-env.chain138.json index 207d492..2b84283 100644 --- a/config/runtime-env.chain138.json +++ b/config/runtime-env.chain138.json @@ -1,15 +1,18 @@ { "description": "Canonical runtime-used Chain 138 env surface for token-aggregation and PMM-aware services.", - "updated": "2026-04-03", + "updated": "2026-04-29", "runtimeUsed": { "DODO_PMM_INTEGRATION": "0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895", "DODO_PMM_INTEGRATION_ADDRESS": "0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895", + "DODO_PMM_PROVIDER": "0x3f729632E9553EBacCdE2e9b4c8F2B285b014F2e", + "DODO_PMM_PROVIDER_ADDRESS": "0x3f729632E9553EBacCdE2e9b4c8F2B285b014F2e", "OFFICIAL_USDT_ADDRESS": "0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1", "OFFICIAL_USDC_ADDRESS": "0x71D6687F38b93CCad569Fa6352c876eea967201b", "CCIPWETH9_BRIDGE_CHAIN138": "0xcacfd227A040002e49e2e01626363071324f820a", "CCIPWETH10_BRIDGE_CHAIN138": "0xe0E93247376aa097dB308B92e6Ba36bA015535D0", "CHAIN_138_DODO_PMM_INTEGRATION": "0x86ADA6Ef91A3B450F89f2b751e93B1b7A3218895", - "CHAIN_138_DODO_VENDING_MACHINE": "0xb6D9EF3575bc48De3f011C310DC24d87bEC6087C", + "CHAIN_138_DODO_PMM_PROVIDER": "0x3f729632E9553EBacCdE2e9b4c8F2B285b014F2e", + "CHAIN_138_DODO_VENDING_MACHINE": "0xB16c3D48A111714B1795E58341FeFDd643Ab01ab", "UNIVERSAL_CCIP_BRIDGE": "0xCd42e8eD79Dc50599535d1de48d3dAFa0BE156F8", "UNISWAP_V3_ROUTER": "0xde9cD8ee2811E6E64a41D5F68Be315d33995975E", "UNISWAP_QUOTER_ADDRESS": "0x6abbB1CEb2468e748a03A00CD6aA9BFE893AFa1f", @@ -33,6 +36,9 @@ "CCHFC_ADDRESS_138": "0x873990849DDa5117d7C644f0aF24370797C03885", "CCADC_ADDRESS_138": "0x54dBd40cF05e15906A2C21f600937e96787f5679", "CXAUC_ADDRESS_138": "0x290E52a8819A4fbD0714E517225429aA2B70EC6b", - "CXAUT_ADDRESS_138": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E" + "CXAUT_ADDRESS_138": "0x94e408E26c6FD8F4ee00b54dF19082FDA07dC96E", + "ENHANCED_SWAP_ROUTER_CHAIN138": "0xE6Cc7643ae2A4C720A28D8263BC4972905d7DE0f", + "ENHANCED_SWAP_ROUTER_ADDRESS": "0xE6Cc7643ae2A4C720A28D8263BC4972905d7DE0f", + "ENHANCED_SWAP_ROUTER_V1_ADDRESS": "0xE6Cc7643ae2A4C720A28D8263BC4972905d7DE0f" } } diff --git a/contracts/dex/DODOPMMSwapAdapter.sol b/contracts/dex/DODOPMMSwapAdapter.sol new file mode 100644 index 0000000..5a9598d --- /dev/null +++ b/contracts/dex/DODOPMMSwapAdapter.sol @@ -0,0 +1,61 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + +interface IDODOPMMSwapPool { + function _BASE_TOKEN_() external view returns (address); + function _QUOTE_TOKEN_() external view returns (address); + function sellBase(address to) external returns (uint256 receiveQuoteAmount); + function sellQuote(address to) external returns (uint256 receiveBaseAmount); +} + +/** + * @notice Minimal public adapter for DVM-style Chain 138 PMM pools. + * @dev Keeps the atomic-swap dapp's existing swapExactIn surface while using + * the pool execution selectors exposed by the Chain 138 PMM pools. + */ +contract DODOPMMSwapAdapter is ReentrancyGuard { + using SafeERC20 for IERC20; + + event SwapExecuted( + address indexed pool, + address indexed tokenIn, + address indexed tokenOut, + uint256 amountIn, + uint256 amountOut, + address trader + ); + + function swapExactIn( + address pool, + address tokenIn, + uint256 amountIn, + uint256 minAmountOut + ) external nonReentrant returns (uint256 amountOut) { + require(pool != address(0), "DODOPMMSwapAdapter: zero pool"); + require(tokenIn != address(0), "DODOPMMSwapAdapter: zero token"); + require(amountIn > 0, "DODOPMMSwapAdapter: zero amount"); + + address baseToken = IDODOPMMSwapPool(pool)._BASE_TOKEN_(); + address quoteToken = IDODOPMMSwapPool(pool)._QUOTE_TOKEN_(); + address tokenOut; + + if (tokenIn == baseToken) { + tokenOut = quoteToken; + IERC20(tokenIn).safeTransferFrom(msg.sender, pool, amountIn); + amountOut = IDODOPMMSwapPool(pool).sellBase(msg.sender); + } else if (tokenIn == quoteToken) { + tokenOut = baseToken; + IERC20(tokenIn).safeTransferFrom(msg.sender, pool, amountIn); + amountOut = IDODOPMMSwapPool(pool).sellQuote(msg.sender); + } else { + revert("DODOPMMSwapAdapter: token not in pool"); + } + + require(amountOut >= minAmountOut, "DODOPMMSwapAdapter: insufficient output"); + emit SwapExecuted(pool, tokenIn, tokenOut, amountIn, amountOut, msg.sender); + } +} diff --git a/foundry.toml b/foundry.toml index 9067f2e..d49c331 100644 --- a/foundry.toml +++ b/foundry.toml @@ -60,9 +60,17 @@ evm_version = "cancun" optimizer = true optimizer_runs = 100 via_ir = true -# Match default execution target (Chain 138 / Besu uses Cancun-capable clients). +# Generic deploy profile for post-Dencun EVMs. Do not use for Chain 138. evm_version = "cancun" +[profile.chain138] +optimizer = true +optimizer_runs = 100 +via_ir = true +# Chain 138 Besu v25.12 is configured for Paris. Shanghai/Cancun bytecode +# (PUSH0/MCOPY) is rejected on-chain, so all Chain 138 deploys must target Paris. +evm_version = "paris" + [profile.cronos_legacy] optimizer = true optimizer_runs = 100 @@ -74,7 +82,7 @@ evm_version = "paris" optimizer = true optimizer_runs = 100 via_ir = true -# Chain 138 currently rejects PUSH0 bytecode as well; target Paris for gas-canonical deployment flows. +# Backwards-compatible alias for older scripts; prefer profile.chain138. evm_version = "paris" # RPC endpoints — use: forge create ... --rpc-url chain138 diff --git a/scripts/deployment/deploy-chain138-gas-canonicals.sh b/scripts/deployment/deploy-chain138-gas-canonicals.sh index 34282e0..67353b3 100644 --- a/scripts/deployment/deploy-chain138-gas-canonicals.sh +++ b/scripts/deployment/deploy-chain138-gas-canonicals.sh @@ -32,7 +32,7 @@ cmd=( -vvv ) -export FOUNDRY_PROFILE="${FOUNDRY_PROFILE:-chain138_legacy}" +export FOUNDRY_PROFILE="${FOUNDRY_PROFILE:-chain138}" if [[ -n "$ONLY_FAMILY" ]]; then export GAS_FAMILY="$ONLY_FAMILY" fi diff --git a/scripts/deployment/dry-run-enhanced-swap-router-chain138.sh b/scripts/deployment/dry-run-enhanced-swap-router-chain138.sh index 8814694..2b22903 100644 --- a/scripts/deployment/dry-run-enhanced-swap-router-chain138.sh +++ b/scripts/deployment/dry-run-enhanced-swap-router-chain138.sh @@ -10,6 +10,8 @@ ENV_SOURCE="" RUN_FORGE_DRY_RUN=0 RUN_TIMEOUT_SECONDS="${RUN_TIMEOUT_SECONDS:-90}" VERBOSITY="${VERBOSITY:--vv}" +EVM_VERSION_CHAIN138="${EVM_VERSION_CHAIN138:-paris}" +export FOUNDRY_PROFILE="${FOUNDRY_PROFILE:-chain138}" while [[ $# -gt 0 ]]; do case "$1" in @@ -50,7 +52,6 @@ elif [[ -f "$ENV_FILE" ]]; then set +a ENV_SOURCE="$ENV_FILE" fi -source "$SMOM_ROOT/scripts/lib/forge-scope.sh" RPC_URL_138="${RPC_URL_138:-http://192.168.11.211:8545}" WETH="${WETH:-$CHAIN138_WETH_DEFAULT}" @@ -101,6 +102,7 @@ run_forge_dry_run() { forge script script/bridge/trustless/DeployEnhancedSwapRouter.s.sol:DeployEnhancedSwapRouter --skip test --non-interactive + --evm-version "$EVM_VERSION_CHAIN138" --rpc-url "$RPC_URL_138" --private-key "$PRIVATE_KEY" "$VERBOSITY" @@ -111,11 +113,12 @@ run_forge_dry_run() { ( cd "$SMOM_ROOT" || exit 1 echo "Running targeted build warm-up" - forge build contracts/bridge/trustless/EnhancedSwapRouter.sol script/bridge/trustless/DeployEnhancedSwapRouter.s.sol + command forge build --evm-version "$EVM_VERSION_CHAIN138" contracts/bridge/trustless/EnhancedSwapRouter.sol script/bridge/trustless/DeployEnhancedSwapRouter.s.sol echo "" echo "Running sourced non-broadcast forge script" echo "Working directory: $SMOM_ROOT" echo "Timeout: ${RUN_TIMEOUT_SECONDS}s" + echo "EVM version: $EVM_VERSION_CHAIN138" echo "Verbosity: $VERBOSITY" echo "" @@ -168,6 +171,8 @@ fi echo "Required env" show_var "RPC_URL_138" "$RPC_URL_138" "Core RPC only" show_var "PRIVATE_KEY" "" "value loaded; not printed" +show_var "FOUNDRY_PROFILE" "$FOUNDRY_PROFILE" "Chain 138 profile defaults to Paris" +show_var "EVM_VERSION_CHAIN138" "$EVM_VERSION_CHAIN138" "Chain 138 Paris hard fork; avoids PUSH0/MCOPY bytecode" echo "" echo "Chain 138 token env used by the deploy script" @@ -232,9 +237,9 @@ echo "" echo "Exact dry-run command" if [[ -f "$PROJECT_ENV_LOADER" ]]; then - echo "cd \"$PROJECT_ROOT\" && source scripts/lib/load-project-env.sh && cd smom-dbis-138 && bash scripts/forge/scope.sh script bridge/trustless script/bridge/trustless/DeployEnhancedSwapRouter.s.sol:DeployEnhancedSwapRouter --rpc-url \"$RPC_URL_138\" --private-key \"\$PRIVATE_KEY\"" + echo "cd \"$PROJECT_ROOT/smom-dbis-138\" && source scripts/lib/deployment/dotenv.sh && load_deployment_env --repo-root \"\$PWD/..\" && forge script script/bridge/trustless/DeployEnhancedSwapRouter.s.sol:DeployEnhancedSwapRouter --evm-version \"$EVM_VERSION_CHAIN138\" --rpc-url \"$RPC_URL_138\" --private-key \"\$PRIVATE_KEY\"" else - echo "cd \"$SMOM_ROOT\" && source .env && bash scripts/forge/scope.sh script bridge/trustless script/bridge/trustless/DeployEnhancedSwapRouter.s.sol:DeployEnhancedSwapRouter --rpc-url \"$RPC_URL_138\" --private-key \"\$PRIVATE_KEY\"" + echo "cd \"$SMOM_ROOT\" && source .env && forge script script/bridge/trustless/DeployEnhancedSwapRouter.s.sol:DeployEnhancedSwapRouter --evm-version \"$EVM_VERSION_CHAIN138\" --rpc-url \"$RPC_URL_138\" --private-key \"\$PRIVATE_KEY\"" fi echo "" echo "Example minimal exports before dry-run" @@ -260,6 +265,7 @@ echo " bash scripts/deployment/dry-run-enhanced-swap-router-chain138.sh --run" echo " bash scripts/deployment/dry-run-enhanced-swap-router-chain138.sh --run --timeout-seconds 180 --verbosity -vvv" echo "" echo "Note: this is a safe dry-run helper only. The deploy script still warns that swapToStablecoin() needs real WETH->stable routes to be useful on Chain 138." +echo "Note: Chain 138 is Paris; do not compile Chain 138 deploy bytecode with Cancun/Shanghai opcodes." if (( RUN_FORGE_DRY_RUN == 1 )); then echo "" diff --git a/scripts/deployment/dry-run-enhanced-swap-router-v2-chain138.sh b/scripts/deployment/dry-run-enhanced-swap-router-v2-chain138.sh index 7e159f4..a853484 100644 --- a/scripts/deployment/dry-run-enhanced-swap-router-v2-chain138.sh +++ b/scripts/deployment/dry-run-enhanced-swap-router-v2-chain138.sh @@ -10,6 +10,8 @@ ENV_SOURCE="" RUN_FORGE_DRY_RUN=0 RUN_TIMEOUT_SECONDS="${RUN_TIMEOUT_SECONDS:-120}" VERBOSITY="${VERBOSITY:--vv}" +EVM_VERSION_CHAIN138="${EVM_VERSION_CHAIN138:-paris}" +export FOUNDRY_PROFILE="${FOUNDRY_PROFILE:-chain138}" while [[ $# -gt 0 ]]; do case "$1" in @@ -51,7 +53,7 @@ RPC_URL_138="${RPC_URL_138:-http://192.168.11.211:8545}" WETH="${WETH:-0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2}" OFFICIAL_USDT_ADDRESS="${OFFICIAL_USDT_ADDRESS:-0x004b63A7B5b0E06f6bB6adb4a5F9f590BF3182D1}" OFFICIAL_USDC_ADDRESS="${OFFICIAL_USDC_ADDRESS:-0x71D6687F38b93CCad569Fa6352c876eea967201b}" -DODO_PMM_PROVIDER_ADDRESS="${DODO_PMM_PROVIDER_ADDRESS:-${DODO_PMM_PROVIDER:-}}" +DODO_PMM_PROVIDER_ADDRESS="${DODO_PMM_PROVIDER_ADDRESS:-${CHAIN_138_DODO_PMM_PROVIDER:-0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381}}" show_var() { local name="$1" value="$2" note="${3:-}" @@ -101,13 +103,14 @@ run_forge_dry_run() { forge script script/bridge/trustless/DeployEnhancedSwapRouterV2.s.sol:DeployEnhancedSwapRouterV2 --skip test --non-interactive + --evm-version "$EVM_VERSION_CHAIN138" --rpc-url "$RPC_URL_138" --private-key "$PRIVATE_KEY" "$VERBOSITY" ) ( cd "$SMOM_ROOT" - forge build contracts/bridge/trustless/EnhancedSwapRouterV2.sol script/bridge/trustless/DeployEnhancedSwapRouterV2.s.sol + forge build --evm-version "$EVM_VERSION_CHAIN138" contracts/bridge/trustless/EnhancedSwapRouterV2.sol script/bridge/trustless/DeployEnhancedSwapRouterV2.s.sol if command -v timeout >/dev/null 2>&1; then timeout "${RUN_TIMEOUT_SECONDS}s" "${forge_cmd[@]}" else @@ -124,6 +127,8 @@ echo "" show_var "RPC_URL_138" "$RPC_URL_138" "Core RPC only" show_secret_var "PRIVATE_KEY" "${PRIVATE_KEY:-}" "not printed when present" +show_var "FOUNDRY_PROFILE" "$FOUNDRY_PROFILE" "Chain 138 profile defaults to Paris" +show_var "EVM_VERSION_CHAIN138" "$EVM_VERSION_CHAIN138" "Chain 138 Paris hard fork; avoids PUSH0/MCOPY bytecode" show_var "DODO_PMM_PROVIDER_ADDRESS" "${DODO_PMM_PROVIDER_ADDRESS:-}" "required" show_var "CHAIN138_POOL_WETH_USDT" "${CHAIN138_POOL_WETH_USDT:-}" "required for swapToStablecoin readiness" show_var "CHAIN138_POOL_WETH_USDC" "${CHAIN138_POOL_WETH_USDC:-}" "required for swapToStablecoin readiness" diff --git a/scripts/deployment/fund-chain138-eth-pmm-pools.sh b/scripts/deployment/fund-chain138-eth-pmm-pools.sh index 54a3646..57faadd 100644 --- a/scripts/deployment/fund-chain138-eth-pmm-pools.sh +++ b/scripts/deployment/fund-chain138-eth-pmm-pools.sh @@ -17,7 +17,7 @@ PLAN_JSON="${PLAN_JSON:-$SMOM_ROOT/config/chain138-eth-pmm-liquidity-plan.json}" PROFILE="${PROFILE:-}" EXECUTE="${EXECUTE:-0}" RPC_URL_138="${RPC_URL_138:-${RPC_URL:-http://192.168.11.211:8545}}" -DODO_PMM_INTEGRATION_ADDRESS="${DODO_PMM_INTEGRATION_ADDRESS:-${DODO_PMM_INTEGRATION:-}}" +DODO_PMM_INTEGRATION_ADDRESS="${CHAIN_138_DODO_PMM_INTEGRATION:-${DODO_PMM_INTEGRATION_ADDRESS:-0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d}}" PRIVATE_KEY="${PRIVATE_KEY:-}" command -v jq >/dev/null 2>&1 || { echo "jq is required" >&2; exit 1; } diff --git a/scripts/deployment/inventory-chain138-pmm-desired-state.sh b/scripts/deployment/inventory-chain138-pmm-desired-state.sh index a025a6b..85282f2 100755 --- a/scripts/deployment/inventory-chain138-pmm-desired-state.sh +++ b/scripts/deployment/inventory-chain138-pmm-desired-state.sh @@ -27,8 +27,16 @@ fi [[ -n "$ORIG_DODO_PMM_PROVIDER" ]] && DODO_PMM_PROVIDER="$ORIG_DODO_PMM_PROVIDER" RPC_URL_138="${RPC_URL_138:-${RPC_URL:-http://192.168.11.211:8545}}" -DODO_PMM_INTEGRATION_ADDRESS="${DODO_PMM_INTEGRATION_ADDRESS:-${DODO_PMM_INTEGRATION:-}}" -DODO_PMM_PROVIDER_ADDRESS="${DODO_PMM_PROVIDER_ADDRESS:-${DODO_PMM_PROVIDER:-}}" +if [[ -n "$ORIG_DODO_PMM_INTEGRATION_ADDRESS" ]]; then + DODO_PMM_INTEGRATION_ADDRESS="$ORIG_DODO_PMM_INTEGRATION_ADDRESS" +else + DODO_PMM_INTEGRATION_ADDRESS="${CHAIN_138_DODO_PMM_INTEGRATION:-0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d}" +fi +if [[ -n "$ORIG_DODO_PMM_PROVIDER_ADDRESS" ]]; then + DODO_PMM_PROVIDER_ADDRESS="$ORIG_DODO_PMM_PROVIDER_ADDRESS" +else + DODO_PMM_PROVIDER_ADDRESS="${CHAIN_138_DODO_PMM_PROVIDER:-0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381}" +fi [[ -f "$CONFIG_JSON" ]] || { echo "POOL_CONFIG_JSON not found: $CONFIG_JSON" >&2; exit 1; } command -v jq >/dev/null 2>&1 || { echo "jq is required" >&2; exit 1; } diff --git a/scripts/deployment/inventory-register-dodo-pools-chain138.sh b/scripts/deployment/inventory-register-dodo-pools-chain138.sh index c78786c..9d2b484 100644 --- a/scripts/deployment/inventory-register-dodo-pools-chain138.sh +++ b/scripts/deployment/inventory-register-dodo-pools-chain138.sh @@ -8,8 +8,8 @@ ENV_FILE="$SMOM_ROOT/.env" source "$SMOM_ROOT/scripts/load-env.sh" >/dev/null 2>&1 || true RPC_URL_138="${RPC_URL_138:-http://192.168.11.211:8545}" -DODO_PMM_INTEGRATION_ADDRESS="${DODO_PMM_INTEGRATION_ADDRESS:-${DODO_PMM_INTEGRATION:-}}" -DODO_PMM_PROVIDER_ADDRESS="${DODO_PMM_PROVIDER_ADDRESS:-${DODO_PMM_PROVIDER:-}}" +DODO_PMM_INTEGRATION_ADDRESS="${CHAIN_138_DODO_PMM_INTEGRATION:-${DODO_PMM_INTEGRATION_ADDRESS:-0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d}}" +DODO_PMM_PROVIDER_ADDRESS="${CHAIN_138_DODO_PMM_PROVIDER:-${DODO_PMM_PROVIDER_ADDRESS:-0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381}}" [[ -n "$DODO_PMM_INTEGRATION_ADDRESS" ]] || { echo "DODO_PMM_INTEGRATION_ADDRESS not set"; exit 1; } [[ -n "$DODO_PMM_PROVIDER_ADDRESS" ]] || { echo "DODO_PMM_PROVIDER_ADDRESS not set"; exit 1; } diff --git a/scripts/deployment/seed-chain138-canonical-pmm-pools.sh b/scripts/deployment/seed-chain138-canonical-pmm-pools.sh index 0549520..1fc2111 100755 --- a/scripts/deployment/seed-chain138-canonical-pmm-pools.sh +++ b/scripts/deployment/seed-chain138-canonical-pmm-pools.sh @@ -24,7 +24,7 @@ fi command -v cast >/dev/null 2>&1 || { echo "cast is required" >&2; exit 1; } RPC_URL_138="${RPC_URL_138:-${RPC_URL:-http://192.168.11.221:8545}}" -DODO_PMM_INTEGRATION_ADDRESS="${DODO_PMM_INTEGRATION_ADDRESS:-${DODO_PMM_INTEGRATION:-}}" +DODO_PMM_INTEGRATION_ADDRESS="${CHAIN_138_DODO_PMM_INTEGRATION:-${DODO_PMM_INTEGRATION_ADDRESS:-0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d}}" PRIVATE_KEY="${PRIVATE_KEY:-${DEPLOYER_PRIVATE_KEY:-}}" CHAIN_GAS_PRICE="${CHAIN_GAS_PRICE:-1000000000}" APPROVE_GAS_LIMIT="${APPROVE_GAS_LIMIT:-200000}" diff --git a/scripts/deployment/sync-chain138-pmm-pools-from-json.sh b/scripts/deployment/sync-chain138-pmm-pools-from-json.sh index c33c10a..3895421 100755 --- a/scripts/deployment/sync-chain138-pmm-pools-from-json.sh +++ b/scripts/deployment/sync-chain138-pmm-pools-from-json.sh @@ -53,8 +53,16 @@ fi [[ -n "$ORIG_REGISTER_POOL_GAS_LIMIT" ]] && REGISTER_POOL_GAS_LIMIT="$ORIG_REGISTER_POOL_GAS_LIMIT" RPC_URL_138="${RPC_URL_138:-${RPC_URL:-http://192.168.11.211:8545}}" -DODO_PMM_INTEGRATION_ADDRESS="${DODO_PMM_INTEGRATION_ADDRESS:-${DODO_PMM_INTEGRATION:-}}" -DODO_PMM_PROVIDER_ADDRESS="${DODO_PMM_PROVIDER_ADDRESS:-${DODO_PMM_PROVIDER:-}}" +if [[ -n "$ORIG_DODO_PMM_INTEGRATION_ADDRESS" ]]; then + DODO_PMM_INTEGRATION_ADDRESS="$ORIG_DODO_PMM_INTEGRATION_ADDRESS" +else + DODO_PMM_INTEGRATION_ADDRESS="${CHAIN_138_DODO_PMM_INTEGRATION:-0x5BDc62f1ae7D630c37A8B363a1d49845356Ee72d}" +fi +if [[ -n "$ORIG_DODO_PMM_PROVIDER_ADDRESS" ]]; then + DODO_PMM_PROVIDER_ADDRESS="$ORIG_DODO_PMM_PROVIDER_ADDRESS" +else + DODO_PMM_PROVIDER_ADDRESS="${CHAIN_138_DODO_PMM_PROVIDER:-0x5CAe6Ce155b7f08D3a956F5Dc82fC9945f29B381}" +fi DRY_RUN="${DRY_RUN:-0}" [[ -f "$CONFIG_JSON" ]] || { echo "POOL_CONFIG_JSON not found: $CONFIG_JSON" >&2; exit 1; }