BTG Electrum Wallet Development - Fork Progress

Hello Community,

This running topic will track the accomplished and remaining tasks of the Electrum Wallet and Server fork for BTG.

Electrum Server

  • :ballot_box_with_check: Correct electrum header creation
  • :ballot_box_with_check: Change chunksize
  • :ballot_box_with_check: Make regtest compatible
  • :ballot_box_with_check: Fix unittests
  • Bonus
    • :ballot_box_with_check: Merge changes/fixes from upstream repository
    • :ballot_box_with_check: Commit changes to upstream repository

Electrum Client

  • :ballot_box_with_check: Block header sync with server
  • :ballot_box_with_check: Make regtest compatible
  • :ballot_box_with_check: Adopt equihash validation
  • :ballot_box_with_check: Validate header solution
  • :ballot_box_with_check: Adopt new difficulty algorithm by Zawy
    • :ballot_box_with_check: Regtest
    • :ballot_box_with_check: Testnet
    • :ballot_box_with_check: Mainnet (New algorithm not deployed yet)
  • :ballot_box_with_check: Fix transactions
    • :ballot_box_with_check: Regtest
    • :ballot_box_with_check: Testnet
    • :ballot_box_with_check: Mainnet
  • :hourglass_flowing_sand: Deal with parent->child chain hierarchy
  • :ballot_box_with_check: Release beta version
  • :o: Test and fix hardware wallet support
    • :ballot_box_with_check: Trezor
    • :hourglass_flowing_sand: Ledger
  • :hourglass_flowing_sand: UI updates and fixes
  • :o: Test all extra features
  • :o: Check and fix unit tests (ongoing)
  • :o: Release final version
  • Bonus
    • Implement scheduled automatic-update of blockchain_headers file
    • Merge changes/fixes from the upstream repository

Notes:

Adopting new header format required more work than initially anticipated; BTG version must handle different header sizes for pre-fork and post-fork, but much Electrum header-related info was hard-coded in many places; this required more rework in more code and therefore more debugging and testing.

The same applies to the code for chunked header requests. The code parts/constants were tied to the BTC-specific difficulty algorithm and are used in different places with different meanings. This slowed progress during the early stages, but that’s largely behind us, now.

8 Likes