Files
nick-doc/Taskmaster/Tasks/task-8.md
Siavash Sameni 85cb439ce2 docs: Task #8 probe results + handoff + PRD AC updates
- Add Handoff - RN Multichain Probe - 2026-05-28.md
- Update Handoff - Request Network In-House Checkout with Task #8 status
- Update Activity Log with backend@ae17b18, frontend@0ebb2f1
- Update PRD §2 acceptance criteria for Task #8
- Update Payment API.md with /api/admin/rn/networks endpoints
2026-05-28 19:53:06 +04:00

4.1 KiB

taskmaster_id, status, priority, depends_on, parent_id, source, generated_at
taskmaster_id status priority depends_on parent_id source generated_at
8 done high
taskmaster 2026-05-28T11:49:27.076Z

8 - Multichain RN proxy registry + USDC/USDT support

  • 8 - Multichain RN proxy registry + USDC/USDT support #taskmaster #priority/high #status/done 🆔 tm-8

Metadata

Field Value
Taskmaster ID 8
Status done
Priority high
Dependencies None
Parent None

Description

Probe and persist RN ERC20FeeProxy addresses on BSC/Arb/ETH/Polygon/Base, add USDC + USDT token entries with correct decimals per chain, and surface an admin networks page. Include the USDT-mainnet approve(0) reset quirk in the frontend approve step.

Details

See PRD - Wallet, Multichain, Confirmations, AML, Trezor.md §2. Tasks: new backend/scripts/probe-rn-chains.ts that walks each chain in supported-chains.json and verifies the canonical 0x0DfbEe143b42B41eFC5A6F87bFD1fFC78c2f0aC9 proxy is the real RN proxy via a known view fn (CREATE2 is deterministic, but verify); promote backend/src/services/payment/requestNetwork/tokens.ts to load from JSON + admin override; add USDT entries on all 5 chains (BSC USDT 18-dec quirk, mainnet/Arb/Polygon/Base USDT 6-dec); buildInHouseCheckoutBlock returns reason='unsupported_chain:' for unknowns; new admin route GET /api/admin/rn/networks + frontend page /dashboard/admin/networks rendering the registry with per-row 'probe again'. Frontend approve flow: if buyer is on Ethereum mainnet AND token is USDT AND current allowance > 0, do approve(spender, 0) first then approve(spender, amount). Acceptance: probe succeeds on at least BSC/Arb/Polygon/ETH/Base; one paid probe on BSC USDT end-to-end; mainnet USDT approve(0) reset works; admin page reflects registry. Dependencies: none — runs in parallel with #9. This is task #8 in the PRD.

Completed work

  • backend/src/services/payment/requestNetwork/supportedChains.json — 5-chain registry with RPC URLs, explorers, proxy addresses, native currency, confirmation thresholds.
  • backend/src/services/payment/requestNetwork/tokens.json — 10 token entries: USDC + USDT on BSC (18-dec), Ethereum (6-dec), Arbitrum (6-dec), Polygon (6-dec), Base (6-dec).
  • backend/src/services/payment/requestNetwork/tokens.ts — promoted to load from JSON with reloadTokenRegistry(), overrideToken(), removeTokenOverride().
  • backend/src/services/payment/requestNetwork/proxyAddresses.ts — promoted to load from JSON with reloadChainRegistry(), getChainMetadata(), listSupportedChains().
  • backend/src/services/payment/requestNetwork/inHouseCheckout.ts — returns unsupported_chain:<id> for unknown chains (was no_proxy_for_chain_<id>).
  • backend/src/services/payment/requestNetwork/networkRegistryRoutes.ts — new admin routes GET /api/admin/rn/networks and POST /api/admin/rn/networks/reload.
  • backend/scripts/probe-rn-chains.ts — standalone probe script verifying RPC reachability, contract code presence, and known function selectors.
  • backend/src/app.ts — mounted /api/admin/rn/networks.
  • frontend/src/web3/config.ts — added arbitrum and base chains with Alchemy/public RPC transports.
  • frontend/src/sections/payment/checkout/rn-in-house-checkout-view.tsx — per-chain explorer URLs, USDT-mainnet approve(0) reset logic with UI state.
  • frontend/src/sections/admin/networks/ — new admin networks list view.
  • frontend/src/app/dashboard/admin/networks/page.tsx — Next.js page for /dashboard/admin/networks.
  • frontend/src/actions/network-registry.ts — API client for admin network registry endpoints.
  • frontend/src/routes/paths.ts + nav-config-dashboard.tsx — added navigation entry.
  • Versions bumped: backend 2.6.45 → 2.6.46, frontend 2.6.44 → 2.6.46.

Verification

  • All 58 relevant backend tests green (rn-in-house-checkout, derived-destinations, sweep-service, request-template-orphan-cleanup).
  • Frontend tsc --noEmit clean.
  • Pending: live paid probe on BSC USDT end-to-end; probe script execution on dev; mainnet USDT approve(0) reset manual verification.