Conversation
|
@piotr-iohk one test in the e2e suite is failing, but looking at the video it actually seems correct. The amount left is indeed not dust, so it seems like current behaviour is ok, maybe something in the test should bbe updated like setting the fee rate to ensure amount left will necessarily be dust? |
b88692e to
8738aeb
Compare
|
Review in progress ... |
…-change Replace node restart with dynamic address type APIs
|
Seeing this randomly. The scenario is as follows:
Screen.Recording.2026-02-26.at.12.05.49.mov |
|
Small issue, "Settings updated" toast on android differs from the iOS one which has bit more details. Perhaps should be unified. (iOS left / Android right) Screen.Recording.2026-02-26.at.12.30.24.mov |
app/src/main/java/to/bitkit/ui/settings/advanced/AddressTypePreferenceScreen.kt
Show resolved
Hide resolved
app/src/main/java/to/bitkit/ui/settings/advanced/AddressTypePreferenceViewModel.kt
Show resolved
Hide resolved
I wasn't able to reproduce. There is a stacked PR running all e2e tests: #820. For now change address check disabled in the tests. Waiting for synonymdev/ldk-node#72. |
This comment was marked as resolved.
This comment was marked as resolved.
jvsena42
left a comment
There was a problem hiding this comment.
1. Address Type Selection & Settings
Initial Setup
- Fresh wallet creation - verify default address type is Native SegWit
- Navigate to Settings → Advanced → Address Type Preference
- Verify all 4 address types are displayed with correct labels:
- Legacy (1x...)
- Nested SegWit (3x...)
- Native SegWit (bc1q...)
- Taproot (bc1p...)
Switching Address Types
- Switch from Native SegWit to Legacy - verify success toast
- Verify receive address changes to Legacy format (starts with "m" for regtest)
- Switch to Nested SegWit - verify address starts with "2" for regtest
- Switch to Taproot - verify address starts with "bcrt1p" for regtest
- Switch back to Native SegWit - verify address starts with "bcrt1q" for regtest
Monitored Address Types (Dev Settings)
- Enable dev settings and verify "Monitored Address Types" section appears
- Enable monitoring for Legacy while Native SegWit is selected
- Enable monitoring for Taproot while Native SegWit is selected
- Verify cannot disable currently selected address type
- Verify cannot disable last native witness type (Native SegWit or Taproot)
- Add funds to a monitored type, then try to disable it - should fail
2. Receive Functionality
Address QR Codes
- Generate QR code for each address type
- Verify QR code contains correct address format
- Test scanning generated QR codes
Multiple Address Types (Mixed Wallet)
- Set address type to Native SegWit, receive funds
- Switch to Legacy, receive funds to new Legacy address
- Switch to Taproot, receive funds to new Taproot address
- Verify all balances are correctly aggregated in wallet total
- Verify activity list shows all transactions
3. Send Functionality
Single Address Type Sends
- Enable manual coin selection
- Add tags to identify the address type
- Legacy only: Send from wallet selecting only Legacy UTXOs
- Verify fee estimation
- Complete send and verify transaction
- Nested SegWit only: Send from wallet selecting only Nested SegWit UTXOs
- Native SegWit only: Send from wallet selecting only Native SegWit UTXOs
- Taproot only: Send from wallet selecting only Taproot UTXOs
4. Lightning Channel Operations
Channel Opening
- Legacy: Set address type to Legacy, open channel
- Verify funding transaction uses Legacy inputs if available
- Nested SegWit: Set to Nested SegWit, open channel
- Verify funding transaction format
- Native SegWit: Set to Native SegWit, open channel
- Taproot: Set to Taproot, open channel
- Mixed UTXOs: Open channel with inputs from multiple address types
5. Fee Bumping (RBF - Replace-By-Fee)
RBF Single Address Type
- Send replaceable transaction from Legacy wallet, bump fee
- Send replaceable transaction from Nested SegWit wallet, bump fee
- Send replaceable transaction from Native SegWit wallet, bump fee
- Send replaceable transaction from Taproot wallet, bump fee
RBF Mixed Address Types
- Send transaction with all 4 address types, bump fee
6. CPFP (Child-Pays-For-Parent)
CPFP Single Address Type
- Receive unconfirmed transaction to Legacy address, boost with CPFP
- Receive unconfirmed transaction to Nested SegWit, boost with CPFP
- Receive unconfirmed transaction to Native SegWit, boost with CPFP
- Receive unconfirmed transaction to Taproot, boost with CPFP
7. Wallet Restore & Migration
Fresh Restore
- Restore wallet with funds across all 4 address types
- Verify all funds are discovered and aggregated correctly
Migration from React Native App
- ❌ Verify address type migration handles properly (RN only allowed select taproot and native segwit) - #788 (comment)
- Check monitored types are correctly configured after migration
8. Balance & Display
Balance Calculation
- Verify total balance correctly sums all address types
- Verify spendable balance is accurate with mixed UTXOs
- Check balance per address type (dev settings)
Activity List
- Verify transactions from all address types appear in activity list
- Verify correct icons/labels for each address type transaction
- Test filtering/sorting with mixed address type transactions
9. Edge Cases & Error Handling
Settings Validations
- Try to disable all monitored types - should fail
- Try to disable currently selected type - should fail
- Try to disable last native witness type - should fail
10. Backup & Security
Backup Flows
- Create backup after switching address types
- Restore from backup - verify address type preferences are preserved
- Verify seed phrase backup includes all address types
Also monitor address types are disabled for the addresses that RN app had funds on.
Expected after migration:
Actual:
|
|
@piotr-iohk does it happen with latest commit still? |
Looking good now. iOS looking good also, btw. |
| - { name: migration_1-restore, grep: "@migration_1" } | ||
| - { name: migration_2-migration, grep: "@migration_2" } | ||
| - { name: migration_3-with-passphrase, grep: "@migration_3" } | ||
| - { name: migration_4-with-sweep, grep: "@migration_4" } |
There was a problem hiding this comment.
Not needed, migration tests updated in related e2e branch.
test: split android e2e local and regtest (e2e multiple address)
# Conflicts: # app/src/main/java/to/bitkit/services/MigrationService.kt
|
Had to fix merge manually after #813 got merged in the meantime and merged #820 after approval Need a re-approval from @jvsena42 and/or @piotr-iohk to be able to merge 🙏🏻
Had to bump version because |
This PR adds support for multiple Bitcoin address types in the iOS app, allowing users to select and monitor different address formats. Users can select their preferred address type from: Legacy (P2PKH), Nested SegWit (P2SH-P2WPKH), Native SegWit (P2WPKH), and Taproot (P2TR).
This requires extensive testing across all functionalities, send, receive, channel open, channel close (funds should always go to native segwit address except when selected address when channel opened was Taproot, in which case it should be a Taproot address), cpfp, rbf. All should be checked for each address type, and for multiple address types combined (ie. send with utxos of different address types, open channel with inputs of different address types, boost txs with inputs of different address types, etc.)