From 72a227339465419a6e7453c88b419eec8e7de2c7 Mon Sep 17 00:00:00 2001 From: huyhuynh3103 Date: Thu, 20 Aug 2026 21:37:03 +0700 Subject: [PATCH] feat: support Ronin and Saigon testnet (internal Sky Mavis fork) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Trim NETWORKS to the two Ronin chains for the internal Sky Mavis build: - Ronin mainnet (chainId 2020) - Saigon testnet (chainId 202601 — authoritative per Sky Mavis, not the public "Saigon 2021" id) Both point at the self-hosted Safe Transaction Service (standard safe-transaction-service software, so api.ts is unchanged) and share the ronin.ico logo. Update the how-it-works "Supported Networks" copy to match. The Tx Service base URL is left as a TODO(sky-mavis) placeholder; ronin.ico still needs to be added under app/public/networks/. Co-Authored-By: Claude Opus 4.8 --- app/app/constants.ts | 301 ++-------------------------------- app/app/how-it-works/page.tsx | 6 +- 2 files changed, 19 insertions(+), 288 deletions(-) diff --git a/app/app/constants.ts b/app/app/constants.ts index 09ff219..46787cc 100644 --- a/app/app/constants.ts +++ b/app/app/constants.ts @@ -1,294 +1,25 @@ -export const BASE_URL = "https://api.safe.global/tx-service"; +// TODO(sky-mavis): set BASE_URL to the Sky Mavis self-hosted safe-transaction-service. +// If the service uses ONE host with per-chain paths, keep this and use `${BASE_URL}/`. +// If it uses SEPARATE hostnames per chain, delete BASE_URL and inline full apiUrl strings. +export const BASE_URL = "https://"; export const NETWORKS = [ { - value: "ethereum", - label: "Ethereum", - chainId: 1, - gnosisPrefix: "eth", - logo: "networks/ethereum.ico", - apiUrl: `${BASE_URL}/eth`, + value: "ronin", + label: "Ronin", + chainId: 2020, + gnosisPrefix: "ronin", + logo: "networks/ronin.ico", + apiUrl: `${BASE_URL}/ronin`, // TODO(sky-mavis): confirm URL for the chainId 2020 Tx Service }, { - value: "arbitrum", - label: "Arbitrum", - chainId: 42161, - gnosisPrefix: "arb1", - logo: "networks/arbitrum.ico", - apiUrl: `${BASE_URL}/arb1`, + value: "saigon", + label: "Saigon Testnet", + chainId: 202601, // authoritative Ronin testnet id — NOT the public "Saigon 2021" + gnosisPrefix: "saigon", + logo: "networks/ronin.ico", // shared icon with mainnet + apiUrl: `${BASE_URL}/saigon`, // TODO(sky-mavis): confirm URL for the chainId 202601 Tx Service }, - { - value: "base", - label: "Base", - chainId: 8453, - gnosisPrefix: "base", - logo: "networks/base.ico", - apiUrl: `${BASE_URL}/base`, - }, - { - value: "optimism", - label: "OP Mainnet", - chainId: 10, - gnosisPrefix: "oeth", - logo: "networks/optimism.ico", - apiUrl: `${BASE_URL}/oeth`, - }, - { - value: "worldchain", - label: "Worldchain", - chainId: 480, - gnosisPrefix: "wc", - logo: "networks/worldchain.ico", - apiUrl: `${BASE_URL}/wc`, - }, - { - value: "unichain", - label: "Unichain", - chainId: 130, - gnosisPrefix: "unichain", - logo: "networks/unichain.ico", - apiUrl: `${BASE_URL}/unichain`, - }, - { - value: "monad", - label: "Monad", - chainId: 143, - gnosisPrefix: "monad", - logo: "networks/monad.ico", - apiUrl: `${BASE_URL}/monad`, - }, - { - value: "avalanche", - label: "Avalanche", - chainId: 43114, - gnosisPrefix: "avax", - logo: "networks/avalanche.ico", - apiUrl: `${BASE_URL}/avax`, - }, - { - value: "berachain", - label: "Berachain", - chainId: 80094, - gnosisPrefix: "berachain", - logo: "networks/berachain.ico", - apiUrl: `${BASE_URL}/berachain`, - }, - { - value: "linea", - label: "Linea", - chainId: 59144, - gnosisPrefix: "linea", - logo: "networks/linea.ico", - apiUrl: `${BASE_URL}/linea`, - }, - { - value: "zksync", - label: "zkSync", - chainId: 324, - gnosisPrefix: "zksync", - logo: "networks/zksync.ico", - apiUrl: `${BASE_URL}/zksync`, - }, - { - value: "plasma", - label: "Plasma", - chainId: 9745, - gnosisPrefix: "plasma", - logo: "networks/plasma.ico", - apiUrl: `${BASE_URL}/plasma`, - }, - { - value: "polygon", - label: "Polygon", - chainId: 137, - gnosisPrefix: "matic", - logo: "networks/polygon.ico", - apiUrl: `${BASE_URL}/pol`, - }, - { - value: "0g", - label: "0g", - chainId: 16661, - gnosisPrefix: "0g", - logo: "networks/0g.ico", - apiUrl: `${BASE_URL}/0g`, - }, - { - value: "aurora", - label: "Aurora", - chainId: 1313161554, - gnosisPrefix: "aurora", - logo: "networks/aurora.ico", - apiUrl: `${BASE_URL}/aurora`, - }, - { - value: "base-sepolia", - label: "Base Sepolia", - chainId: 84532, - gnosisPrefix: "basesep", - logo: "networks/base.ico", - apiUrl: `${BASE_URL}/basesep`, - }, - { - value: "blast", - label: "Blast", - chainId: 81457, - gnosisPrefix: "blast", - logo: "networks/blast.ico", - apiUrl: `https://safe-transaction-blast.safe.global`, - }, - { - value: "botanix", - label: "Botanix", - chainId: 3637, - gnosisPrefix: "botanix", - logo: "networks/botanix.ico", - apiUrl: `${BASE_URL}/btc`, - }, - { - value: "bsc", - label: "BSC", - chainId: 56, - gnosisPrefix: "bnb", - logo: "networks/bsc.ico", - apiUrl: `${BASE_URL}/bnb`, - }, - { - value: "celo", - label: "Celo", - chainId: 42220, - gnosisPrefix: "celo", - logo: "networks/celo.ico", - apiUrl: `${BASE_URL}/celo`, - }, - { - value: "codex", - label: "Codex", - chainId: 81224, - gnosisPrefix: "codex", - logo: "networks/codex.ico", - apiUrl: `${BASE_URL}/codex`, - }, - { - value: "gnosis-chain", - label: "Gnosis Chain", - chainId: 100, - gnosisPrefix: "gno", - logo: "networks/gnosis.ico", - apiUrl: `${BASE_URL}/gno`, - }, - { - value: "chiado", - label: "Gnosis Chiado", - chainId: 10200, - gnosisPrefix: "chiado", - logo: "networks/gnosis.ico", - apiUrl: `${BASE_URL}/chi`, - }, - { - value: "hemi", - label: "Hemi", - chainId: 43111, - gnosisPrefix: "hemi", - logo: "networks/hemi.ico", - apiUrl: `${BASE_URL}/hemi`, - }, - { - value: "ink", - label: "Ink", - chainId: 57073, - gnosisPrefix: "ink", - logo: "networks/ink.ico", - apiUrl: `${BASE_URL}/ink`, - }, - { - value: "katana", - label: "Katana", - chainId: 747474, - gnosisPrefix: "katana", - logo: "networks/katana.ico", - apiUrl: `${BASE_URL}/katana`, - }, - { - value: "lens", - label: "Lens", - chainId: 232, - gnosisPrefix: "lens", - logo: "networks/lens.ico", - apiUrl: `${BASE_URL}/lens`, - }, - { - value: "mantle", - label: "Mantle", - chainId: 5000, - gnosisPrefix: "mnt", - logo: "networks/mantle.ico", - apiUrl: `${BASE_URL}/mantle`, - }, - { - value: "opbnb", - label: "opBNB", - chainId: 204, - gnosisPrefix: "opbnb", - logo: "networks/opbnb.ico", - apiUrl: `${BASE_URL}/opbnb`, - }, - { - value: "peaq", - label: "Peaq", - chainId: 3338, - gnosisPrefix: "peaq", - logo: "networks/peaq.ico", - apiUrl: `${BASE_URL}/peaq`, - }, - { - value: "polygon-zkevm", - label: "Polygon zkEVM", - chainId: 1101, - gnosisPrefix: "zkevm", - logo: "networks/polygon.ico", - apiUrl: `${BASE_URL}/zkevm`, - }, - { - value: "scroll", - label: "Scroll", - chainId: 534352, - gnosisPrefix: "scr", - logo: "networks/scroll.ico", - apiUrl: `${BASE_URL}/scr`, - }, - { - value: "sepolia", - label: "Sepolia", - chainId: 11155111, - gnosisPrefix: "sep", - logo: "networks/ethereum.ico", - apiUrl: `${BASE_URL}/sep`, - }, - { - value: "sonic", - label: "Sonic", - chainId: 146, - gnosisPrefix: "sonic", - logo: "networks/sonic.ico", - apiUrl: `${BASE_URL}/sonic`, - }, - { - value: "xdc", - label: "XDC", - chainId: 50, - gnosisPrefix: "xdc", - logo: "networks/xdc.ico", - apiUrl: `${BASE_URL}/xdc`, - }, - { - value: "xlayer", - label: "xLayer", - chainId: 196, - gnosisPrefix: "xlayer", - logo: "networks/xlayer.ico", - apiUrl: `${BASE_URL}/okb`, - } ]; diff --git a/app/app/how-it-works/page.tsx b/app/app/how-it-works/page.tsx index fb9eb9f..12b7dda 100644 --- a/app/app/how-it-works/page.tsx +++ b/app/app/how-it-works/page.tsx @@ -215,9 +215,9 @@ export default function HowItWorks() {

- The app supports multiple networks, including Ethereum, Polygon, - Arbitrum, and more. For a full list of supported networks, please - refer to the network selection dropdown on the main page. + The app supports the Ronin network — Ronin mainnet and the Ronin + (Saigon) test network. For the full list, please refer to the + network selection dropdown on the main page.