2023-10-05 01:09:07 +00:00
|
|
|
part of 'nano.dart';
|
|
|
|
|
|
|
|
class CWNanoAccountList extends NanoAccountList {
|
|
|
|
CWNanoAccountList(this._wallet);
|
|
|
|
final Object _wallet;
|
|
|
|
|
|
|
|
@override
|
|
|
|
@computed
|
|
|
|
ObservableList<NanoAccount> get accounts {
|
|
|
|
final nanoWallet = _wallet as NanoWallet;
|
|
|
|
final accounts = nanoWallet.walletAddresses.accountList.accounts
|
|
|
|
.map((acc) => NanoAccount(id: acc.id, label: acc.label, balance: acc.balance))
|
|
|
|
.toList();
|
|
|
|
return ObservableList<NanoAccount>.of(accounts);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void update(Object wallet) {
|
|
|
|
final nanoWallet = wallet as NanoWallet;
|
|
|
|
nanoWallet.walletAddresses.accountList.update(null);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void refresh(Object wallet) {
|
|
|
|
final nanoWallet = wallet as NanoWallet;
|
|
|
|
nanoWallet.walletAddresses.accountList.refresh();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Future<List<NanoAccount>> getAll(Object wallet) async {
|
|
|
|
final nanoWallet = wallet as NanoWallet;
|
|
|
|
return (await nanoWallet.walletAddresses.accountList.getAll())
|
|
|
|
.map((acc) => NanoAccount(id: acc.id, label: acc.label, balance: acc.balance))
|
|
|
|
.toList();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Future<void> addAccount(Object wallet, {required String label}) async {
|
|
|
|
final nanoWallet = wallet as NanoWallet;
|
|
|
|
await nanoWallet.walletAddresses.accountList.addAccount(label: label);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Future<void> setLabelAccount(Object wallet,
|
|
|
|
{required int accountIndex, required String label}) async {
|
|
|
|
final nanoWallet = wallet as NanoWallet;
|
|
|
|
await nanoWallet.walletAddresses.accountList
|
|
|
|
.setLabelAccount(accountIndex: accountIndex, label: label);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class CWNano extends Nano {
|
|
|
|
@override
|
|
|
|
NanoAccountList getAccountList(Object wallet) {
|
|
|
|
return CWNanoAccountList(wallet);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Account getCurrentAccount(Object wallet) {
|
|
|
|
final nanoWallet = wallet as NanoWallet;
|
|
|
|
final acc = nanoWallet.walletAddresses.account;
|
|
|
|
return Account(id: acc!.id, label: acc.label, balance: acc.balance);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
void setCurrentAccount(Object wallet, int id, String label, String? balance) {
|
|
|
|
final nanoWallet = wallet as NanoWallet;
|
|
|
|
nanoWallet.walletAddresses.account = NanoAccount(id: id, label: label, balance: balance);
|
|
|
|
nanoWallet.regenerateAddress();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
List<String> getNanoWordList(String language) {
|
|
|
|
return NanoMnemomics.WORDLIST;
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
CW-676 Add Linux scripts to build monero_c for linux platform (#1527)
* Revert "Revert btc address types"
This reverts commit a49e57e3
* Re-add Bitcoin Address types
Fix conflicts with main
* fix: label issues, clear spent utxo
* chore: deps
* fix: build
* fix: missing types
* feat: new electrs API & changes, fixes for last block scanning
* Update Monero
* not sure why it's failing
* Enable Exolix
Improve service updates indicator
New versions
* Add exolix Api token to limits api
* Ignore reporting network issues
* Change default bitcoin node
* Merge main and update linux version
* Update app version [skip ci]
* New versions
* Fix conflicts and update linux version
* minor fix
* feat: Scan Silent Payments homepage toggle
* chore: build configure
* feat: generic fixes, testnet UI improvements, useSSL on bitcoin nodes
* fix: invalid Object in sendData
* feat: improve addresses page & address book displays
* feat: silent payments labeled addresses disclaimer
* fix: missing i18n
* chore: print
* feat: single block scan, rescan by date working for btc mainnet
* feat: new cake features page replace market page, move sp scan toggle, auto switch node pop up alert
* feat: delete silent addresses
* fix: red dot in non ssl nodes
* fix: inconsistent connection states, fix tx history
* fix: tx & balance displays, cpfp sending
* feat: new rust lib
* chore: node path
* fix: check node based on network
* fix: missing txcount from addresses
* style: padding in feature page cards
* fix: restore not getting all wallet addresses by type
* fix: auto switch node broken
* fix: silent payment txs not being restored
* update linux version
* feat: change scanning to subscription model, sync improvements
* fix: scan re-subscription
* fix: default nodes
* fix: improve scanning by date, fix single block scan
* refactor: common function for input tx selection
* various fixes for build issues
* initial monero.dart implementation
* ...
* multiple wallets
new lib
minor fixes
* other fixes from monero.dart and monero_c
* fix: nodes & build
* update build scripts
fix polyseed
* remove unnecessary code
* Add windows app, build scripts and build guide for it.
* Minor fix in generated monero configs
* Merge and fix main
* fix: send all with multiple outs
* add missing monero_c command
* add android build script
* update version
* Merge and fix main
* undo android ndk removal
* Fix modified exception_handler.dart
* Temporarily remove haven
* fix build issues
* fix pr script
* Fixes for build monero.dart (monero_c) for windows.
* monero build script
* wip: ios build script
* refactor: unchanged file
* Added build guides for iOS and macOS. Replaced nproc call on macOS. Added macOS configuration for configure_cake_wallet.sh script.
* Update monero.dart and monero_c versions.
* Add missed windows build scripts
* Update the application configuration for windows build script.
* Update cw_monero pubspec lock file for monero.dart
* Update pr_test_build.yml
* chore: upgrade
* chore: merge changes
* refactor: unchanged files [skip ci]
* Fix conflicts with main
* fix for multiple wallets
* update app version [skip ci]
* Add tron to windows application configuration.
* Add macOS option for description message in configure_cake_wallet.sh
* fix missing encryption utils in hardware wallet functions [skip ci]
* fix conflicts
* Include missed monero dll for windows.
* reformatting [skip ci]
* fix conflicts with main
* Disable haven configuration for iOS as default. Add ability to configure cakewallet for iOS with for configuration script. Remove cw_shared configuration for cw_monero.
* fix: scan fixes, add date, allow sending while scanning
* add missing nano secrets file [skip ci]
* ios library
* don't pull prebuilds android
* Add auto generation of manifest file for android project even for iOS, macOS, Windows.
* remove tron
* feat: sync fixes, sp settings
* feat: fix resyncing
* store crash fix
* make init async so it won't lag
disable print starts
* fix monero_c build issues
* libstdc++
* merge main and update version
* Fix MacOS saving wallet file issue
Fix Secure Storage issue (somehow)
* update pubspec.lock
* fix build script
* Use dylib as iOS framework. Use custom path for loading of iOS framework for monero.dart. Add script for generate iOS framework for monero wallet.
* fix: date from height logic, status disconnected & chain tip get
* fix: params
* feat: electrum migration if using cake electrum
* fix nodes
update versions
* re-enable tron
* update sp_scanner to work on iOS [skip ci]
* bump monero_c hash
* bump monero_c commit
* bump moneroc version
* bump monero_c commit
* Add ability to build monero wallet lib as universal lib. Update macOS build guide. Change default arch for macOS project to .
* fix: wrong socket for old electrum nodes
* update version
* Fix unchecked wallet type call
* get App Dir correctly in default_settings_migration.dart
* handle previous issue with fetching linux documents directory [skip ci]
* backup fix
* fix NTFS issues
* Add Tron
Update Linux version
* Close the wallet when the wallet gets changed
* fix: double balance
* feat: node domain
* fix: menu name
* bump monero_c commit
* fix: update tip on set scanning
* fix: connection switching back and forth
* feat: check if node is electrs, and supports sp
* chore: fix build
* minor enhancements
* fixes and enhancements
* solve conflicts with main
* Only stop wallet on rename and delete
* fix: status toggle
* minor enhancement
* Monero.com fixes
* bump monero_c commit
* update sp_scanner to include windows and linux
* merge main
* Update macOS build guide. Change brew dependencies for build unbound locally.
* fix: Tron file write, build scripts
* - merge linux with Monero Dart
- Temporarily disable Monero
* fix other issues with linux
* linux ci
fix build script
* Update pr_test_build_linux.yml
install required packages
* add linux desktop dependencies
* don't use apk in linux build releases
* don't copy the file to test-apk
* fix linux runtime issues
* remove libc++_shared.so
* fix issues with linux
* prepare both android and linux (because otherwise it will fail)
* ci script updates
* run apt update
* bump image to ubuntu 22.04
note: remember to put it down later
* bump python version
* remove some dependencies
* remove unused import
* add missing dependencies
* fix dependencies
* some fixes
* remove print [skip ci]
* Add back RunnerBase.entitlements
minor fixes [skip ci]
* fix memory leak / infinite recurrsion when opening xmr wallet
* url_launcher_linux: 3.1.1 # https://github.com/flutter/flutter/issues/153083
* fix conflicts with main
* handle walletKeysFile with encryptionUtils
* update app version [skip ci]
* add wownero [skip ci]
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Co-authored-by: Rafael Saes <git@rafael.saes.dev>
Co-authored-by: M <m@cakewallet.com>
Co-authored-by: Konstantin Ullrich <konstantinullrich12@gmail.com>
2024-08-12 22:18:14 +00:00
|
|
|
WalletService createNanoWalletService(Box<WalletInfo> walletInfoSource, bool isDirect) {
|
|
|
|
return NanoWalletService(walletInfoSource, isDirect);
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Map<String, String> getKeys(Object wallet) {
|
|
|
|
final nanoWallet = wallet as NanoWallet;
|
|
|
|
final keys = nanoWallet.keys;
|
|
|
|
return <String, String>{
|
|
|
|
"seedKey": keys.seedKey,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
WalletCredentials createNanoNewWalletCredentials({
|
|
|
|
required String name,
|
CW-580: BIP39 Wallets Shared Seed Implementation: "One Seed - Multiple Wallets" (#1307)
* feat: Implement creating new BIP39 wallet with same seed used for other owned BIP39 wallets
* feat: Use same seed for BIP39 Wallets
* Update pre_existing_seeds_page.dart
* Feat: BIP39 Same seed wallet creation using the Common Parent Wallet Strategy
* feat: Finalize implementing preexisting seeds
* feat: Implement shared bip39 wallet seed for Bitcoin wallet type
* feat: Implement shared bip39 wallet seed for Litecoin wallet type
* feat: Implement shared bip39 wallet seed for BitcoinCash wallet type
* feat: Implement shared bip39 wallet seed for Nano wallet type, although disabled entry for now
* fix: Remove non bip39 seed wallet type from listing
* feat: Implement grouped and single wallets lists in wallets listing page and implement editing and saving group names
* fix: Issue where the ontap always references the leadwallet, also make shared seed wallets section header only display when the multi wallet groups list is not empty
* fix: Add translation and adjust the way the groups display
* feat: Activate bip39 as an option for creating Nano wallet types
* fix: Handle edgecase with creating new wallet with group address, handle case where only bip39 derivation type is allowed with child wallets, activate nano wallet type for shared seed
* chore: Modify the UI to fit adjustment made on figma
* fix: Disposed box triggering error in hive and causing wallet list view to display error
* fix: Switch wallet groups title in wallets list page and also fix issue with renaming groups
* Update lib/reactions/bip39_wallet_utils.dart [skip ci]
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* Update lib/router.dart [skip ci]
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* fix: Review fixes: Combine New Wallet Page Type arguments into a single model
* fix: Review fixes: Add failure guard when fetching mnemonic for selected wallet in pre-existing wallets page
* fix: Review fixes - Add loading indicator when mnemonic is being selected for wallet
* fix: Review fixes - Modify variable name to avoid clashes
* fix: Review fixes - Access WalletManager through dependency injection instead of service location
* fix: Review fixes - Add testnet to convertWalletInfoToWalletlistItem function, and adjust according where used
* fix: Review fixes - Add walletPassword to nano, tron and wownero wallets and confirm it is properly handled as it should be
* fix: Remove leadWallet, modify filtering flow to reflect this and not depend on leadWallet, and adjust privacy settings
* fix: Review Fixes - Modify restore flow to reflect current nature of bip39 as default for majority of wallet types
* fix: QA Fixes - Modify preexisting page to display wallet group names if set, and display them in incremental order if not set
* fix: Add wallet group description page and rename pre-existingseeds page to wallet group display page
* fix: Product Fix - Rename pre-existing seeds file name to wallet group display filename
* fix: Product fix - Separate multiwallets groups from single wallets and display separately
* fix - Product Fix - Add empty state for wallet group listing when creating a new wallet, adjust CTAs across buttons relating to the flow also
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-09-20 18:25:08 +00:00
|
|
|
WalletInfo? walletInfo,
|
2023-10-05 01:09:07 +00:00
|
|
|
String? password,
|
CW-580: BIP39 Wallets Shared Seed Implementation: "One Seed - Multiple Wallets" (#1307)
* feat: Implement creating new BIP39 wallet with same seed used for other owned BIP39 wallets
* feat: Use same seed for BIP39 Wallets
* Update pre_existing_seeds_page.dart
* Feat: BIP39 Same seed wallet creation using the Common Parent Wallet Strategy
* feat: Finalize implementing preexisting seeds
* feat: Implement shared bip39 wallet seed for Bitcoin wallet type
* feat: Implement shared bip39 wallet seed for Litecoin wallet type
* feat: Implement shared bip39 wallet seed for BitcoinCash wallet type
* feat: Implement shared bip39 wallet seed for Nano wallet type, although disabled entry for now
* fix: Remove non bip39 seed wallet type from listing
* feat: Implement grouped and single wallets lists in wallets listing page and implement editing and saving group names
* fix: Issue where the ontap always references the leadwallet, also make shared seed wallets section header only display when the multi wallet groups list is not empty
* fix: Add translation and adjust the way the groups display
* feat: Activate bip39 as an option for creating Nano wallet types
* fix: Handle edgecase with creating new wallet with group address, handle case where only bip39 derivation type is allowed with child wallets, activate nano wallet type for shared seed
* chore: Modify the UI to fit adjustment made on figma
* fix: Disposed box triggering error in hive and causing wallet list view to display error
* fix: Switch wallet groups title in wallets list page and also fix issue with renaming groups
* Update lib/reactions/bip39_wallet_utils.dart [skip ci]
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* Update lib/router.dart [skip ci]
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* fix: Review fixes: Combine New Wallet Page Type arguments into a single model
* fix: Review fixes: Add failure guard when fetching mnemonic for selected wallet in pre-existing wallets page
* fix: Review fixes - Add loading indicator when mnemonic is being selected for wallet
* fix: Review fixes - Modify variable name to avoid clashes
* fix: Review fixes - Access WalletManager through dependency injection instead of service location
* fix: Review fixes - Add testnet to convertWalletInfoToWalletlistItem function, and adjust according where used
* fix: Review fixes - Add walletPassword to nano, tron and wownero wallets and confirm it is properly handled as it should be
* fix: Remove leadWallet, modify filtering flow to reflect this and not depend on leadWallet, and adjust privacy settings
* fix: Review Fixes - Modify restore flow to reflect current nature of bip39 as default for majority of wallet types
* fix: QA Fixes - Modify preexisting page to display wallet group names if set, and display them in incremental order if not set
* fix: Add wallet group description page and rename pre-existingseeds page to wallet group display page
* fix: Product Fix - Rename pre-existing seeds file name to wallet group display filename
* fix: Product fix - Separate multiwallets groups from single wallets and display separately
* fix - Product Fix - Add empty state for wallet group listing when creating a new wallet, adjust CTAs across buttons relating to the flow also
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-09-20 18:25:08 +00:00
|
|
|
String? mnemonic,
|
|
|
|
String? parentAddress,
|
2023-10-05 01:09:07 +00:00
|
|
|
}) =>
|
|
|
|
NanoNewWalletCredentials(
|
|
|
|
name: name,
|
|
|
|
password: password,
|
CW-580: BIP39 Wallets Shared Seed Implementation: "One Seed - Multiple Wallets" (#1307)
* feat: Implement creating new BIP39 wallet with same seed used for other owned BIP39 wallets
* feat: Use same seed for BIP39 Wallets
* Update pre_existing_seeds_page.dart
* Feat: BIP39 Same seed wallet creation using the Common Parent Wallet Strategy
* feat: Finalize implementing preexisting seeds
* feat: Implement shared bip39 wallet seed for Bitcoin wallet type
* feat: Implement shared bip39 wallet seed for Litecoin wallet type
* feat: Implement shared bip39 wallet seed for BitcoinCash wallet type
* feat: Implement shared bip39 wallet seed for Nano wallet type, although disabled entry for now
* fix: Remove non bip39 seed wallet type from listing
* feat: Implement grouped and single wallets lists in wallets listing page and implement editing and saving group names
* fix: Issue where the ontap always references the leadwallet, also make shared seed wallets section header only display when the multi wallet groups list is not empty
* fix: Add translation and adjust the way the groups display
* feat: Activate bip39 as an option for creating Nano wallet types
* fix: Handle edgecase with creating new wallet with group address, handle case where only bip39 derivation type is allowed with child wallets, activate nano wallet type for shared seed
* chore: Modify the UI to fit adjustment made on figma
* fix: Disposed box triggering error in hive and causing wallet list view to display error
* fix: Switch wallet groups title in wallets list page and also fix issue with renaming groups
* Update lib/reactions/bip39_wallet_utils.dart [skip ci]
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* Update lib/router.dart [skip ci]
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
* fix: Review fixes: Combine New Wallet Page Type arguments into a single model
* fix: Review fixes: Add failure guard when fetching mnemonic for selected wallet in pre-existing wallets page
* fix: Review fixes - Add loading indicator when mnemonic is being selected for wallet
* fix: Review fixes - Modify variable name to avoid clashes
* fix: Review fixes - Access WalletManager through dependency injection instead of service location
* fix: Review fixes - Add testnet to convertWalletInfoToWalletlistItem function, and adjust according where used
* fix: Review fixes - Add walletPassword to nano, tron and wownero wallets and confirm it is properly handled as it should be
* fix: Remove leadWallet, modify filtering flow to reflect this and not depend on leadWallet, and adjust privacy settings
* fix: Review Fixes - Modify restore flow to reflect current nature of bip39 as default for majority of wallet types
* fix: QA Fixes - Modify preexisting page to display wallet group names if set, and display them in incremental order if not set
* fix: Add wallet group description page and rename pre-existingseeds page to wallet group display page
* fix: Product Fix - Rename pre-existing seeds file name to wallet group display filename
* fix: Product fix - Separate multiwallets groups from single wallets and display separately
* fix - Product Fix - Add empty state for wallet group listing when creating a new wallet, adjust CTAs across buttons relating to the flow also
---------
Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
2024-09-20 18:25:08 +00:00
|
|
|
mnemonic: mnemonic,
|
|
|
|
parentAddress: parentAddress,
|
|
|
|
walletInfo: walletInfo,
|
2023-10-05 01:09:07 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
@override
|
|
|
|
WalletCredentials createNanoRestoreWalletFromSeedCredentials({
|
|
|
|
required String name,
|
|
|
|
required String password,
|
|
|
|
required String mnemonic,
|
Bitcoin derivations (#1089)
* - Update and Fix Conflicts with main
* Add Balances for ERC20 tokens
* Fix conflicts with main
* Add erc20 abi json
* Add send erc20 tokens initial function
* add missing getHeightByDate in Haven [skip ci]
* Allow contacts and wallets from the same tag
* Add Shiba Inu icon
* Add send ERC-20 tokens initial flow
* Add missing import in generated file
* Add initial approach for transaction sending for ERC-20 tokens
* Refactor signing/sending transactions
* Add initial flow for transactions subscription
* Refactor signing/sending transactions
* Add home settings icon
* Fix conflicts with main
* Initial flow for home settings
* Add logic flow for adding erc20 tokens
* Fix initial UI
* Finalize UI for Tokens
* Integrate UI with Ethereum flow
* Add "Enable/Disable" feature for ERC20 tokens
* Add initial Erc20 tokens
* Add Sorting and Pin Native Token features
* Fix price sorting
* Sort tokens list as well when Sort criteria changes
* - Improve sorting balances flow
- Add initial add token from search bar flow
* Fix Accounts Popup UI
* Fix Pin native token
* Fix Enabling/Disabling tokens
Fix sorting by fiat once app is opened
Improve token availability mechanism
* Fix deleting token
Fix renaming tokens
* Fix issue with search
* Add more tokens
* - Fix scroll issue
- Add ERC20 tokens placeholder image in picker
* - Separate and organize default erc20 tokens
- Fix scrolling
- Add token placeholder images in picker
- Sort disabled tokens alphabetically
* Change BNB token initial availability [skip ci]
* Fix Conflicts with main
* Fix Conflicts with main
* Add Verse ERC20 token to the initial tokens list
* Add rename wallet to Ethereum
* Integrate EtherScan API for fetching address transactions
Generate Ethereum specific secrets in Ethereum package
* Adjust transactions fiat price for ERC20 tokens
* Free Up GitHub Actions Ubuntu Runner Disk Space
* Free Up GitHub Actions Ubuntu Runner Disk space (trial 2)
* Fix Transaction Fee display
* Save transaction history
* Enhance loading time for erc20 tokens transactions
* Minor Fixes and Enhancements
* Fix sending erc20
fix block explorer issue
* Fix int overflow
* Fix transaction amount conversions
* Minor: `slow` -> `Slow` [skip-ci]
* initial changes
* more base config stuff
* config changes
* successfully builds!
* save
* successfully add nano wallet
* save
* seed generation
* receive screen + node screen working
* tx history working and fiat fixes
* balance working
* derivation updates
* nano-unfinished
* sends working
* remove fees from send screen, send and receive transactions working
* fixes + auto receive incoming txs
* fix for scanning QR codes
* save
* update translations
* fixes
* more fixes
* more strings
* small fix
* fix github actions workflow
* potential fix
* potential fix
* ci/cd fix
* change rep working
* seed generation fixes
* fixes
* save
* change rep screen functional
* save
* banano changes
* fixes, start adding ui for PoW
* pow node changes
* update translations
* fix
* account changing barely working
* save
* disable account generation
* small fix
* save
* UI work
* save
* fixes after merge main
* fixes
* remove monero stuff, work on derivation ui
* lots of fixes + finish up seed derivation
* last minute fixes
* node related fixes
* more fixes
* small fix
* more fixes
* fixes
* pretty big refactor for pow, still some bugs
* finally works!
* get transactions after send
* fix
* merge conflict fixes
* save
* fix pow node showing up twice
* done
* initial changes
* small fix
* more merge fixes
* fixes
* more fixes
* fix
* save
* fix manage pow nodes setting appearing on other wallets
* fix contact bug
* fixes
* fiat fixes
* save
* save
* save
* save
* updates
* cleanup
* restore fix
* fixes
* remove deprecated alert
* fix
* small fix
* remove outdated warning
* electrum restore fixes
* fixes
* fixes
* fix
* derivation fixes
* nano fixes pt.1
* nano fixes pt.2
* bip39 fixes
* pownode refactor
* nodes pages fixes
* observer fix
* ssl fix
* remove old references
* remove unused imports
* code cleanup
* small fix
* small potential fix
* save
* derivation fixes
* deterministic fix
* fix pt.2
* derivation class fixes
* review fixes from nano that also apply here
* formatting
* stuff that should've stayed deleted
* post merge fixes
* remove problematic imports and duplicate changes
* Delete lib/nano/nano.dart
* move wallet restore page proxy code to the view model
* fix dashboard page indicators being the same color
* debatably better refactoring of derivationInfo, migration needed
* additional refactor improvements
* blanket comment some stuff out to narrow down this issue
* refactor fixes
* fix nano exchange
* fix , bug, i.e. replace , with . when making a nano transaction
* fix nano sending, update restore page wording, and other minor fixes
* write migration for existing bitcoin and nano wallets
* merge fixes
* minor fixes
* use default derivation type when restoring from qr code
* fixes for restoring
* fixes
* fixes
* merge fix
* Fix issues with Creating Electrum and Restoring Bip39
* updates & fixes
* Add missing case for no transactions BIP39 wallet restore
* Make the default BIP39 the 84 derivation path
* Add Samourai Deposit
* litecoin mnemonic error fix
* Bip39 passphrase support (#1412)
* save
* passphrase working
* fix for when loading wallets + translation update
* minor fix
* Fix Nano
* minor fix [skip ci]
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
* change error state seed conditions into throwables [skip ci]
* litecoin fixes
* Bip39 minor enhancements (#1416)
* minor enhancements
* rename bitcoin_derivations -> electrum_derivations
* Remove duplicate derivations
handle default case
* minor fix
* Enable passphrase for Litecoin
* obscure text of passphrase
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Co-authored-by: Justin Ehrenhofer <justin.ehrenhofer@gmail.com>
Co-authored-by: fossephate <fosse@book.local>
2024-04-30 00:49:56 +00:00
|
|
|
required DerivationType derivationType,
|
2023-10-05 01:09:07 +00:00
|
|
|
}) {
|
Bitcoin derivations (#1089)
* - Update and Fix Conflicts with main
* Add Balances for ERC20 tokens
* Fix conflicts with main
* Add erc20 abi json
* Add send erc20 tokens initial function
* add missing getHeightByDate in Haven [skip ci]
* Allow contacts and wallets from the same tag
* Add Shiba Inu icon
* Add send ERC-20 tokens initial flow
* Add missing import in generated file
* Add initial approach for transaction sending for ERC-20 tokens
* Refactor signing/sending transactions
* Add initial flow for transactions subscription
* Refactor signing/sending transactions
* Add home settings icon
* Fix conflicts with main
* Initial flow for home settings
* Add logic flow for adding erc20 tokens
* Fix initial UI
* Finalize UI for Tokens
* Integrate UI with Ethereum flow
* Add "Enable/Disable" feature for ERC20 tokens
* Add initial Erc20 tokens
* Add Sorting and Pin Native Token features
* Fix price sorting
* Sort tokens list as well when Sort criteria changes
* - Improve sorting balances flow
- Add initial add token from search bar flow
* Fix Accounts Popup UI
* Fix Pin native token
* Fix Enabling/Disabling tokens
Fix sorting by fiat once app is opened
Improve token availability mechanism
* Fix deleting token
Fix renaming tokens
* Fix issue with search
* Add more tokens
* - Fix scroll issue
- Add ERC20 tokens placeholder image in picker
* - Separate and organize default erc20 tokens
- Fix scrolling
- Add token placeholder images in picker
- Sort disabled tokens alphabetically
* Change BNB token initial availability [skip ci]
* Fix Conflicts with main
* Fix Conflicts with main
* Add Verse ERC20 token to the initial tokens list
* Add rename wallet to Ethereum
* Integrate EtherScan API for fetching address transactions
Generate Ethereum specific secrets in Ethereum package
* Adjust transactions fiat price for ERC20 tokens
* Free Up GitHub Actions Ubuntu Runner Disk Space
* Free Up GitHub Actions Ubuntu Runner Disk space (trial 2)
* Fix Transaction Fee display
* Save transaction history
* Enhance loading time for erc20 tokens transactions
* Minor Fixes and Enhancements
* Fix sending erc20
fix block explorer issue
* Fix int overflow
* Fix transaction amount conversions
* Minor: `slow` -> `Slow` [skip-ci]
* initial changes
* more base config stuff
* config changes
* successfully builds!
* save
* successfully add nano wallet
* save
* seed generation
* receive screen + node screen working
* tx history working and fiat fixes
* balance working
* derivation updates
* nano-unfinished
* sends working
* remove fees from send screen, send and receive transactions working
* fixes + auto receive incoming txs
* fix for scanning QR codes
* save
* update translations
* fixes
* more fixes
* more strings
* small fix
* fix github actions workflow
* potential fix
* potential fix
* ci/cd fix
* change rep working
* seed generation fixes
* fixes
* save
* change rep screen functional
* save
* banano changes
* fixes, start adding ui for PoW
* pow node changes
* update translations
* fix
* account changing barely working
* save
* disable account generation
* small fix
* save
* UI work
* save
* fixes after merge main
* fixes
* remove monero stuff, work on derivation ui
* lots of fixes + finish up seed derivation
* last minute fixes
* node related fixes
* more fixes
* small fix
* more fixes
* fixes
* pretty big refactor for pow, still some bugs
* finally works!
* get transactions after send
* fix
* merge conflict fixes
* save
* fix pow node showing up twice
* done
* initial changes
* small fix
* more merge fixes
* fixes
* more fixes
* fix
* save
* fix manage pow nodes setting appearing on other wallets
* fix contact bug
* fixes
* fiat fixes
* save
* save
* save
* save
* updates
* cleanup
* restore fix
* fixes
* remove deprecated alert
* fix
* small fix
* remove outdated warning
* electrum restore fixes
* fixes
* fixes
* fix
* derivation fixes
* nano fixes pt.1
* nano fixes pt.2
* bip39 fixes
* pownode refactor
* nodes pages fixes
* observer fix
* ssl fix
* remove old references
* remove unused imports
* code cleanup
* small fix
* small potential fix
* save
* derivation fixes
* deterministic fix
* fix pt.2
* derivation class fixes
* review fixes from nano that also apply here
* formatting
* stuff that should've stayed deleted
* post merge fixes
* remove problematic imports and duplicate changes
* Delete lib/nano/nano.dart
* move wallet restore page proxy code to the view model
* fix dashboard page indicators being the same color
* debatably better refactoring of derivationInfo, migration needed
* additional refactor improvements
* blanket comment some stuff out to narrow down this issue
* refactor fixes
* fix nano exchange
* fix , bug, i.e. replace , with . when making a nano transaction
* fix nano sending, update restore page wording, and other minor fixes
* write migration for existing bitcoin and nano wallets
* merge fixes
* minor fixes
* use default derivation type when restoring from qr code
* fixes for restoring
* fixes
* fixes
* merge fix
* Fix issues with Creating Electrum and Restoring Bip39
* updates & fixes
* Add missing case for no transactions BIP39 wallet restore
* Make the default BIP39 the 84 derivation path
* Add Samourai Deposit
* litecoin mnemonic error fix
* Bip39 passphrase support (#1412)
* save
* passphrase working
* fix for when loading wallets + translation update
* minor fix
* Fix Nano
* minor fix [skip ci]
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
* change error state seed conditions into throwables [skip ci]
* litecoin fixes
* Bip39 minor enhancements (#1416)
* minor enhancements
* rename bitcoin_derivations -> electrum_derivations
* Remove duplicate derivations
handle default case
* minor fix
* Enable passphrase for Litecoin
* obscure text of passphrase
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Co-authored-by: Justin Ehrenhofer <justin.ehrenhofer@gmail.com>
Co-authored-by: fossephate <fosse@book.local>
2024-04-30 00:49:56 +00:00
|
|
|
if (mnemonic.split(" ").length == 12 && derivationType != DerivationType.bip39) {
|
|
|
|
throw Exception("Invalid mnemonic for derivation type!");
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return NanoRestoreWalletFromSeedCredentials(
|
|
|
|
name: name,
|
|
|
|
password: password,
|
|
|
|
mnemonic: mnemonic,
|
|
|
|
derivationType: derivationType,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
WalletCredentials createNanoRestoreWalletFromKeysCredentials({
|
|
|
|
required String name,
|
|
|
|
required String password,
|
|
|
|
required String seedKey,
|
Bitcoin derivations (#1089)
* - Update and Fix Conflicts with main
* Add Balances for ERC20 tokens
* Fix conflicts with main
* Add erc20 abi json
* Add send erc20 tokens initial function
* add missing getHeightByDate in Haven [skip ci]
* Allow contacts and wallets from the same tag
* Add Shiba Inu icon
* Add send ERC-20 tokens initial flow
* Add missing import in generated file
* Add initial approach for transaction sending for ERC-20 tokens
* Refactor signing/sending transactions
* Add initial flow for transactions subscription
* Refactor signing/sending transactions
* Add home settings icon
* Fix conflicts with main
* Initial flow for home settings
* Add logic flow for adding erc20 tokens
* Fix initial UI
* Finalize UI for Tokens
* Integrate UI with Ethereum flow
* Add "Enable/Disable" feature for ERC20 tokens
* Add initial Erc20 tokens
* Add Sorting and Pin Native Token features
* Fix price sorting
* Sort tokens list as well when Sort criteria changes
* - Improve sorting balances flow
- Add initial add token from search bar flow
* Fix Accounts Popup UI
* Fix Pin native token
* Fix Enabling/Disabling tokens
Fix sorting by fiat once app is opened
Improve token availability mechanism
* Fix deleting token
Fix renaming tokens
* Fix issue with search
* Add more tokens
* - Fix scroll issue
- Add ERC20 tokens placeholder image in picker
* - Separate and organize default erc20 tokens
- Fix scrolling
- Add token placeholder images in picker
- Sort disabled tokens alphabetically
* Change BNB token initial availability [skip ci]
* Fix Conflicts with main
* Fix Conflicts with main
* Add Verse ERC20 token to the initial tokens list
* Add rename wallet to Ethereum
* Integrate EtherScan API for fetching address transactions
Generate Ethereum specific secrets in Ethereum package
* Adjust transactions fiat price for ERC20 tokens
* Free Up GitHub Actions Ubuntu Runner Disk Space
* Free Up GitHub Actions Ubuntu Runner Disk space (trial 2)
* Fix Transaction Fee display
* Save transaction history
* Enhance loading time for erc20 tokens transactions
* Minor Fixes and Enhancements
* Fix sending erc20
fix block explorer issue
* Fix int overflow
* Fix transaction amount conversions
* Minor: `slow` -> `Slow` [skip-ci]
* initial changes
* more base config stuff
* config changes
* successfully builds!
* save
* successfully add nano wallet
* save
* seed generation
* receive screen + node screen working
* tx history working and fiat fixes
* balance working
* derivation updates
* nano-unfinished
* sends working
* remove fees from send screen, send and receive transactions working
* fixes + auto receive incoming txs
* fix for scanning QR codes
* save
* update translations
* fixes
* more fixes
* more strings
* small fix
* fix github actions workflow
* potential fix
* potential fix
* ci/cd fix
* change rep working
* seed generation fixes
* fixes
* save
* change rep screen functional
* save
* banano changes
* fixes, start adding ui for PoW
* pow node changes
* update translations
* fix
* account changing barely working
* save
* disable account generation
* small fix
* save
* UI work
* save
* fixes after merge main
* fixes
* remove monero stuff, work on derivation ui
* lots of fixes + finish up seed derivation
* last minute fixes
* node related fixes
* more fixes
* small fix
* more fixes
* fixes
* pretty big refactor for pow, still some bugs
* finally works!
* get transactions after send
* fix
* merge conflict fixes
* save
* fix pow node showing up twice
* done
* initial changes
* small fix
* more merge fixes
* fixes
* more fixes
* fix
* save
* fix manage pow nodes setting appearing on other wallets
* fix contact bug
* fixes
* fiat fixes
* save
* save
* save
* save
* updates
* cleanup
* restore fix
* fixes
* remove deprecated alert
* fix
* small fix
* remove outdated warning
* electrum restore fixes
* fixes
* fixes
* fix
* derivation fixes
* nano fixes pt.1
* nano fixes pt.2
* bip39 fixes
* pownode refactor
* nodes pages fixes
* observer fix
* ssl fix
* remove old references
* remove unused imports
* code cleanup
* small fix
* small potential fix
* save
* derivation fixes
* deterministic fix
* fix pt.2
* derivation class fixes
* review fixes from nano that also apply here
* formatting
* stuff that should've stayed deleted
* post merge fixes
* remove problematic imports and duplicate changes
* Delete lib/nano/nano.dart
* move wallet restore page proxy code to the view model
* fix dashboard page indicators being the same color
* debatably better refactoring of derivationInfo, migration needed
* additional refactor improvements
* blanket comment some stuff out to narrow down this issue
* refactor fixes
* fix nano exchange
* fix , bug, i.e. replace , with . when making a nano transaction
* fix nano sending, update restore page wording, and other minor fixes
* write migration for existing bitcoin and nano wallets
* merge fixes
* minor fixes
* use default derivation type when restoring from qr code
* fixes for restoring
* fixes
* fixes
* merge fix
* Fix issues with Creating Electrum and Restoring Bip39
* updates & fixes
* Add missing case for no transactions BIP39 wallet restore
* Make the default BIP39 the 84 derivation path
* Add Samourai Deposit
* litecoin mnemonic error fix
* Bip39 passphrase support (#1412)
* save
* passphrase working
* fix for when loading wallets + translation update
* minor fix
* Fix Nano
* minor fix [skip ci]
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
* change error state seed conditions into throwables [skip ci]
* litecoin fixes
* Bip39 minor enhancements (#1416)
* minor enhancements
* rename bitcoin_derivations -> electrum_derivations
* Remove duplicate derivations
handle default case
* minor fix
* Enable passphrase for Litecoin
* obscure text of passphrase
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Co-authored-by: Justin Ehrenhofer <justin.ehrenhofer@gmail.com>
Co-authored-by: fossephate <fosse@book.local>
2024-04-30 00:49:56 +00:00
|
|
|
required DerivationType derivationType,
|
2023-10-05 01:09:07 +00:00
|
|
|
}) {
|
Bitcoin derivations (#1089)
* - Update and Fix Conflicts with main
* Add Balances for ERC20 tokens
* Fix conflicts with main
* Add erc20 abi json
* Add send erc20 tokens initial function
* add missing getHeightByDate in Haven [skip ci]
* Allow contacts and wallets from the same tag
* Add Shiba Inu icon
* Add send ERC-20 tokens initial flow
* Add missing import in generated file
* Add initial approach for transaction sending for ERC-20 tokens
* Refactor signing/sending transactions
* Add initial flow for transactions subscription
* Refactor signing/sending transactions
* Add home settings icon
* Fix conflicts with main
* Initial flow for home settings
* Add logic flow for adding erc20 tokens
* Fix initial UI
* Finalize UI for Tokens
* Integrate UI with Ethereum flow
* Add "Enable/Disable" feature for ERC20 tokens
* Add initial Erc20 tokens
* Add Sorting and Pin Native Token features
* Fix price sorting
* Sort tokens list as well when Sort criteria changes
* - Improve sorting balances flow
- Add initial add token from search bar flow
* Fix Accounts Popup UI
* Fix Pin native token
* Fix Enabling/Disabling tokens
Fix sorting by fiat once app is opened
Improve token availability mechanism
* Fix deleting token
Fix renaming tokens
* Fix issue with search
* Add more tokens
* - Fix scroll issue
- Add ERC20 tokens placeholder image in picker
* - Separate and organize default erc20 tokens
- Fix scrolling
- Add token placeholder images in picker
- Sort disabled tokens alphabetically
* Change BNB token initial availability [skip ci]
* Fix Conflicts with main
* Fix Conflicts with main
* Add Verse ERC20 token to the initial tokens list
* Add rename wallet to Ethereum
* Integrate EtherScan API for fetching address transactions
Generate Ethereum specific secrets in Ethereum package
* Adjust transactions fiat price for ERC20 tokens
* Free Up GitHub Actions Ubuntu Runner Disk Space
* Free Up GitHub Actions Ubuntu Runner Disk space (trial 2)
* Fix Transaction Fee display
* Save transaction history
* Enhance loading time for erc20 tokens transactions
* Minor Fixes and Enhancements
* Fix sending erc20
fix block explorer issue
* Fix int overflow
* Fix transaction amount conversions
* Minor: `slow` -> `Slow` [skip-ci]
* initial changes
* more base config stuff
* config changes
* successfully builds!
* save
* successfully add nano wallet
* save
* seed generation
* receive screen + node screen working
* tx history working and fiat fixes
* balance working
* derivation updates
* nano-unfinished
* sends working
* remove fees from send screen, send and receive transactions working
* fixes + auto receive incoming txs
* fix for scanning QR codes
* save
* update translations
* fixes
* more fixes
* more strings
* small fix
* fix github actions workflow
* potential fix
* potential fix
* ci/cd fix
* change rep working
* seed generation fixes
* fixes
* save
* change rep screen functional
* save
* banano changes
* fixes, start adding ui for PoW
* pow node changes
* update translations
* fix
* account changing barely working
* save
* disable account generation
* small fix
* save
* UI work
* save
* fixes after merge main
* fixes
* remove monero stuff, work on derivation ui
* lots of fixes + finish up seed derivation
* last minute fixes
* node related fixes
* more fixes
* small fix
* more fixes
* fixes
* pretty big refactor for pow, still some bugs
* finally works!
* get transactions after send
* fix
* merge conflict fixes
* save
* fix pow node showing up twice
* done
* initial changes
* small fix
* more merge fixes
* fixes
* more fixes
* fix
* save
* fix manage pow nodes setting appearing on other wallets
* fix contact bug
* fixes
* fiat fixes
* save
* save
* save
* save
* updates
* cleanup
* restore fix
* fixes
* remove deprecated alert
* fix
* small fix
* remove outdated warning
* electrum restore fixes
* fixes
* fixes
* fix
* derivation fixes
* nano fixes pt.1
* nano fixes pt.2
* bip39 fixes
* pownode refactor
* nodes pages fixes
* observer fix
* ssl fix
* remove old references
* remove unused imports
* code cleanup
* small fix
* small potential fix
* save
* derivation fixes
* deterministic fix
* fix pt.2
* derivation class fixes
* review fixes from nano that also apply here
* formatting
* stuff that should've stayed deleted
* post merge fixes
* remove problematic imports and duplicate changes
* Delete lib/nano/nano.dart
* move wallet restore page proxy code to the view model
* fix dashboard page indicators being the same color
* debatably better refactoring of derivationInfo, migration needed
* additional refactor improvements
* blanket comment some stuff out to narrow down this issue
* refactor fixes
* fix nano exchange
* fix , bug, i.e. replace , with . when making a nano transaction
* fix nano sending, update restore page wording, and other minor fixes
* write migration for existing bitcoin and nano wallets
* merge fixes
* minor fixes
* use default derivation type when restoring from qr code
* fixes for restoring
* fixes
* fixes
* merge fix
* Fix issues with Creating Electrum and Restoring Bip39
* updates & fixes
* Add missing case for no transactions BIP39 wallet restore
* Make the default BIP39 the 84 derivation path
* Add Samourai Deposit
* litecoin mnemonic error fix
* Bip39 passphrase support (#1412)
* save
* passphrase working
* fix for when loading wallets + translation update
* minor fix
* Fix Nano
* minor fix [skip ci]
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
* change error state seed conditions into throwables [skip ci]
* litecoin fixes
* Bip39 minor enhancements (#1416)
* minor enhancements
* rename bitcoin_derivations -> electrum_derivations
* Remove duplicate derivations
handle default case
* minor fix
* Enable passphrase for Litecoin
* obscure text of passphrase
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Co-authored-by: Justin Ehrenhofer <justin.ehrenhofer@gmail.com>
Co-authored-by: fossephate <fosse@book.local>
2024-04-30 00:49:56 +00:00
|
|
|
if (seedKey.length == 128 && derivationType != DerivationType.bip39) {
|
|
|
|
throw Exception("Invalid seed key length for derivation type!");
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return NanoRestoreWalletFromKeysCredentials(
|
|
|
|
name: name,
|
|
|
|
password: password,
|
|
|
|
seedKey: seedKey,
|
|
|
|
derivationType: derivationType,
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Object createNanoTransactionCredentials(List<Output> outputs) {
|
|
|
|
return NanoTransactionCredentials(
|
|
|
|
outputs
|
|
|
|
.map((out) => OutputInfo(
|
|
|
|
fiatAmount: out.fiatAmount,
|
|
|
|
cryptoAmount: out.cryptoAmount,
|
|
|
|
address: out.address,
|
|
|
|
note: out.note,
|
|
|
|
sendAll: out.sendAll,
|
|
|
|
extractedAddress: out.extractedAddress,
|
|
|
|
isParsedAddress: out.isParsedAddress,
|
|
|
|
formattedCryptoAmount: out.formattedCryptoAmount,
|
|
|
|
))
|
|
|
|
.toList(),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Future<void> changeRep(Object wallet, String address) async {
|
2023-11-17 18:35:46 +00:00
|
|
|
if ((wallet as NanoWallet).transactionHistory.transactions.isEmpty) {
|
|
|
|
throw Exception("Can't change representative without an existing transaction history");
|
|
|
|
}
|
|
|
|
return wallet.changeRep(address);
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
2024-01-11 23:00:41 +00:00
|
|
|
Future<bool> updateTransactions(Object wallet) async {
|
2023-10-05 01:09:07 +00:00
|
|
|
return (wallet as NanoWallet).updateTransactions();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
BigInt getTransactionAmountRaw(TransactionInfo transactionInfo) {
|
|
|
|
return (transactionInfo as NanoTransactionInfo).amountRaw;
|
|
|
|
}
|
2023-10-09 15:18:59 +00:00
|
|
|
|
|
|
|
@override
|
|
|
|
String getRepresentative(Object wallet) {
|
|
|
|
return (wallet as NanoWallet).representative;
|
|
|
|
}
|
2024-04-12 12:36:42 +00:00
|
|
|
|
|
|
|
@override
|
|
|
|
Future<List<N2Node>> getN2Reps(Object wallet) async {
|
|
|
|
return (wallet as NanoWallet).getN2Reps();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
bool isRepOk(Object wallet) {
|
|
|
|
return (wallet as NanoWallet).isRepOk;
|
|
|
|
}
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class CWNanoUtil extends NanoUtil {
|
|
|
|
@override
|
|
|
|
bool isValidBip39Seed(String seed) {
|
2024-01-11 23:00:41 +00:00
|
|
|
return NanoDerivations.isValidBip39Seed(seed);
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// number util:
|
|
|
|
|
|
|
|
static const int maxDecimalDigits = 6; // Max digits after decimal
|
|
|
|
BigInt rawPerNano = BigInt.parse("1000000000000000000000000000000");
|
|
|
|
BigInt rawPerNyano = BigInt.parse("1000000000000000000000000");
|
|
|
|
BigInt rawPerBanano = BigInt.parse("100000000000000000000000000000");
|
|
|
|
BigInt rawPerXMR = BigInt.parse("1000000000000");
|
|
|
|
BigInt convertXMRtoNano = BigInt.parse("1000000000000000000");
|
2023-10-09 15:18:59 +00:00
|
|
|
|
2023-10-05 01:09:07 +00:00
|
|
|
@override
|
|
|
|
String getRawAsUsableString(String? raw, BigInt rawPerCur) {
|
2024-01-11 23:00:41 +00:00
|
|
|
return NanoAmounts.getRawAsUsableString(raw, rawPerCur);
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
String getRawAccuracy(String? raw, BigInt rawPerCur) {
|
2024-01-11 23:00:41 +00:00
|
|
|
return NanoAmounts.getRawAccuracy(raw, rawPerCur);
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
String getAmountAsRaw(String amount, BigInt rawPerCur) {
|
2024-01-11 23:00:41 +00:00
|
|
|
return NanoAmounts.getAmountAsRaw(amount, rawPerCur);
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Future<AccountInfoResponse?> getInfoFromSeedOrMnemonic(
|
|
|
|
DerivationType derivationType, {
|
|
|
|
String? seedKey,
|
|
|
|
String? mnemonic,
|
|
|
|
required Node node,
|
|
|
|
}) async {
|
|
|
|
NanoClient nanoClient = NanoClient();
|
|
|
|
nanoClient.connect(node);
|
2024-05-04 12:35:15 +00:00
|
|
|
String? publicAddress;
|
|
|
|
|
|
|
|
if (seedKey == null && mnemonic == null) {
|
|
|
|
throw Exception("One of seed key OR mnemonic must be provided!");
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
if (seedKey != null) {
|
|
|
|
if (seedKey.length == 64) {
|
|
|
|
try {
|
|
|
|
mnemonic = NanoDerivations.standardSeedToMnemonic(seedKey);
|
|
|
|
} catch (e) {
|
|
|
|
print("not a valid 'nano' seed key");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (derivationType == DerivationType.bip39) {
|
|
|
|
publicAddress = await NanoDerivations.hdSeedToAddress(seedKey, index: 0);
|
|
|
|
} else if (derivationType == DerivationType.nano) {
|
|
|
|
publicAddress = await NanoDerivations.standardSeedToAddress(seedKey, index: 0);
|
2023-10-17 15:59:41 +00:00
|
|
|
}
|
|
|
|
}
|
2024-05-04 12:35:15 +00:00
|
|
|
|
2023-10-05 01:09:07 +00:00
|
|
|
if (derivationType == DerivationType.bip39) {
|
2024-05-04 12:35:15 +00:00
|
|
|
if (mnemonic != null) {
|
|
|
|
seedKey = await NanoDerivations.hdMnemonicListToSeed(mnemonic.split(' '));
|
|
|
|
publicAddress = await NanoDerivations.hdSeedToAddress(seedKey, index: 0);
|
|
|
|
}
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
2024-05-04 12:35:15 +00:00
|
|
|
if (derivationType == DerivationType.nano) {
|
|
|
|
if (mnemonic != null) {
|
|
|
|
seedKey = await NanoDerivations.standardMnemonicToSeed(mnemonic);
|
|
|
|
publicAddress = await NanoDerivations.standardSeedToAddress(seedKey, index: 0);
|
|
|
|
}
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
2024-05-04 12:35:15 +00:00
|
|
|
} catch (_) {}
|
2023-10-05 01:09:07 +00:00
|
|
|
|
2024-05-04 12:35:15 +00:00
|
|
|
if (publicAddress == null) {
|
|
|
|
// we couldn't derive a public address for the derivation type provided
|
|
|
|
// i.e. a bip39 seed was provided and we were instructed to derive a "nano" type address
|
|
|
|
return null;
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
AccountInfoResponse? accountInfo = await nanoClient.getAccountInfo(publicAddress);
|
|
|
|
if (accountInfo == null) {
|
2023-10-17 15:59:41 +00:00
|
|
|
accountInfo = AccountInfoResponse(
|
|
|
|
frontier: "", balance: "0", representative: "", confirmationHeight: 0);
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
accountInfo.address = publicAddress;
|
|
|
|
return accountInfo;
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Future<List<DerivationType>> compareDerivationMethods({
|
|
|
|
String? mnemonic,
|
|
|
|
String? privateKey,
|
|
|
|
required Node node,
|
|
|
|
}) async {
|
|
|
|
String? seedKey = privateKey;
|
|
|
|
|
|
|
|
if (mnemonic?.split(' ').length == 12) {
|
|
|
|
return [DerivationType.bip39];
|
|
|
|
}
|
|
|
|
if (seedKey?.length == 128) {
|
|
|
|
return [DerivationType.bip39];
|
|
|
|
} else if (seedKey?.length == 64) {
|
2023-10-17 15:59:41 +00:00
|
|
|
try {
|
2024-01-11 23:00:41 +00:00
|
|
|
mnemonic = NanoDerivations.standardSeedToMnemonic(seedKey!);
|
2023-10-17 15:59:41 +00:00
|
|
|
} catch (e) {
|
|
|
|
print("not a valid 'nano' seed key");
|
|
|
|
}
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
late String publicAddressStandard;
|
|
|
|
late String publicAddressBip39;
|
|
|
|
|
|
|
|
try {
|
|
|
|
NanoClient nanoClient = NanoClient();
|
|
|
|
nanoClient.connect(node);
|
|
|
|
|
|
|
|
if (mnemonic != null) {
|
2024-01-11 23:00:41 +00:00
|
|
|
seedKey = await NanoDerivations.hdMnemonicListToSeed(mnemonic.split(' '));
|
|
|
|
publicAddressBip39 = await NanoDerivations.hdSeedToAddress(seedKey, index: 0);
|
2023-10-05 01:09:07 +00:00
|
|
|
|
2024-01-11 23:00:41 +00:00
|
|
|
seedKey = await NanoDerivations.standardMnemonicToSeed(mnemonic);
|
|
|
|
publicAddressStandard = await NanoDerivations.standardSeedToAddress(seedKey, index: 0);
|
2023-10-05 01:09:07 +00:00
|
|
|
} else if (seedKey != null) {
|
|
|
|
try {
|
2024-01-11 23:00:41 +00:00
|
|
|
publicAddressBip39 = await NanoDerivations.hdSeedToAddress(seedKey, index: 0);
|
2023-10-05 01:09:07 +00:00
|
|
|
} catch (e) {
|
|
|
|
return [DerivationType.nano];
|
|
|
|
}
|
|
|
|
try {
|
2024-01-11 23:00:41 +00:00
|
|
|
publicAddressStandard = await NanoDerivations.standardSeedToAddress(seedKey, index: 0);
|
2023-10-05 01:09:07 +00:00
|
|
|
} catch (e) {
|
|
|
|
return [DerivationType.bip39];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// check if account has a history:
|
|
|
|
AccountInfoResponse? bip39Info;
|
|
|
|
AccountInfoResponse? standardInfo;
|
|
|
|
|
|
|
|
try {
|
|
|
|
bip39Info = await nanoClient.getAccountInfo(publicAddressBip39);
|
|
|
|
} catch (e) {
|
|
|
|
bip39Info = null;
|
|
|
|
}
|
|
|
|
try {
|
|
|
|
standardInfo = await nanoClient.getAccountInfo(publicAddressStandard);
|
|
|
|
} catch (e) {
|
|
|
|
standardInfo = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
// one of these is *probably* null:
|
|
|
|
if (bip39Info == null && standardInfo != null) {
|
|
|
|
return [DerivationType.nano];
|
|
|
|
} else if (standardInfo == null && bip39Info != null) {
|
|
|
|
return [DerivationType.bip39];
|
|
|
|
}
|
|
|
|
|
|
|
|
// we don't know for sure:
|
|
|
|
return [DerivationType.nano, DerivationType.bip39];
|
|
|
|
} catch (e) {
|
2023-10-17 15:59:41 +00:00
|
|
|
return [DerivationType.nano, DerivationType.bip39];
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|
|
|
|
}
|
Bitcoin derivations (#1089)
* - Update and Fix Conflicts with main
* Add Balances for ERC20 tokens
* Fix conflicts with main
* Add erc20 abi json
* Add send erc20 tokens initial function
* add missing getHeightByDate in Haven [skip ci]
* Allow contacts and wallets from the same tag
* Add Shiba Inu icon
* Add send ERC-20 tokens initial flow
* Add missing import in generated file
* Add initial approach for transaction sending for ERC-20 tokens
* Refactor signing/sending transactions
* Add initial flow for transactions subscription
* Refactor signing/sending transactions
* Add home settings icon
* Fix conflicts with main
* Initial flow for home settings
* Add logic flow for adding erc20 tokens
* Fix initial UI
* Finalize UI for Tokens
* Integrate UI with Ethereum flow
* Add "Enable/Disable" feature for ERC20 tokens
* Add initial Erc20 tokens
* Add Sorting and Pin Native Token features
* Fix price sorting
* Sort tokens list as well when Sort criteria changes
* - Improve sorting balances flow
- Add initial add token from search bar flow
* Fix Accounts Popup UI
* Fix Pin native token
* Fix Enabling/Disabling tokens
Fix sorting by fiat once app is opened
Improve token availability mechanism
* Fix deleting token
Fix renaming tokens
* Fix issue with search
* Add more tokens
* - Fix scroll issue
- Add ERC20 tokens placeholder image in picker
* - Separate and organize default erc20 tokens
- Fix scrolling
- Add token placeholder images in picker
- Sort disabled tokens alphabetically
* Change BNB token initial availability [skip ci]
* Fix Conflicts with main
* Fix Conflicts with main
* Add Verse ERC20 token to the initial tokens list
* Add rename wallet to Ethereum
* Integrate EtherScan API for fetching address transactions
Generate Ethereum specific secrets in Ethereum package
* Adjust transactions fiat price for ERC20 tokens
* Free Up GitHub Actions Ubuntu Runner Disk Space
* Free Up GitHub Actions Ubuntu Runner Disk space (trial 2)
* Fix Transaction Fee display
* Save transaction history
* Enhance loading time for erc20 tokens transactions
* Minor Fixes and Enhancements
* Fix sending erc20
fix block explorer issue
* Fix int overflow
* Fix transaction amount conversions
* Minor: `slow` -> `Slow` [skip-ci]
* initial changes
* more base config stuff
* config changes
* successfully builds!
* save
* successfully add nano wallet
* save
* seed generation
* receive screen + node screen working
* tx history working and fiat fixes
* balance working
* derivation updates
* nano-unfinished
* sends working
* remove fees from send screen, send and receive transactions working
* fixes + auto receive incoming txs
* fix for scanning QR codes
* save
* update translations
* fixes
* more fixes
* more strings
* small fix
* fix github actions workflow
* potential fix
* potential fix
* ci/cd fix
* change rep working
* seed generation fixes
* fixes
* save
* change rep screen functional
* save
* banano changes
* fixes, start adding ui for PoW
* pow node changes
* update translations
* fix
* account changing barely working
* save
* disable account generation
* small fix
* save
* UI work
* save
* fixes after merge main
* fixes
* remove monero stuff, work on derivation ui
* lots of fixes + finish up seed derivation
* last minute fixes
* node related fixes
* more fixes
* small fix
* more fixes
* fixes
* pretty big refactor for pow, still some bugs
* finally works!
* get transactions after send
* fix
* merge conflict fixes
* save
* fix pow node showing up twice
* done
* initial changes
* small fix
* more merge fixes
* fixes
* more fixes
* fix
* save
* fix manage pow nodes setting appearing on other wallets
* fix contact bug
* fixes
* fiat fixes
* save
* save
* save
* save
* updates
* cleanup
* restore fix
* fixes
* remove deprecated alert
* fix
* small fix
* remove outdated warning
* electrum restore fixes
* fixes
* fixes
* fix
* derivation fixes
* nano fixes pt.1
* nano fixes pt.2
* bip39 fixes
* pownode refactor
* nodes pages fixes
* observer fix
* ssl fix
* remove old references
* remove unused imports
* code cleanup
* small fix
* small potential fix
* save
* derivation fixes
* deterministic fix
* fix pt.2
* derivation class fixes
* review fixes from nano that also apply here
* formatting
* stuff that should've stayed deleted
* post merge fixes
* remove problematic imports and duplicate changes
* Delete lib/nano/nano.dart
* move wallet restore page proxy code to the view model
* fix dashboard page indicators being the same color
* debatably better refactoring of derivationInfo, migration needed
* additional refactor improvements
* blanket comment some stuff out to narrow down this issue
* refactor fixes
* fix nano exchange
* fix , bug, i.e. replace , with . when making a nano transaction
* fix nano sending, update restore page wording, and other minor fixes
* write migration for existing bitcoin and nano wallets
* merge fixes
* minor fixes
* use default derivation type when restoring from qr code
* fixes for restoring
* fixes
* fixes
* merge fix
* Fix issues with Creating Electrum and Restoring Bip39
* updates & fixes
* Add missing case for no transactions BIP39 wallet restore
* Make the default BIP39 the 84 derivation path
* Add Samourai Deposit
* litecoin mnemonic error fix
* Bip39 passphrase support (#1412)
* save
* passphrase working
* fix for when loading wallets + translation update
* minor fix
* Fix Nano
* minor fix [skip ci]
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
* change error state seed conditions into throwables [skip ci]
* litecoin fixes
* Bip39 minor enhancements (#1416)
* minor enhancements
* rename bitcoin_derivations -> electrum_derivations
* Remove duplicate derivations
handle default case
* minor fix
* Enable passphrase for Litecoin
* obscure text of passphrase
---------
Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Co-authored-by: Justin Ehrenhofer <justin.ehrenhofer@gmail.com>
Co-authored-by: fossephate <fosse@book.local>
2024-04-30 00:49:56 +00:00
|
|
|
|
|
|
|
@override
|
|
|
|
Future<List<DerivationInfo>> getDerivationsFromMnemonic({
|
|
|
|
String? mnemonic,
|
|
|
|
String? seedKey,
|
|
|
|
required Node node,
|
|
|
|
}) async {
|
|
|
|
List<DerivationInfo> list = [];
|
|
|
|
|
|
|
|
List<DerivationType> possibleDerivationTypes = await compareDerivationMethods(
|
|
|
|
mnemonic: mnemonic,
|
|
|
|
privateKey: seedKey,
|
|
|
|
node: node,
|
|
|
|
);
|
|
|
|
if (possibleDerivationTypes.length == 1) {
|
|
|
|
return [DerivationInfo(derivationType: possibleDerivationTypes.first)];
|
|
|
|
}
|
|
|
|
|
|
|
|
AccountInfoResponse? bip39Info = await nanoUtil!.getInfoFromSeedOrMnemonic(
|
|
|
|
DerivationType.bip39,
|
|
|
|
mnemonic: mnemonic,
|
|
|
|
seedKey: seedKey,
|
|
|
|
node: node,
|
|
|
|
);
|
|
|
|
AccountInfoResponse? standardInfo = await nanoUtil!.getInfoFromSeedOrMnemonic(
|
|
|
|
DerivationType.nano,
|
|
|
|
mnemonic: mnemonic,
|
|
|
|
seedKey: seedKey,
|
|
|
|
node: node,
|
|
|
|
);
|
|
|
|
|
|
|
|
if (standardInfo?.confirmationHeight != null && standardInfo!.confirmationHeight > 0) {
|
|
|
|
list.add(DerivationInfo(
|
|
|
|
derivationType: DerivationType.nano,
|
|
|
|
balance: nanoUtil!.getRawAsUsableString(standardInfo.balance, nanoUtil!.rawPerNano),
|
|
|
|
address: standardInfo.address!,
|
|
|
|
transactionsCount: standardInfo.confirmationHeight,
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (bip39Info?.confirmationHeight != null && bip39Info!.confirmationHeight > 0) {
|
|
|
|
list.add(DerivationInfo(
|
|
|
|
derivationType: DerivationType.bip39,
|
|
|
|
balance: nanoUtil!.getRawAsUsableString(bip39Info.balance, nanoUtil!.rawPerNano),
|
|
|
|
address: bip39Info.address!,
|
|
|
|
transactionsCount: bip39Info.confirmationHeight,
|
|
|
|
));
|
|
|
|
}
|
|
|
|
return list;
|
|
|
|
}
|
2023-10-05 01:09:07 +00:00
|
|
|
}
|