pezkuwichain 46f8abc04c fix: backfill Tron address for pre-existing wallets - TRX was invisible for every account created before Tron support shipped
Found via manual device testing against a real, pre-Tron production
wallet: TRX/USDT-TRC20 didn't appear anywhere in the Assets list, not
even as a zero balance - unlike every other configured chain (KSM, USDC,
ETH, BNB, AVAX, LINK all show up at 0). Root cause: MetaAccount.hasAccountIn()
gates Tron balance sync on tronAddress != null, but tronAddress is only
ever populated once, at fresh-mnemonic-creation time in
AccountSecretsFactory.metaAccountSecrets(). The migration that added the
tronPublicKey/tronAddress columns (73_74_AddTronSupport) is pure ALTER
TABLE like every other migration in this codebase - it never derived a
value for pre-existing rows. Net effect: BalancesUpdateSystem silently
skips Tron entirely for every wallet that existed before this feature
shipped, with zero error surfaced anywhere. No automated test catches
this because every automated test creates a fresh (post-Tron) account -
this is exactly the class of bug that only manual testing against a real,
aged wallet can find.

Adds TronAddressBackfillMigration: a one-time, flag-gated pass (mirroring
the existing AccountDataMigration idiom) over SECRETS-type accounts that
still hold their mnemonic entropy in SecretStoreV2 but have no TronKeypair
yet. Derives the Tron keypair via AccountSecretsFactory.chainAccountSecrets
(isEthereum=true, same BIP32/secp256k1 path Tron already uses everywhere
else) at TRON_DEFAULT_DERIVATION_PATH - the same call fresh-account
creation already makes - so a backfilled wallet ends up with byte-for-byte
the same Tron address it would have gotten had it been created today, not
a separately-reimplemented derivation. Watch-only/Ledger/Json/multisig/
proxied accounts (never had a Tron-capable mnemonic) and raw-seed imports
(no entropy) are correctly left untouched, same as they already are for
Ethereum.

Includes a dedicated unit test asserting the backfill derives the exact
same reference Tron address (TUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdH) that
TronDerivationTest already cross-validated against live TronGrid data for
the standard BIP39 test mnemonic - this touches real wallets' key
material, so it's pinned to a known-good vector rather than just asserting
against its own output.
2026-07-10 12:45:50 -07:00
2026-02-12 05:19:41 +03:00
2026-02-12 05:19:41 +03:00
2026-02-12 05:19:41 +03:00

Pezkuwi Wallet Android

Next generation mobile wallet for Pezkuwichain and the Polkadot ecosystem.

About

Pezkuwi Wallet is a next-generation mobile application for the Pezkuwichain and Polkadot ecosystem. It provides a transparent, community-oriented wallet experience with convenient UX/UI, fast performance, and strong security.

Key Features:

  • Full Pezkuwichain support (HEZ & PEZ tokens)
  • Full Polkadot ecosystem compatibility
  • Staking, Governance, DeFi
  • NFT support
  • Cross-chain transfers (XCM)
  • Hardware wallet support (Ledger, Polkadot Vault)
  • WalletConnect v2
  • Push notifications

Native Tokens

Token Network Description
HEZ Relay Chain Native token for fees and staking
PEZ Asset Hub Governance token

Build Instructions

Clone Repository

git clone git@github.com:pezkuwichain/pezkuwi-wallet-android.git

Install NDK

Install NDK version 26.1.10909125 from SDK Manager: Tools -> SDK Manager -> SDK Tools -> NDK (Side by Side)

Install Rust

Install Rust by following official instructions.

Add Android build targets:

rustup target add armv7-linux-androideabi
rustup target add i686-linux-android
rustup target add x86_64-linux-android
rustup target add aarch64-linux-android

Update local.properties

Add the following lines to your local.properties:

ACALA_PROD_AUTH_TOKEN=mock
ACALA_TEST_AUTH_TOKEN=mock
CI_KEYSTORE_KEY_ALIAS=mock
CI_KEYSTORE_KEY_PASS=mock
CI_KEYSTORE_PASS=mock
DEBUG_GOOGLE_OAUTH_ID=mock
RELEASE_GOOGLE_OAUTH_ID=mock
DWELLIR_API_KEY=mock
EHTERSCAN_API_KEY_ETHEREUM=mock
EHTERSCAN_API_KEY_MOONBEAM=mock
EHTERSCAN_API_KEY_MOONRIVER=mock
INFURA_API_KEY=mock
MERCURYO_PRODUCTION_SECRET=mock
MERCURYO_TEST_SECRET=mock
MOONBEAM_PROD_AUTH_TOKEN=mock
MOONBEAM_TEST_AUTH_TOKEN=mock
MOONPAY_PRODUCTION_SECRET=mock
MOONPAY_TEST_SECRET=mock
WALLET_CONNECT_PROJECT_ID=mock

Note: Firebase and Google-related features (Notifications, Cloud Backups) require proper configuration.

Build Types

  • debug: Uses fixed keystore for Google services
  • debugLocal: Uses your local debug keystore
  • release: Production build

Supported Languages

  • English
  • Turkish (Türkçe)
  • Kurdish Kurmanji (Kurmancî)
  • Spanish (Español)
  • French (Français)
  • German (Deutsch)
  • Russian (Русский)
  • Japanese (日本語)
  • Chinese (中文)
  • Korean (한국어)
  • Portuguese (Português)
  • Vietnamese (Tiếng Việt)
  • And more...

Resources

License

Pezkuwi Wallet Android is available under the Apache 2.0 license. See the LICENSE file for more info.

Based on Nova Wallet (https://novawallet.io) - © Novasama Technologies GmbH

© Dijital Kurdistan Tech Institute 2026

S
Description
No description provided
Readme 202 MiB
Languages
Kotlin 99.6%
Rust 0.2%
Java 0.1%