Skip to content

Redeploy testnet with chain ID 420690 and update all contracts#45

Closed
prophet10x wants to merge 137 commits intoJejuNetwork:mainfrom
prophet10x:fresh-deploy
Closed

Redeploy testnet with chain ID 420690 and update all contracts#45
prophet10x wants to merge 137 commits intoJejuNetwork:mainfrom
prophet10x:fresh-deploy

Conversation

@prophet10x
Copy link
Contributor

@prophet10x prophet10x commented Feb 21, 2026

Summary

  • Update chain ID from 2151908 to 420690 across all deployment configs, genesis files, rollup configs, docker-compose, scripts, and documentation
  • Fix BasePaymaster v0.9 compatibility in LiquidityPaymaster and MultiTokenPaymaster (2-arg constructor, entryPoint() function calls)
  • Update contracts.json testnet section with all 70+ deployed contract addresses
  • Add TESTNET-DEPLOYMENT.md with comprehensive deployment documentation
  • Update e2e test scripts with chain ID 420690 and new contract addresses
  • Add e2e-paymaster-elizaos.mjs for JEJU/ELIZAOS token gas sponsorship testing
  • Fix DWS frontend to use relative URLs (avoids CORS/IP issues)
  • Add on-chain ComputeRegistry integration to Tauri node
  • Deploy Blockscout block explorer at /explorer/ with Docker Compose config and documentation
  • Update all explorer URLs across codebase to use config-driven values

Block Explorer

Blockscout deployed at https://jeju-testnet.fartbag.fun/explorer/:

  • Docker Compose config: packages/deployment/docker/blockscout-explorer.compose.yaml
  • Full documentation in TESTNET-DEPLOYMENT.md
  • Explorer URLs updated in services.json, rpc-chains.ts, networks.ts, Settings.tsx

Deployed Contracts (Chain ID 420690)

All core contracts deployed on Jeju Testnet at https://jeju-testnet.fartbag.fun/:

  • Tokens: JEJU/ELIZAOS, NetworkUSDC
  • JNS: Registry, Resolver, Registrar, ReverseRegistrar
  • DWS: StorageManager, WorkerRegistry, CDNRegistry, RepoRegistry, PackageRegistry
  • Registries: Identity, Reputation, Validation, Compute, DAO, Service
  • Moderation: BanManager, ReputationLabelManager, UserBlockRegistry
  • Paymaster Stack: LiquidityPaymaster, MultiTokenPaymaster, PaymasterFactory, CreditManager
  • ERC-4337: EntryPoint v0.7 + v0.9, SimpleAccountFactory
  • Governance: Standard/Critical/Emergency Timelocks
  • OIF: SolverRegistry, SimpleOracle, InputSettler, OutputSettler
  • Federation: NetworkRegistry, RegistryHub, FederatedIdentity/Liquidity/Solver
  • Decentralization: SequencerRegistry, ThresholdBatchSubmitter, DisputeGameFactory
  • X402: Facilitator, IntentBridge

Test plan

  • Verify curl https://jeju-testnet.fartbag.fun/ returns chainId 0x66b32 (420690)
  • Verify faucet at https://jeju-testnet.fartbag.fun/faucet/ distributes JEJU/ELIZAOS tokens
  • Block explorer loads at https://jeju-testnet.fartbag.fun/explorer/
  • Explorer API returns data (/explorer/api/v2/stats)
  • DWS Settings page links to correct explorer URL
  • Run e2e-paymaster-elizaos.mjs against testnet
  • Verify DWS portal loads without CORS errors

🤖 Generated with Claude Code

ProphetX10 and others added 30 commits February 21, 2026 15:29
- Update chain ID from 2151908 to 420690 across all deployment configs,
  genesis files, rollup configs, docker-compose files, scripts, and docs
- Fix BasePaymaster v0.9 compatibility in LiquidityPaymaster and
  MultiTokenPaymaster (2-arg constructor, entryPoint() function calls)
- Update contracts.json testnet section with all deployed addresses:
  registries, moderation, payments, OIF, EIL, federation, sequencer,
  governance timelocks, fees, and more
- Update e2e test scripts with chain ID 420690 and new contract addresses
- Add e2e-paymaster-elizaos.mjs for JEJU/ELIZAOS token gas sponsorship
- Add TESTNET-DEPLOYMENT.md with comprehensive deployment documentation
- Fix DWS frontend to use relative URLs (avoids CORS/IP issues)
- Add on-chain ComputeRegistry integration to Tauri node

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract AMM/swap functionality into CrossChainSwapRouter (4.3KB) and
remove heavy view functions (getBestPaymentTokenForApp, checkAppPreference,
getTokensInfo, getPaymasterStatus, protocol fee claiming).

Before: 26.7KB (exceeded 24.576KB limit, could not deploy)
After:  22.4KB (well within limit, deployable)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rFactory

Deployed to Jeju Testnet (chain ID 420690):
- CrossChainPaymaster: 0x38a024C0b412B9d1db8BC398140D00F5Af3093D4
- CrossChainSwapRouter: 0x525C7063E7C20997BaaE9bDa922159152D0e8417
- MultiTokenPaymaster: 0x5fc748f1FEb28d7b76fa1c6B07D8ba2d5535177c
- PaymasterFactory: 0xB82008565FdC7e44609fA118A4a681E92581e680

CrossChainPaymaster refactored from 26.7KB to 20.5KB by extracting
AMM/swap into CrossChainSwapRouter. All 3 previously undeployable
contracts now compile and deploy successfully.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The PRAGMA table_info query doesn't work reliably through the SQLit
adapter, returning empty rows even when the table exists. This caused
the env column migration to always run, failing on tables that already
have the column from CREATE TABLE.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Change getContracts() to warn and fallback to testnet instead of
  throwing when mainnet contracts are not deployed
- Add Cache-Control: no-cache to DWS frontend HTML responses

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… proxy

The /rpc/proxy route doesn't exist - the actual RPC proxy is at
POST /rpc/:chainId. Use getRpcUrl() which returns the correct
testnet RPC (https://jeju-testnet.fartbag.fun/).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The 'dws.apps.jeju' JNS name isn't registered yet, causing login to
fail with "App not found". Disable decentralized mode so wallet
sign-in works directly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- configureOAuth3RouterConfig now reads OAUTH3_AGENT_URL env var
- Settings page register agent link points to testnet gateway

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The OAUTH3_AGENT_URL constant was captured at module import time,
before configureOAuth3RouterConfig() was called. Replace with a
getter function so it reads the configured value lazily.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Root node_modules has @noble/hashes v2 which renamed sha256->sha2,
but browser deps (viem, ox, @coinbase/wallet-sdk) need v1 paths.
Resolve all @noble/hashes imports to v1 from ox's nested node_modules.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
getServicesConfig() omitted graphqlCors from the returned indexer
object even though it existed in services.json and the schema.
This caused getServiceUrl('indexer', 'graphqlCors') to throw.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ulateRequiredStake

The deployed IdentityRegistry doesn't have calculateRequiredStake.
Default to 0n so registration can proceed on testnet.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update ABI to match deployed contract (tier-based staking, not
  token-address-based calculateRequiredStake)
- Add StakeTier enum (NONE/SMALL/MEDIUM/HIGH) matching contract
- Support free registration (register) and staked (registerWithStake)
- Use ELIZAOS token for staking instead of ETH
- Store a2a endpoint as contract metadata entry
- Replace token selector with tier selector in form

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add IdentityRegistry config, list 4 undeployed contracts,
and add running services (faucet, gateway, DWS, OAuth3).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Redeployed IdentityRegistry to 0x8A93d247134d91e0de6f96547cB0204e5BE8e5D8
with updated stake amounts (1000x increase: 1/10/100 ELIZAOS for Small/
Medium/High tiers). Updated gateway contracts config, registration form
tier descriptions, and TESTNET-DEPLOYMENT.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Changed STAKE_SMALL/MEDIUM/HIGH from constants to mutable state variables
with a governance-only setStakeTiers() setter. Redeployed to
0x40918Ba7f132E0aCba2CE4de4c4baF9BD2D7D849 with ELIZAOS token support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ity registry address

detectNetworkFromHostname() didn't recognize jeju-testnet.fartbag.fun,
so it fell back to localnet (127.0.0.1:6546). Also updated contracts.json
testnet registry.identity to new governance-adjustable deployment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OAuth3 is now running on Oracle server port 4200, proxied via nginx
at /oauth3/. Updated services.json testnet oauth3.api URL from
non-existent auth.testnet.jejunetwork.org to the real endpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The wallet auth endpoint rejects sign-in messages from domains not in
its allowlist. Added jeju-testnet.fartbag.fun so gateway users can
authenticate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements the previously-commented USE_MEMORY_STATE=true env var to use
Map-based in-memory storage instead of SQLit for all state stores (sessions,
clients, auth codes, refresh tokens, OAuth states, passkeys, reports).
Enables OAuth3 to run on servers without a SQLit database.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…LIZAOS→JEJU in UI

- Make IPFS session storage non-blocking in OAuth3 client so login
  succeeds even when DWS storage is unavailable
- Update testnet services.json: point indexer/DWS/storage URLs to
  jeju-testnet.fartbag.fun instead of non-existent jejunetwork.org subdomains
- Update DWS_ENDPOINTS in auth config for testnet
- Rename ELIZAOS to JEJU in gateway stake tier descriptions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- FaucetTab: check registration via IdentityRegistry contract when
  faucet API is unavailable, with static fallback for faucet info
- FaucetTab: fix "Register Now" link to use React Router Link
  (respects BrowserRouter basename)
- RegisteredAppsList: read registered agents directly from
  IdentityRegistry contract instead of requiring GraphQL indexer

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Read agents() mapping for tier, stakedToken, stakedAmount, registeredAt
- Resolve JEJU token address to "JEJU" name in all displays
- Read tokenURI for agent name/description in detail modal
- Show "JEJU" instead of "ETH" in browse cards and detail modal
- Fix deposit date (was always 1/1/1970, now reads registeredAt)
- Show "Faucet service not running" message when backend unavailable

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace KMS-based signing with direct viem wallet client using
DEPLOYER_PRIVATE_KEY for testnet. Add USE_MEMORY_STATE support for
in-memory faucet cooldown tracking. Create minimal faucet-server.ts
entry point that can run independently on port 4014.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Deploy NodeStakingManager contract at 0x5FeaeBfB4439F3516c74939A9D04e95AFE82C4ae
on testnet. Fix gateway build script to use /gateway/ base path for
asset URLs so they resolve correctly behind nginx.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…uencer info

Add NodeStakingManager contract address, Faucet API documentation,
Gateway portal features, and sequencer architecture notes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Simplified node staking without TokenRegistry/PaymasterFactory/PriceOracle
dependencies. Same ABI as NodeStakingManager for UI compatibility.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tracts

- ITokenRegistry: isRegistered() -> isSupported() (matches TokenRegistry)
- IPaymasterFactory: hasPaymaster() -> isDeployed() (matches PaymasterFactory)
- ISimplePriceOracle -> IPriceOracle: getPrice returns (uint256, uint256)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New address: 0x32EEce76C2C2e8758584A83Ee2F522D4788feA0f
Also set JEJU price ($1) on PriceOracle and deployed JEJU paymaster.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ProphetX10 and others added 28 commits March 5, 2026 00:32
@prophet10x prophet10x closed this Mar 11, 2026
@prophet10x prophet10x deleted the fresh-deploy branch March 11, 2026 22:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant