Follow-up to the previous stale-blacklist fix: with that fix live,
Android's balances_test.yml CI job progressed much further but still
hung for the full 25-minute job timeout. Live logcat + a full-log
retry analysis (grouping by host, comparing first/last timestamp
against the ~23 minute test window) showed 27 more chains whose nodes
were retried continuously for the ENTIRE run duration with zero
successful connections - as opposed to the ~90 other chains, which
connect once (or retry once or twice in the first ~2 minutes) and
then go quiet, i.e. genuinely healthy.
Every one of these 27 is a real, currently-dead third-party RPC
(Kusama Asset Hub, KILT, Crust Shadow, Phala, Mangata X, Joystream,
Mythos, Base, and 19 others) - not anything related to Tron or this
session's other changes. Each was matched to its current chain_id by
node URL against live chains.json, not guessed.
sync_from_nova.py's new stale-blacklist warning confirms all 33
entries (6 previous + 27 new) now match something in Nova's current
chain data - zero silently-ineffective entries this time.
This is inherently a moving target (third-party community RPC uptime
changes over time) - the warning added in the previous commit is what
makes that maintainable going forward instead of silently rotting for
another five months.
Root cause of the balances-test hang in pezkuwi-wallet-android (silent
for over an hour, cancelled multiple times before finding this):
every single chain_id in blocked-chains.json was stale - none matched
anything in Nova's current chains.json (last_updated 2026-02-11, ~5
months of upstream chain-id drift since). The blacklist mechanism
silently no-opped for all 6 entries, so none of the chains it was
meant to exclude were actually excluded.
With the blacklist ineffective, several chains with genuinely dead RPC
endpoints (confirmed live 2026-07-08: 3DPass, Curio, Quartz, Subsocial
- 502s, timeouts, SSL failures) stayed in the merged output. The
Android app's ChainConnection/NodeAutobalancer has no backoff/circuit
breaker for dead endpoints, so it retried them in an extremely tight
loop (~1 attempt/second, 1500-1800+ attempts observed in a 25 minute
window per chain) - burning resources indefinitely and starving the
app's actual chain-sync/test work, which is what made the Android CI
job hang for over an hour with zero progress.
Fix: re-verified and corrected all chain_ids (matching by current
name against live chains.json), added 3DPass/Curio/Subsocial which
weren't blacklisted before, dropped entries for chains no longer
present upstream at all (Passet Hub Testnet, Darwinia Crab, DeepBrain,
Exosama - nothing to block, kept them as historical noise otherwise).
Also added a stale-blacklist warning to sync_from_nova.py: it now
tracks which blocked chain_ids actually matched something in Nova's
current chains across all versions, and prints a warning listing any
that didn't - so this exact silent drift is caught at sync time going
forward instead of rotting unnoticed for another five months.
- pezkuwi-overlay/chains/pezkuwi-chains.json: add Tron mainnet
(native TRX + USDT-TRC20) chain entry, plus new TRX/Tron icons
under pezkuwi-overlay/icons/ (the correct source location - synced
into the top-level icons/ output by sync_from_nova.py).
- Regenerate all chains/*, xcm/*, staking/* merged output via
sync_from_nova.py against the current nova-base submodule state.
- Also picks up previously-uncommitted local fixes: canonical
Telegram/Twitter links (t.me/kurdishmedya, x.com/bizinikiwi) in
README/docs/banners, and Pezkuwi mainnet + People chain SubQuery
staking overrides.
Staking pallet lives on Asset Hub, not Relay Chain.
- RC HEZ staking set to null
- AH HEZ staking enabled with relaychain and nomination-pools
- AH externalApi staking subquery URL added
- Removed RC staking override from global configs
- Add staking, staking-rewards, history externalApi endpoints (subquery.pezkuwichain.io)
for both Pezkuwi Relay and Asset Hub
- Add identityChain reference to People chain on Relay and Asset Hub
- Add stakingWiki link to wiki.pezkuwichain.io/staking
- Add pushSupport option to Asset Hub
- Add defaultBlockTime to Asset Hub additional config
- Regenerate all merged chain versions via sync script
- Add blocked-chains.json with DNS-failing endpoints (AlephZero, InvArch, Quartz, Passet Hub Testnet)
- Update merge-chains.py to filter PAUSED chains, testnets (except Pezkuwi), and broken RPCs
- Reduce chain count from 102 to 86 (4 Pezkuwi + 82 working Nova chains)
- This fixes staking page not loading due to DNS resolution failures
Source changes (pezkuwi-overlay/chains/pezkuwi-chains.json):
- Pezkuwi Relay Chain: Add stakingMaxElectingVoters: 22500
- Pezkuwi Asset Hub HEZ: Change staking from ["nomination-pools"] to ["relaychain"]
- Pezkuwi Asset Hub: Add stakingMaxElectingVoters: 22500
This fixes the "Loading staking info" issue where findStakingTypeBackingNominationPools()
was failing because nomination-pools had no backing staking type.
Regenerated all chain versions via sync_from_nova.py
- Pezkuwi Relay Chain: Add stakingMaxElectingVoters: 22500
- Pezkuwi Asset Hub HEZ: Change staking from ["nomination-pools"] to ["relaychain"]
- Pezkuwi Asset Hub: Add stakingMaxElectingVoters: 22500
This fixes the "Loading staking info" issue where findStakingTypeBackingNominationPools()
was failing because nomination-pools had no backing staking type.
Asset Hub uses parent relay chain for era calculations since
it doesn't have Babe consensus module (uses Aura instead).
This fixes the crash when accessing nomination pools staking.
- Asset Hub HEZ staking set to null (was nomination-pools)
- Relay chain HEZ keeps relaychain staking only
- Wallet code prepared for Polkadot 2.0 but config disabled for now
- Add sync_from_nova.py script to merge Nova chains with Pezkuwi overlay
- Add GitHub Action for daily auto-sync
- Sync all chains from nova-base (includes Polkadot Coretime and other missing chains)
- Pezkuwi chains appear first and take priority
This fixes DOT swap crash caused by missing Polkadot Coretime chain.
- Changed RPC URL from testnet-rpc.pezkuwichain.io to zagros-rpc.pezkuwichain.io
- Removed fullSyncByDefault option to prevent auto-connection on app startup