From a5cd5dee57ffe80fd0aea47ec8a5c5077e410f38 Mon Sep 17 00:00:00 2001 From: Paul Grey Date: Fri, 13 Feb 2026 10:13:22 +1300 Subject: [PATCH 1/4] fix: replace dead RPC and AtomicAssets API endpoints with bloxprod MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RPC: protontestnet.greymass.com (DNS dead) → testnet.protonchain.com + xpr-testnet-rpc.bloxprod.io - AA API: test.proton.api.atomicassets.io (dead) → xpr-testnet-atm-api.bloxprod.io - Mainnet: proton.api.atomicassets.io → xpr-mainnet-atm-api.bloxprod.io - Chain ID detection: replace fragile URL comparison with NEXT_PUBLIC_CHAIN_ID env var - Dockerfile: add NEXT_PUBLIC_CHAIN_ID build arg - README: update all endpoint references and env template filename Co-Authored-By: Claude Opus 4.6 --- .env.dev.template | 5 +++-- Dockerfile | 2 ++ README.md | 20 +++++++++++--------- services/proton.ts | 6 ++---- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/.env.dev.template b/.env.dev.template index b22055cd..c2d9794b 100644 --- a/.env.dev.template +++ b/.env.dev.template @@ -1,6 +1,7 @@ -NEXT_PUBLIC_CHAIN_ENDPOINTS = 'https://protontestnet.greymass.com/' +NEXT_PUBLIC_CHAIN_ENDPOINTS = 'https://testnet.protonchain.com, https://xpr-testnet-rpc.bloxprod.io' NEXT_PUBLIC_BLOCK_EXPLORER = 'https://proton-test.bloks.io/block/' -NEXT_PUBLIC_NFT_ENDPOINT = 'https://test.proton.api.atomicassets.io' +NEXT_PUBLIC_NFT_ENDPOINT = 'https://xpr-testnet-atm-api.bloxprod.io' +NEXT_PUBLIC_CHAIN_ID = '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd' BACKEND_ENDPOINT = 'https://api-dev.protonchain.com/v1' NEXT_PUBLIC_ALCHEMY_URL = 'https://polygon-mainnet.g.alchemy.com/v2/cZYm3F6HFecKtBJDWBLiYR2Bweqmwlnc' NEXT_PUBLIC_NFT_BRIDGE_ADDRESS = '0xBf9FBCb316dE872170406C07D7CB7783d0068eE3' diff --git a/Dockerfile b/Dockerfile index df8b1883..7a0b0dc7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,10 +5,12 @@ ARG NEXT_PUBLIC_GA_TRACKING_ID ARG NEXT_PUBLIC_CHAIN_ENDPOINTS ARG NEXT_PUBLIC_BLOCK_EXPLORER ARG NEXT_PUBLIC_NFT_ENDPOINT +ARG NEXT_PUBLIC_CHAIN_ID ENV NEXT_PUBLIC_CHAIN_ENDPOINTS=$NEXT_PUBLIC_CHAIN_ENDPOINTS ENV NEXT_PUBLIC_BLOCK_EXPLORER=$NEXT_PUBLIC_BLOCK_EXPLORER ENV NEXT_PUBLIC_GA_TRACKING_ID=$NEXT_PUBLIC_GA_TRACKING_ID ENV NEXT_PUBLIC_NFT_ENDPOINT=$NEXT_PUBLIC_NFT_ENDPOINT +ENV NEXT_PUBLIC_CHAIN_ID=$NEXT_PUBLIC_CHAIN_ID # COPY .npmrc .npmrc COPY package.json . diff --git a/README.md b/README.md index e553c2b9..fea2ddd1 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,10 @@ This application shows the basic functionality of NFTs on the XPR Network blockc This is built off of atomicassets NFT framework. -- [API Documentation for atomicassets (mainnet)](https://proton.api.atomicassets.io/atomicassets/docs/swagger/) -- [API Documentation for atomicmarket (mainnet)](https://proton.api.atomicassets.io/atomicmarket/docs/swagger/) -- [API Documentation for atomicassets (testnet)](https://test.proton.api.atomicassets.io/atomicassets/docs/swagger/) -- [API Documentation for atomicmarket (testnet)](https://test.proton.api.atomicassets.io/atomicmarket/docs/swagger/) +- [API Documentation for atomicassets (mainnet)](https://xpr-mainnet-atm-api.bloxprod.io/atomicassets/docs/swagger/) +- [API Documentation for atomicmarket (mainnet)](https://xpr-mainnet-atm-api.bloxprod.io/atomicmarket/docs/swagger/) +- [API Documentation for atomicassets (testnet)](https://xpr-testnet-atm-api.bloxprod.io/atomicassets/docs/swagger/) +- [API Documentation for atomicmarket (testnet)](https://xpr-testnet-atm-api.bloxprod.io/atomicmarket/docs/swagger/) ## To build and run locally @@ -36,13 +36,14 @@ npm run dev ## Environment -Create a copy of `.env.template` and name it `.env.local`: +Create a copy of `.env.dev.template` and name it `.env.local`: For mainnet: ``` -NEXT_PUBLIC_CHAIN_ENDPOINTS='https://proton.eoscafeblock.com, https://proton.greymass.com' +NEXT_PUBLIC_CHAIN_ENDPOINTS='https://xpr-mainnet-rpc.bloxprod.io, https://proton.eosusa.io' NEXT_PUBLIC_BLOCK_EXPLORER='https://proton.bloks.io/block/' -NEXT_PUBLIC_NFT_ENDPOINT='https://proton.api.atomicassets.io' +NEXT_PUBLIC_NFT_ENDPOINT='https://xpr-mainnet-atm-api.bloxprod.io' +NEXT_PUBLIC_CHAIN_ID='384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0' BACKEND_ENDPOINT = string; PROTON_MARKET_JWT_SECRET = string; @@ -50,9 +51,10 @@ PROTON_MARKET_JWT_SECRET = string; For testnet: ``` -NEXT_PUBLIC_CHAIN_ENDPOINTS='https://testnet.protonchain.com' +NEXT_PUBLIC_CHAIN_ENDPOINTS='https://testnet.protonchain.com, https://xpr-testnet-rpc.bloxprod.io' NEXT_PUBLIC_BLOCK_EXPLORER='https://proton-test.bloks.io/block/' -NEXT_PUBLIC_NFT_ENDPOINT='https://test.proton.api.atomicassets.io' +NEXT_PUBLIC_NFT_ENDPOINT='https://xpr-testnet-atm-api.bloxprod.io' +NEXT_PUBLIC_CHAIN_ID='71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd' BACKEND_ENDPOINT = string; PROTON_MARKET_JWT_SECRET = string; diff --git a/services/proton.ts b/services/proton.ts index 19bf195e..5c77ac50 100644 --- a/services/proton.ts +++ b/services/proton.ts @@ -160,10 +160,8 @@ class ProtonSDK { linkOptions: { endpoints: proton.endpoints, chainId: - process.env.NEXT_PUBLIC_NFT_ENDPOINT === - 'https://test.proton.api.atomicassets.io' - ? '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd' - : '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0', + process.env.NEXT_PUBLIC_CHAIN_ID || + '384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0', restoreSession, }, transportOptions: { From 7de2ee180ba4c4f290633a63d990940d6dd89c72 Mon Sep 17 00:00:00 2001 From: Paul Grey Date: Fri, 13 Feb 2026 10:16:12 +1300 Subject: [PATCH 2/4] fix: remove old protonchain.com and eosusa endpoints, use bloxprod only Co-Authored-By: Claude Opus 4.6 --- .env.dev.template | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.env.dev.template b/.env.dev.template index c2d9794b..44904a2b 100644 --- a/.env.dev.template +++ b/.env.dev.template @@ -1,4 +1,4 @@ -NEXT_PUBLIC_CHAIN_ENDPOINTS = 'https://testnet.protonchain.com, https://xpr-testnet-rpc.bloxprod.io' +NEXT_PUBLIC_CHAIN_ENDPOINTS = 'https://xpr-testnet-rpc.bloxprod.io' NEXT_PUBLIC_BLOCK_EXPLORER = 'https://proton-test.bloks.io/block/' NEXT_PUBLIC_NFT_ENDPOINT = 'https://xpr-testnet-atm-api.bloxprod.io' NEXT_PUBLIC_CHAIN_ID = '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd' diff --git a/README.md b/README.md index fea2ddd1..fc263b1c 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Create a copy of `.env.dev.template` and name it `.env.local`: For mainnet: ``` -NEXT_PUBLIC_CHAIN_ENDPOINTS='https://xpr-mainnet-rpc.bloxprod.io, https://proton.eosusa.io' +NEXT_PUBLIC_CHAIN_ENDPOINTS='https://xpr-mainnet-rpc.bloxprod.io' NEXT_PUBLIC_BLOCK_EXPLORER='https://proton.bloks.io/block/' NEXT_PUBLIC_NFT_ENDPOINT='https://xpr-mainnet-atm-api.bloxprod.io' NEXT_PUBLIC_CHAIN_ID='384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0' @@ -51,7 +51,7 @@ PROTON_MARKET_JWT_SECRET = string; For testnet: ``` -NEXT_PUBLIC_CHAIN_ENDPOINTS='https://testnet.protonchain.com, https://xpr-testnet-rpc.bloxprod.io' +NEXT_PUBLIC_CHAIN_ENDPOINTS='https://xpr-testnet-rpc.bloxprod.io' NEXT_PUBLIC_BLOCK_EXPLORER='https://proton-test.bloks.io/block/' NEXT_PUBLIC_NFT_ENDPOINT='https://xpr-testnet-atm-api.bloxprod.io' NEXT_PUBLIC_CHAIN_ID='71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd' From 6b31efd6cbfc2ae81c1917960e2d194ba57941d8 Mon Sep 17 00:00:00 2001 From: Paul Grey Date: Fri, 13 Feb 2026 10:19:49 +1300 Subject: [PATCH 3/4] fix: use testnet.protonchain.com for RPC (bloxprod RPC is down) bloxprod AA API works but their RPC endpoints (both testnet and mainnet) don't resolve. Use testnet.protonchain.com and proton.eosusa.io for RPC instead. Co-Authored-By: Claude Opus 4.6 --- .env.dev.template | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.env.dev.template b/.env.dev.template index 44904a2b..714ad982 100644 --- a/.env.dev.template +++ b/.env.dev.template @@ -1,4 +1,4 @@ -NEXT_PUBLIC_CHAIN_ENDPOINTS = 'https://xpr-testnet-rpc.bloxprod.io' +NEXT_PUBLIC_CHAIN_ENDPOINTS = 'https://testnet.protonchain.com' NEXT_PUBLIC_BLOCK_EXPLORER = 'https://proton-test.bloks.io/block/' NEXT_PUBLIC_NFT_ENDPOINT = 'https://xpr-testnet-atm-api.bloxprod.io' NEXT_PUBLIC_CHAIN_ID = '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd' diff --git a/README.md b/README.md index fc263b1c..8c2ac219 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Create a copy of `.env.dev.template` and name it `.env.local`: For mainnet: ``` -NEXT_PUBLIC_CHAIN_ENDPOINTS='https://xpr-mainnet-rpc.bloxprod.io' +NEXT_PUBLIC_CHAIN_ENDPOINTS='https://proton.eosusa.io' NEXT_PUBLIC_BLOCK_EXPLORER='https://proton.bloks.io/block/' NEXT_PUBLIC_NFT_ENDPOINT='https://xpr-mainnet-atm-api.bloxprod.io' NEXT_PUBLIC_CHAIN_ID='384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0' @@ -51,7 +51,7 @@ PROTON_MARKET_JWT_SECRET = string; For testnet: ``` -NEXT_PUBLIC_CHAIN_ENDPOINTS='https://xpr-testnet-rpc.bloxprod.io' +NEXT_PUBLIC_CHAIN_ENDPOINTS='https://testnet.protonchain.com' NEXT_PUBLIC_BLOCK_EXPLORER='https://proton-test.bloks.io/block/' NEXT_PUBLIC_NFT_ENDPOINT='https://xpr-testnet-atm-api.bloxprod.io' NEXT_PUBLIC_CHAIN_ID='71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd' From f3cb5f41cea607011e4c0668bbc82534e618fb04 Mon Sep 17 00:00:00 2001 From: Paul Grey Date: Fri, 13 Feb 2026 10:20:11 +1300 Subject: [PATCH 4/4] fix: add protonnz.com as backup RPC endpoints - Testnet: tn1.protonnz.com as fallback - Mainnet: api.protonnz.com as fallback Co-Authored-By: Claude Opus 4.6 --- .env.dev.template | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.env.dev.template b/.env.dev.template index 714ad982..d020a735 100644 --- a/.env.dev.template +++ b/.env.dev.template @@ -1,4 +1,4 @@ -NEXT_PUBLIC_CHAIN_ENDPOINTS = 'https://testnet.protonchain.com' +NEXT_PUBLIC_CHAIN_ENDPOINTS = 'https://testnet.protonchain.com, https://tn1.protonnz.com' NEXT_PUBLIC_BLOCK_EXPLORER = 'https://proton-test.bloks.io/block/' NEXT_PUBLIC_NFT_ENDPOINT = 'https://xpr-testnet-atm-api.bloxprod.io' NEXT_PUBLIC_CHAIN_ID = '71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd' diff --git a/README.md b/README.md index 8c2ac219..f839fd4e 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ Create a copy of `.env.dev.template` and name it `.env.local`: For mainnet: ``` -NEXT_PUBLIC_CHAIN_ENDPOINTS='https://proton.eosusa.io' +NEXT_PUBLIC_CHAIN_ENDPOINTS='https://proton.eosusa.io, https://api.protonnz.com' NEXT_PUBLIC_BLOCK_EXPLORER='https://proton.bloks.io/block/' NEXT_PUBLIC_NFT_ENDPOINT='https://xpr-mainnet-atm-api.bloxprod.io' NEXT_PUBLIC_CHAIN_ID='384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0' @@ -51,7 +51,7 @@ PROTON_MARKET_JWT_SECRET = string; For testnet: ``` -NEXT_PUBLIC_CHAIN_ENDPOINTS='https://testnet.protonchain.com' +NEXT_PUBLIC_CHAIN_ENDPOINTS='https://testnet.protonchain.com, https://tn1.protonnz.com' NEXT_PUBLIC_BLOCK_EXPLORER='https://proton-test.bloks.io/block/' NEXT_PUBLIC_NFT_ENDPOINT='https://xpr-testnet-atm-api.bloxprod.io' NEXT_PUBLIC_CHAIN_ID='71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd'