Files
pezkuwi-wallet-utils/README.md
T
SatoshiQaziMuhammed 6864b8c0aa Root signing page and a root chain check for replacing the root keys (#81)
- signed_config.py root drafts a later root in docs/root-signing/proposals/,
  where wallets never look, and keeps the current targets key by default.
- docs/root-signing/: a page for the Pezkuwi Wallet DApp browser that shows
  the proposal and its fingerprint, has the holder's wallet sign
  <Bytes>payload</Bytes>, checks every signature as the wallet will, collects
  signature codes and offers root.N.json once two current and two new holders
  have signed. Crypto bundles are served beside it.
- scripts/root/verify_root.mjs checks every published signed/root.N.json the
  way installed wallets do; Code Quality runs it. Wallet 1.3.0 accepts sr25519
  only under the substrate signing context, and a root it cannot verify stops
  its config refresh, so such a root must never reach master.
- Draft root 2: three new holder accounts, threshold 2, five years.
2026-11-04 23:58:11 +04:00

4.7 KiB

Pezkuwi Wallet Utils

Configuration repository for Pezkuwi Wallet - next generation mobile wallet for Pezkuwichain and the Polkadot ecosystem.

Overview

This repository contains chain configurations, staking metadata, dApp listings, and other utility files used by Pezkuwi Wallet applications.

Structure

pezkuwi-wallet-utils/
├── chains/           # Chain configurations for all supported networks
│   ├── pezkuwichain/ # Pezkuwichain (Relay + Asset Hub + People Chain)
│   ├── polkadot/     # Polkadot ecosystem chains
│   ├── kusama/       # Kusama ecosystem chains
│   └── ...           # Other ecosystem chains
├── staking/          # Staking metadata (validators, pools, etc.)
├── dapps/            # DApp configurations and metadata
├── xcm/              # XCM (Cross-Chain Messaging) configurations
├── governance/       # Governance dApps and proposals
├── banners/          # Promotional banners and announcements
├── migrations/       # Chain migration configurations
├── assets/           # Asset metadata and icons
├── icons/            # Chain and network icons
└── global/           # Global configuration files

Native Tokens

Token Network Description
HEZ Pezkuwi Relay Chain Native token for fees and staking
PEZ Asset Hub Governance token
USDT Asset Hub Tether USD stablecoin

Supported Networks

Pezkuwichain Ecosystem

  • Pezkuwi Relay Chain - Main relay chain with HEZ token
  • Asset Hub - System teyrchain for assets (PEZ, USDT, wHEZ)
  • People Chain - Identity and people management

Polkadot Ecosystem

Full support for Polkadot and all major parachains.

Kusama Ecosystem

Full support for Kusama and all major parachains.

Usage

These configurations are fetched by Pezkuwi Wallet at runtime from GitHub raw URLs:

https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/master/chains/{network}/chains.json

Signed config

signed/targets.json gives the sha256 of every JSON file the wallet may fetch, signed with the targets key; signed/root.json names that key and the three root keys, two of which can replace it. The wallet carries the first root and refuses a file whose hash the signed list does not give, so a change to any served JSON file is re-signed in the same pull request:

python3 scripts/signed_config.py sign --key <targets seed>

The light client specifications in light-client/ carry a relay chain checkpoint. Wallets fetch them through the signed config and keep a later checkpoint than their APK's, so refresh them before signing:

python3 scripts/light_client_specs.py --relay-rpc <zagros rpc> --people-rpc <people rpc> --people-spec <full People spec>

Code Quality fails once the checkpoint is more than 60 days old.

Code Quality refuses a tree whose files do not match the signed list, and its weekly run fails a month before a signature expires.

Replacing the root keys

A new root is drafted where the wallet never looks, then signed by the holders in their wallets:

python3 scripts/signed_config.py root --version N --expires-days 1825 --root-threshold 2 --root ADDR ADDR ADDR

This writes docs/root-signing/proposals/root.N.json, keeping the current targets key. Each holder of the current root and of the new one opens the root signing page (docs/root-signing/, served by GitHub Pages) in the Pezkuwi Wallet DApp browser, compares the fingerprint with the others by phone, signs, and sends the signature code to whoever collects them. Once two current and two new holders have signed, the page offers root.N.json; it goes to signed/root.N.json in a pull request. Code Quality checks every published root as installed wallets do (wallet 1.3.0 accepts sr25519 only under the substrate signing context) and fails before a root they would refuse reaches master: such a root stops their config refresh.

Contributing

  1. Fork this repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

License

Apache 2.0

Resources


Based on Nova Utils - Extended with Pezkuwichain support

© Dijital Kurdistan Tech Institute 2026