Skip to content

feat: claim xe flow with xe address generator - #293

Merged
adamkdean merged 12 commits into
developfrom
feature/claim-xe
Oct 6, 2026
Merged

adamkdean merged 12 commits into
developfrom
feature/claim-xe

Conversation

@adamkdean

Copy link
Copy Markdown
Member

Summary

Adds a Claim XE flow to the wallet. Holders send EDGE to the claims wallet and claim the same amount of XE on the new XE network, 1:1.

  • Claim XE button on the account panel. It shows only when VITE_CLAIMS_API_URL is set and the claims service /info says claims are open.
  • Claim modal: XE address, amount (MAX), a confirmation tick and the user's recent claims. A password step signs an EDGE transfer to the claims wallet with data: { memo: "Claim XE", ref }. The progress view follows the transfer: posted, in a block, 10+ confirmations, received by the claims service.
  • Lost transfers: the Edge chain can accept a transfer and then drop it. The modal follows the transfer by hash. When the transfer is gone and the wallet nonce is unused for three checks in a row, the EDGE did not move, so the claim shows as failed with Try again.
  • XE address generator ("Create one" under the XE address field): makes a new XE account in the browser, shows its address and 24-word recovery phrase, offers New address until the user likes the address, then asks for 3 random words back. "Use this address" fills the claim form. Nothing is stored.
  • Recovery phrase format: the 32-byte ed25519 seed written as 24 BIP39 English words (entropy-to-mnemonic on the seed itself, no PBKDF2, passphrase or derivation path). Address: SHA-256 of xe/account/v1 followed by the public key, as 64 lowercase hex. src/utils/xe-recovery-phrase-vectors.json holds the XE core test vectors.
  • Text wrapping: no single-word last lines in the claim and generator modals.

Configuration

  • VITE_CLAIMS_API_URL: the claims service URL. Unset hides the Claim XE button.

Dependencies

  • @scure/bip39, @noble/curves, @noble/hashes (2.4).

Testing

  • npm test: 117 tests pass, including the XE core recovery phrase vectors.
  • ESLint is clean for every changed file.
  • Browser tests against a local 3-node Edge devnet and the claims service:
    • claim to received, a dropped transfer shown as failed with Try again, the claims list;
    • generated address, New address and the 3-word check; XE core derives the same address from the shown words;
    • a layout audit for single-word last lines over 19 modal states, 8 widths (1920 to 360) and 3 fonts.

@adamkdean
adamkdean merged commit dcb82db into develop Oct 6, 2026
1 check passed
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