From 8aa6e8f4ca7f8ec39ba356cc34a2a32297d66190 Mon Sep 17 00:00:00 2001 From: waleedarshad Date: Thu, 3 Mar 2022 12:15:02 +0500 Subject: [PATCH 1/9] Rename all wallet entities to account entities --- .../lib/account_derivator.dart | 23 ++++ .../alan/alan_account_derivation_info.dart | 17 +++ .../lib/alan/alan_account_derivator.dart | 44 ++++++++ .../lib/alan/alan_credentials_serializer.dart | 30 +++--- ... => alan_private_account_credentials.dart} | 18 ++-- .../alan/alan_transaction_broadcaster.dart | 10 +- .../lib/alan/alan_transaction_signer.dart | 12 +-- .../lib/alan/alan_wallet_derivation_info.dart | 17 --- .../lib/alan/alan_wallet_derivator.dart | 44 -------- .../gateway/transaction_signing_gateway.dart | 68 ++++++------ .../lib/model/account_derivation_failure.dart | 43 ++++++++ .../lib/model/account_derivation_info.dart | 1 + ...ookup_key.dart => account_lookup_key.dart} | 10 +- ...lic_info.dart => account_public_info.dart} | 24 ++--- ...rt => account_public_info_serializer.dart} | 16 +-- ....dart => private_account_credentials.dart} | 6 +- ...rivate_account_credentials_serializer.dart | 11 ++ ...private_wallet_credentials_serializer.dart | 11 -- .../transaction_broadcasting_failure.dart | 4 +- .../model/transaction_signing_failure.dart | 4 +- .../lib/model/wallet_derivation_failure.dart | 43 -------- .../lib/model/wallet_derivation_info.dart | 1 - .../lib/storage/cosmos_key_info_storage.dart | 100 +++++++++--------- .../lib/storage/key_info_storage.dart | 22 ++-- .../lib/transaction_broadcaster.dart | 6 +- .../lib/transaction_signer.dart | 4 +- .../lib/transaction_signing_gateway.dart | 8 +- .../lib/wallet_derivator.dart | 23 ---- .../account_public_info_serializer_test.dart | 41 +++++++ .../alan_credentials_serializer_test.dart | 12 +-- .../test/mobile_key_info_storage_test.dart | 30 +++--- .../test/mocks/key_info_storage_mock.dart | 16 +-- ... => private_account_credentials_mock.dart} | 26 ++--- .../transaction_signing_gateway_test.dart | 24 ++--- .../wallet_public_info_serializer_test.dart | 41 ------- 35 files changed, 405 insertions(+), 405 deletions(-) create mode 100644 packages/transaction_signing_gateway/lib/account_derivator.dart create mode 100644 packages/transaction_signing_gateway/lib/alan/alan_account_derivation_info.dart create mode 100644 packages/transaction_signing_gateway/lib/alan/alan_account_derivator.dart rename packages/transaction_signing_gateway/lib/alan/{alan_private_wallet_credentials.dart => alan_private_account_credentials.dart} (54%) delete mode 100644 packages/transaction_signing_gateway/lib/alan/alan_wallet_derivation_info.dart delete mode 100644 packages/transaction_signing_gateway/lib/alan/alan_wallet_derivator.dart create mode 100644 packages/transaction_signing_gateway/lib/model/account_derivation_failure.dart create mode 100644 packages/transaction_signing_gateway/lib/model/account_derivation_info.dart rename packages/transaction_signing_gateway/lib/model/{wallet_lookup_key.dart => account_lookup_key.dart} (62%) rename packages/transaction_signing_gateway/lib/model/{wallet_public_info.dart => account_public_info.dart} (68%) rename packages/transaction_signing_gateway/lib/model/{wallet_public_info_serializer.dart => account_public_info_serializer.dart} (60%) rename packages/transaction_signing_gateway/lib/model/{private_wallet_credentials.dart => private_account_credentials.dart} (52%) create mode 100644 packages/transaction_signing_gateway/lib/model/private_account_credentials_serializer.dart delete mode 100644 packages/transaction_signing_gateway/lib/model/private_wallet_credentials_serializer.dart delete mode 100644 packages/transaction_signing_gateway/lib/model/wallet_derivation_failure.dart delete mode 100644 packages/transaction_signing_gateway/lib/model/wallet_derivation_info.dart delete mode 100644 packages/transaction_signing_gateway/lib/wallet_derivator.dart create mode 100644 packages/transaction_signing_gateway/test/account_public_info_serializer_test.dart rename packages/transaction_signing_gateway/test/mocks/{private_wallet_credentials_mock.dart => private_account_credentials_mock.dart} (61%) delete mode 100644 packages/transaction_signing_gateway/test/wallet_public_info_serializer_test.dart diff --git a/packages/transaction_signing_gateway/lib/account_derivator.dart b/packages/transaction_signing_gateway/lib/account_derivator.dart new file mode 100644 index 00000000..7859de48 --- /dev/null +++ b/packages/transaction_signing_gateway/lib/account_derivator.dart @@ -0,0 +1,23 @@ +import 'package:dartz/dartz.dart'; +import 'package:transaction_signing_gateway/model/account_derivation_failure.dart'; +import 'package:transaction_signing_gateway/model/account_derivation_info.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; + +abstract class AccountDerivator { + Future> derive({ + required AccountDerivationInfo accountDerivationInfo, + }); + + bool canDerive(AccountDerivationInfo accountDerivationInfo); +} + +class NotFoundDerivator implements AccountDerivator { + @override + bool canDerive(AccountDerivationInfo accountDerivationInfo) => true; + + @override + Future> derive({ + required AccountDerivationInfo accountDerivationInfo, + }) async => + left(const DerivatorNotFoundFailure()); +} diff --git a/packages/transaction_signing_gateway/lib/alan/alan_account_derivation_info.dart b/packages/transaction_signing_gateway/lib/alan/alan_account_derivation_info.dart new file mode 100644 index 00000000..8ccf04e6 --- /dev/null +++ b/packages/transaction_signing_gateway/lib/alan/alan_account_derivation_info.dart @@ -0,0 +1,17 @@ +import 'package:alan/wallet/network_info.dart'; +import 'package:transaction_signing_gateway/model/account_derivation_info.dart'; + +class AlanAccountDerivationInfo implements AccountDerivationInfo { + AlanAccountDerivationInfo({ + required this.chainId, + required this.accountAlias, + required this.networkInfo, + required this.mnemonic, + }); + + final String mnemonic; + final String chainId; + final String accountAlias; + + final NetworkInfo networkInfo; +} diff --git a/packages/transaction_signing_gateway/lib/alan/alan_account_derivator.dart b/packages/transaction_signing_gateway/lib/alan/alan_account_derivator.dart new file mode 100644 index 00000000..15f3a148 --- /dev/null +++ b/packages/transaction_signing_gateway/lib/alan/alan_account_derivator.dart @@ -0,0 +1,44 @@ +import 'package:alan/alan.dart' as alan; +import 'package:dartz/dartz.dart'; +import 'package:flutter/foundation.dart'; +import 'package:transaction_signing_gateway/alan/alan_account_derivation_info.dart'; +import 'package:transaction_signing_gateway/alan/alan_private_account_credentials.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; +import 'package:transaction_signing_gateway/model/account_derivation_failure.dart'; +import 'package:transaction_signing_gateway/model/account_derivation_info.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; +import 'package:transaction_signing_gateway/account_derivator.dart'; +import 'package:uuid/uuid.dart'; + +class AlanAccountDerivator implements AccountDerivator { + @override + Future> derive({ + required AccountDerivationInfo accountDerivationInfo, + }) async { + try { + final alanAccountDerivationInfo = accountDerivationInfo as AlanAccountDerivationInfo; + final account = await compute(_deriveAccountSync, alanAccountDerivationInfo); + return right( + AlanPrivateAccountCredentials( + publicInfo: AccountPublicInfo( + chainId: alanAccountDerivationInfo.chainId, + accountId: const Uuid().v4(), + name: alanAccountDerivationInfo.accountAlias, + publicAddress: account.bech32Address, + ), + mnemonic: alanAccountDerivationInfo.mnemonic, + ), + ); + } catch (ex) { + return left(InvalidMnemonicFailure(ex.toString())); + } + } + + @override + bool canDerive(AccountDerivationInfo accountDerivationInfo) => accountDerivationInfo is AlanAccountDerivationInfo; +} + +alan.Wallet _deriveAccountSync(AlanAccountDerivationInfo derivationInfo) => alan.Wallet.derive( + derivationInfo.mnemonic.split(' '), + derivationInfo.networkInfo, + ); diff --git a/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart b/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart index 9b356195..97ed791a 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart @@ -1,38 +1,38 @@ import 'package:cosmos_utils/cosmos_utils.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter/foundation.dart'; -import 'package:transaction_signing_gateway/alan/alan_private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials_serializer.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; +import 'package:transaction_signing_gateway/alan/alan_private_account_credentials.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials_serializer.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; -class AlanCredentialsSerializer implements PrivateWalletCredentialsSerializer { +class AlanCredentialsSerializer implements PrivateAccountCredentialsSerializer { static const id = 'AlanCredentialsSerializer'; static const _chainIdKey = 'chain_id'; static const _mnemonicKey = 'mnemonic'; - static const _walletIdKey = 'walletId'; + static const _accountIdKey = 'walletId'; static const _nameKey = 'name'; static const _publicAddressKey = 'publicAddress'; @override - Either fromJson(Map json) { + Either fromJson(Map json) { try { return right( - AlanPrivateWalletCredentials( + AlanPrivateAccountCredentials( mnemonic: json[_mnemonicKey] as String? ?? '', - publicInfo: WalletPublicInfo( + publicInfo: AccountPublicInfo( name: json[_nameKey] as String? ?? '', publicAddress: json[_publicAddressKey] as String? ?? '', - walletId: json[_walletIdKey] as String? ?? '', + accountId: json[_accountIdKey] as String? ?? '', chainId: json[_chainIdKey] as String? ?? '', ), ), ); } catch (e, stack) { debugPrint('$e\n$stack'); - return left(CredentialsStorageFailure('Could not parse wallet credentials: $e')); + return left(CredentialsStorageFailure('Could not parse account credentials: $e')); } } @@ -40,17 +40,17 @@ class AlanCredentialsSerializer implements PrivateWalletCredentialsSerializer { String get identifier => id; @override - Either> toJson(PrivateWalletCredentials credentials) { - if (credentials is! AlanPrivateWalletCredentials) { + Either> toJson(PrivateAccountCredentials credentials) { + if (credentials is! AlanPrivateAccountCredentials) { return left( CredentialsStorageFailure( - 'Passed credentials are not of type $AlanPrivateWalletCredentials. actual: $credentials', + 'Passed credentials are not of type $AlanPrivateAccountCredentials. actual: $credentials', ), ); } return right({ _chainIdKey: credentials.publicInfo.chainId, - _walletIdKey: credentials.publicInfo.walletId, + _accountIdKey: credentials.publicInfo.accountId, _publicAddressKey: credentials.publicInfo.publicAddress, _nameKey: credentials.publicInfo.name, _mnemonicKey: credentials.mnemonic, diff --git a/packages/transaction_signing_gateway/lib/alan/alan_private_wallet_credentials.dart b/packages/transaction_signing_gateway/lib/alan/alan_private_account_credentials.dart similarity index 54% rename from packages/transaction_signing_gateway/lib/alan/alan_private_wallet_credentials.dart rename to packages/transaction_signing_gateway/lib/alan/alan_private_account_credentials.dart index e5b4c651..a2df7e1b 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_private_wallet_credentials.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_private_account_credentials.dart @@ -1,11 +1,11 @@ import 'package:alan/alan.dart' as alan; import 'package:equatable/equatable.dart'; import 'package:transaction_signing_gateway/alan/alan_credentials_serializer.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; -class AlanPrivateWalletCredentials extends Equatable implements PrivateWalletCredentials { - const AlanPrivateWalletCredentials({ +class AlanPrivateAccountCredentials extends Equatable implements PrivateAccountCredentials { + const AlanPrivateAccountCredentials({ required this.mnemonic, required this.publicInfo, }); @@ -14,9 +14,9 @@ class AlanPrivateWalletCredentials extends Equatable implements PrivateWalletCre final String mnemonic; @override - final WalletPublicInfo publicInfo; + final AccountPublicInfo publicInfo; - alan.Wallet alanWallet(alan.NetworkInfo networkInfo) => alan.Wallet.derive( + alan.Wallet alanAccount(alan.NetworkInfo networkInfo) => alan.Wallet.derive( mnemonic.split(' '), networkInfo, ); @@ -30,11 +30,11 @@ class AlanPrivateWalletCredentials extends Equatable implements PrivateWalletCre mnemonic, ]; - AlanPrivateWalletCredentials copyWith({ + AlanPrivateAccountCredentials copyWith({ String? mnemonic, - WalletPublicInfo? publicInfo, + AccountPublicInfo? publicInfo, }) { - return AlanPrivateWalletCredentials( + return AlanPrivateAccountCredentials( mnemonic: mnemonic ?? this.mnemonic, publicInfo: publicInfo ?? this.publicInfo, ); diff --git a/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart b/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart index 3f0a85af..49702147 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart @@ -1,8 +1,8 @@ import 'package:alan/alan.dart'; import 'package:dartz/dartz.dart'; -import 'package:transaction_signing_gateway/alan/alan_private_wallet_credentials.dart'; +import 'package:transaction_signing_gateway/alan/alan_private_account_credentials.dart'; import 'package:transaction_signing_gateway/alan/alan_transaction.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; import 'package:transaction_signing_gateway/model/signed_transaction.dart'; import 'package:transaction_signing_gateway/model/transaction_broadcasting_failure.dart'; import 'package:transaction_signing_gateway/model/transaction_hash.dart'; @@ -16,13 +16,13 @@ class AlanTransactionBroadcaster implements TransactionBroadcaster { @override Future> broadcast({ required SignedTransaction transaction, - required PrivateWalletCredentials privateWalletCredentials, + required PrivateAccountCredentials privateAccountCredentials, }) async { if (transaction is! SignedAlanTransaction) { return left(AlanTransactionBroadcastingFailure('passed transaction is not $SignedAlanTransaction')); } - if (privateWalletCredentials is! AlanPrivateWalletCredentials) { - return left(AlanTransactionBroadcastingFailure('passed privateCredentials is not $AlanPrivateWalletCredentials')); + if (privateAccountCredentials is! AlanPrivateAccountCredentials) { + return left(AlanTransactionBroadcastingFailure('passed privateCredentials is not $AlanPrivateAccountCredentials')); } final txSender = TxSender.fromNetworkInfo(_networkInfo); final response = diff --git a/packages/transaction_signing_gateway/lib/alan/alan_transaction_signer.dart b/packages/transaction_signing_gateway/lib/alan/alan_transaction_signer.dart index 73d4d365..42c72081 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_transaction_signer.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_transaction_signer.dart @@ -1,9 +1,9 @@ import 'package:alan/alan.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter/foundation.dart'; -import 'package:transaction_signing_gateway/alan/alan_private_wallet_credentials.dart'; +import 'package:transaction_signing_gateway/alan/alan_private_account_credentials.dart'; import 'package:transaction_signing_gateway/alan/alan_transaction.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; import 'package:transaction_signing_gateway/model/signed_transaction.dart'; import 'package:transaction_signing_gateway/model/transaction_signing_failure.dart'; import 'package:transaction_signing_gateway/model/unsigned_transaction.dart'; @@ -19,20 +19,20 @@ class AlanTransactionSigner implements TransactionSigner { @override Future> sign({ - required PrivateWalletCredentials privateCredentials, + required PrivateAccountCredentials privateCredentials, required UnsignedTransaction transaction, }) async { if (transaction is! UnsignedAlanTransaction) { return left(AlanTransactionSigningFailure('passed transaction is not $UnsignedAlanTransaction')); } - if (privateCredentials is! AlanPrivateWalletCredentials) { - return left(AlanTransactionSigningFailure('passed privateCredentials is not $AlanPrivateWalletCredentials')); + if (privateCredentials is! AlanPrivateAccountCredentials) { + return left(AlanTransactionSigningFailure('passed privateCredentials is not $AlanPrivateAccountCredentials')); } try { final signer = TxSigner.fromNetworkInfo(_networkInfo); final signedTrans = await signer.createAndSign( - privateCredentials.alanWallet(_networkInfo), + privateCredentials.alanAccount(_networkInfo), transaction.messages, memo: transaction.memo, fee: transaction.fee, diff --git a/packages/transaction_signing_gateway/lib/alan/alan_wallet_derivation_info.dart b/packages/transaction_signing_gateway/lib/alan/alan_wallet_derivation_info.dart deleted file mode 100644 index 4a4a7263..00000000 --- a/packages/transaction_signing_gateway/lib/alan/alan_wallet_derivation_info.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:alan/wallet/network_info.dart'; -import 'package:transaction_signing_gateway/model/wallet_derivation_info.dart'; - -class AlanWalletDerivationInfo implements WalletDerivationInfo { - AlanWalletDerivationInfo({ - required this.chainId, - required this.walletAlias, - required this.networkInfo, - required this.mnemonic, - }); - - final String mnemonic; - final String chainId; - final String walletAlias; - - final NetworkInfo networkInfo; -} diff --git a/packages/transaction_signing_gateway/lib/alan/alan_wallet_derivator.dart b/packages/transaction_signing_gateway/lib/alan/alan_wallet_derivator.dart deleted file mode 100644 index 5fbe8179..00000000 --- a/packages/transaction_signing_gateway/lib/alan/alan_wallet_derivator.dart +++ /dev/null @@ -1,44 +0,0 @@ -import 'package:alan/alan.dart' as alan; -import 'package:dartz/dartz.dart'; -import 'package:flutter/foundation.dart'; -import 'package:transaction_signing_gateway/alan/alan_private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/alan/alan_wallet_derivation_info.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/model/wallet_derivation_failure.dart'; -import 'package:transaction_signing_gateway/model/wallet_derivation_info.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; -import 'package:transaction_signing_gateway/wallet_derivator.dart'; -import 'package:uuid/uuid.dart'; - -class AlanWalletDerivator implements WalletDerivator { - @override - Future> derive({ - required WalletDerivationInfo walletDerivationInfo, - }) async { - try { - final alanWalletDerivationInfo = walletDerivationInfo as AlanWalletDerivationInfo; - final wallet = await compute(_deriveWalletSync, alanWalletDerivationInfo); - return right( - AlanPrivateWalletCredentials( - publicInfo: WalletPublicInfo( - chainId: alanWalletDerivationInfo.chainId, - walletId: const Uuid().v4(), - name: alanWalletDerivationInfo.walletAlias, - publicAddress: wallet.bech32Address, - ), - mnemonic: alanWalletDerivationInfo.mnemonic, - ), - ); - } catch (ex) { - return left(InvalidMnemonicFailure(ex.toString())); - } - } - - @override - bool canDerive(WalletDerivationInfo walletDerivationInfo) => walletDerivationInfo is AlanWalletDerivationInfo; -} - -alan.Wallet _deriveWalletSync(AlanWalletDerivationInfo derivationInfo) => alan.Wallet.derive( - derivationInfo.mnemonic.split(' '), - derivationInfo.networkInfo, - ); diff --git a/packages/transaction_signing_gateway/lib/gateway/transaction_signing_gateway.dart b/packages/transaction_signing_gateway/lib/gateway/transaction_signing_gateway.dart index 86f4a0be..88c8e659 100644 --- a/packages/transaction_signing_gateway/lib/gateway/transaction_signing_gateway.dart +++ b/packages/transaction_signing_gateway/lib/gateway/transaction_signing_gateway.dart @@ -1,17 +1,17 @@ import 'package:cosmos_utils/cosmos_utils.dart'; import 'package:dartz/dartz.dart'; -import 'package:transaction_signing_gateway/alan/alan_wallet_derivator.dart'; +import 'package:transaction_signing_gateway/alan/alan_account_derivator.dart'; import 'package:transaction_signing_gateway/mobile/no_op_transaction_summary_ui.dart'; import 'package:transaction_signing_gateway/model/transaction_broadcasting_failure.dart'; import 'package:transaction_signing_gateway/model/transaction_hash.dart'; import 'package:transaction_signing_gateway/model/transaction_signing_failure.dart'; -import 'package:transaction_signing_gateway/model/wallet_derivation_failure.dart'; -import 'package:transaction_signing_gateway/model/wallet_derivation_info.dart'; -import 'package:transaction_signing_gateway/model/wallet_lookup_key.dart'; +import 'package:transaction_signing_gateway/model/account_derivation_failure.dart'; +import 'package:transaction_signing_gateway/model/account_derivation_info.dart'; +import 'package:transaction_signing_gateway/model/account_lookup_key.dart'; import 'package:transaction_signing_gateway/transaction_broadcaster.dart'; import 'package:transaction_signing_gateway/transaction_signing_gateway.dart'; import 'package:transaction_signing_gateway/transaction_summary_ui.dart'; -import 'package:transaction_signing_gateway/wallet_derivator.dart'; +import 'package:transaction_signing_gateway/account_derivator.dart'; class TransactionSigningGateway { TransactionSigningGateway({ @@ -19,10 +19,10 @@ class TransactionSigningGateway { List? broadcasters, KeyInfoStorage? infoStorage, TransactionSummaryUI? transactionSummaryUI, - List? derivators, + List? derivators, }) : _signers = List.unmodifiable(signers ?? []), _broadcasters = List.unmodifiable(broadcasters ?? []), - _derivators = List.unmodifiable(derivators ?? [AlanWalletDerivator()]), + _derivators = List.unmodifiable(derivators ?? [AlanAccountDerivator()]), _infoStorage = infoStorage ?? CosmosKeyInfoStorage( serializers: [AlanCredentialsSerializer()], @@ -33,35 +33,35 @@ class TransactionSigningGateway { final List _signers; final List _broadcasters; - final List _derivators; + final List _derivators; final KeyInfoStorage _infoStorage; final TransactionSummaryUI _transactionSummaryUI; - /// Stores the passed-in wallet credentials securely on the device. + /// Stores the passed-in account credentials securely on the device. /// /// The `secure_storage` package and strong encryption are used internally, where [password] is used to generate the /// encryption key. Password IS NOT STORED but is passed every time in order to access the private credentials. - /// [WalletPublicInfo], part of the [PrivateWalletCredentials], is accessible without a password. - Future> storeWalletCredentials({ - required PrivateWalletCredentials credentials, + /// [AccountPublicInfo], part of the [PrivateAccountCredentials], is accessible without a password. + Future> storeAccountCredentials({ + required PrivateAccountCredentials credentials, required String password, String? additionalData, }) => _infoStorage.savePrivateCredentials( - walletCredentials: credentials, + accountCredentials: credentials, password: password, ); - /// Deletes a wallet from device - Future> deleteWalletCredentials({required WalletPublicInfo publicInfo}) => - _infoStorage.deleteWalletCredentials(publicInfo: publicInfo); + /// Deletes a account from device + Future> deleteAccountCredentials({required AccountPublicInfo publicInfo}) => + _infoStorage.deleteAccountCredentials(publicInfo: publicInfo); - /// Updates the public details of the wallet - Future> updateWalletPublicInfo({ - required WalletPublicInfo info, + /// Updates the public details of the account + Future> updateAccountPublicInfo({ + required AccountPublicInfo info, }) => - _infoStorage.updatePublicWalletInfo(info: info); + _infoStorage.updatePublicAccountInfo(info: info); /// Signs the passed [transaction]. /// @@ -71,13 +71,13 @@ class TransactionSigningGateway { /// If any of the steps fail, a [TransactionSigningFailure] is returned. Future> signTransaction({ required UnsignedTransaction transaction, - required WalletLookupKey walletLookupKey, + required AccountLookupKey accountLookupKey, }) async => _transactionSummaryUI .showTransactionSummaryUI(transaction: transaction) .flatMap( (userAccepted) => _infoStorage - .getPrivateCredentials(walletLookupKey) + .getPrivateCredentials(accountLookupKey) .leftMap((err) => left(StorageProblemSigningFailure(err))), ) .flatMap( @@ -88,29 +88,29 @@ class TransactionSigningGateway { ); Future> broadcastTransaction({ - required WalletLookupKey walletLookupKey, + required AccountLookupKey accountLookupKey, required SignedTransaction transaction, }) async => _infoStorage - .getPrivateCredentials(walletLookupKey) + .getPrivateCredentials(accountLookupKey) .leftMap((err) => left(StorageProblemBroadcastingFailure())) .flatMap( (privateCreds) async => _findCapableBroadcaster(transaction).broadcast( transaction: transaction, - privateWalletCredentials: privateCreds, + privateAccountCredentials: privateCreds, ), ); - Future> deriveWallet({ - required WalletDerivationInfo walletDerivationInfo, + Future> deriveAccount({ + required AccountDerivationInfo accountDerivationInfo, }) async => - _findCapableDerivator(walletDerivationInfo).derive(walletDerivationInfo: walletDerivationInfo); + _findCapableDerivator(accountDerivationInfo).derive(accountDerivationInfo: accountDerivationInfo); - Future>> getWalletsList() => _infoStorage.getWalletsList(); + Future>> getAccountsList() => _infoStorage.getAccountsList(); - /// Verifies if passed lookupKey is pointing to a valid wallet stored within the secure storage. - Future> verifyLookupKey(WalletLookupKey walletLookupKey) => - _infoStorage.verifyLookupKey(walletLookupKey); + /// Verifies if passed lookupKey is pointing to a valid account stored within the secure storage. + Future> verifyLookupKey(AccountLookupKey accountLookupKey) => + _infoStorage.verifyLookupKey(accountLookupKey); TransactionSigner _findCapableSigner(UnsignedTransaction transaction) => _signers.firstWhere( (element) => element.canSign(transaction), @@ -122,8 +122,8 @@ class TransactionSigningGateway { orElse: NotFoundBroadcaster.new, ); - WalletDerivator _findCapableDerivator(WalletDerivationInfo walletDerivationInfo) => _derivators.firstWhere( - (element) => element.canDerive(walletDerivationInfo), + AccountDerivator _findCapableDerivator(AccountDerivationInfo accountDerivationInfo) => _derivators.firstWhere( + (element) => element.canDerive(accountDerivationInfo), orElse: NotFoundDerivator.new, ); } diff --git a/packages/transaction_signing_gateway/lib/model/account_derivation_failure.dart b/packages/transaction_signing_gateway/lib/model/account_derivation_failure.dart new file mode 100644 index 00000000..90656895 --- /dev/null +++ b/packages/transaction_signing_gateway/lib/model/account_derivation_failure.dart @@ -0,0 +1,43 @@ +enum AccountDerivationFailType { + invalidMnemonic, + derivatorNotFound, + unknown, +} + +abstract class AccountDerivationFailure { + AccountDerivationFailType get type; +} + +class InvalidMnemonicFailure implements AccountDerivationFailure { + const InvalidMnemonicFailure(this.failure); + + final Object failure; + + @override + AccountDerivationFailType get type => AccountDerivationFailType.invalidMnemonic; + + @override + String toString() => 'InvalidMnemonicFailure{fail: $failure}'; +} + +class DerivatorNotFoundFailure implements AccountDerivationFailure { + const DerivatorNotFoundFailure(); + + @override + AccountDerivationFailType get type => AccountDerivationFailType.derivatorNotFound; + + @override + String toString() => 'DerivatorNotFoundFailure'; +} + +class UnknownNotFoundFailure implements AccountDerivationFailure { + const UnknownNotFoundFailure(this.failure); + + final Object failure; + + @override + AccountDerivationFailType get type => AccountDerivationFailType.unknown; + + @override + String toString() => 'UnknownNotFoundFailure{fail: $failure}'; +} diff --git a/packages/transaction_signing_gateway/lib/model/account_derivation_info.dart b/packages/transaction_signing_gateway/lib/model/account_derivation_info.dart new file mode 100644 index 00000000..d8207bd9 --- /dev/null +++ b/packages/transaction_signing_gateway/lib/model/account_derivation_info.dart @@ -0,0 +1 @@ +abstract class AccountDerivationInfo {} diff --git a/packages/transaction_signing_gateway/lib/model/wallet_lookup_key.dart b/packages/transaction_signing_gateway/lib/model/account_lookup_key.dart similarity index 62% rename from packages/transaction_signing_gateway/lib/model/wallet_lookup_key.dart rename to packages/transaction_signing_gateway/lib/model/account_lookup_key.dart index 624c4456..6d429de2 100644 --- a/packages/transaction_signing_gateway/lib/model/wallet_lookup_key.dart +++ b/packages/transaction_signing_gateway/lib/model/account_lookup_key.dart @@ -1,20 +1,20 @@ import 'package:equatable/equatable.dart'; -class WalletLookupKey extends Equatable { - const WalletLookupKey({ +class AccountLookupKey extends Equatable { + const AccountLookupKey({ required this.chainId, - required this.walletId, + required this.accountId, required this.password, }); final String chainId; - final String walletId; + final String accountId; final String password; @override List get props => [ chainId, - walletId, + accountId, password, ]; } diff --git a/packages/transaction_signing_gateway/lib/model/wallet_public_info.dart b/packages/transaction_signing_gateway/lib/model/account_public_info.dart similarity index 68% rename from packages/transaction_signing_gateway/lib/model/wallet_public_info.dart rename to packages/transaction_signing_gateway/lib/model/account_public_info.dart index f396eda0..670466e8 100644 --- a/packages/transaction_signing_gateway/lib/model/wallet_public_info.dart +++ b/packages/transaction_signing_gateway/lib/model/account_public_info.dart @@ -1,27 +1,27 @@ import 'package:equatable/equatable.dart'; -class WalletPublicInfo extends Equatable { - const WalletPublicInfo({ +class AccountPublicInfo extends Equatable { + const AccountPublicInfo({ required this.name, required this.publicAddress, - required this.walletId, + required this.accountId, required this.chainId, this.additionalData, }); - /// a user-specified name to distinguish different wallets + /// a user-specified name to distinguish different accounts final String name; /// public hex address, for example "cosmos1ec4v57s7weuwatd36dgpjh8hj4gnj2cuut9sav" for cosmos-based chain /// or "0x9BCf3021B356F9352D3811fFCd4F778D63FdF208" for ethereum-based chain final String publicAddress; - /// a uuid of the wallet credentials, must be generated by client apps when importing wallet info, + /// a uuid of the account credentials, must be generated by client apps when importing account info, /// for example using uuid package: /// Uuid().v4() - final String walletId; + final String accountId; - /// Unique identifier for the blockchain that this wallet belongs to. + /// Unique identifier for the blockchain that this account belongs to. /// This string can be whatever the developer finds suitable, for example: /// "ethereum", "atom", "akash", "foo" or "bar" :) final String chainId; @@ -33,22 +33,22 @@ class WalletPublicInfo extends Equatable { List get props => [ name, publicAddress, - walletId, + accountId, chainId, additionalData, ]; - WalletPublicInfo copyWith({ + AccountPublicInfo copyWith({ String? name, String? publicAddress, - String? walletId, + String? accountId, String? chainId, String? additionalData, }) { - return WalletPublicInfo( + return AccountPublicInfo( name: name ?? this.name, publicAddress: publicAddress ?? this.publicAddress, - walletId: walletId ?? this.walletId, + accountId: accountId ?? this.accountId, chainId: chainId ?? this.chainId, additionalData: additionalData ?? this.additionalData, ); diff --git a/packages/transaction_signing_gateway/lib/model/wallet_public_info_serializer.dart b/packages/transaction_signing_gateway/lib/model/account_public_info_serializer.dart similarity index 60% rename from packages/transaction_signing_gateway/lib/model/wallet_public_info_serializer.dart rename to packages/transaction_signing_gateway/lib/model/account_public_info_serializer.dart index 3cc52ddb..41fe1bce 100644 --- a/packages/transaction_signing_gateway/lib/model/wallet_public_info_serializer.dart +++ b/packages/transaction_signing_gateway/lib/model/account_public_info_serializer.dart @@ -1,28 +1,28 @@ -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; //ignore: avoid_classes_with_only_static_members -class WalletPublicInfoSerializer { +class AccountPublicInfoSerializer { static const _nameKey = 'name'; static const _chainIdKey = 'chain_id'; static const _publicAddressKey = 'public_address'; - static const _walletIdKey = 'wallet_Id'; + static const _accountIdKey = 'wallet_Id'; static const _additionalDataKey = 'additional_data'; - static WalletPublicInfo fromMap(Map map) { - return WalletPublicInfo( + static AccountPublicInfo fromMap(Map map) { + return AccountPublicInfo( name: map[_nameKey] as String, publicAddress: map[_publicAddressKey] as String, - walletId: map[_walletIdKey] as String, + accountId: map[_accountIdKey] as String, chainId: map[_chainIdKey] as String, additionalData: map[_additionalDataKey] as String?, ); } - static Map toMap(WalletPublicInfo info) { + static Map toMap(AccountPublicInfo info) { return { _nameKey: info.name, _publicAddressKey: info.publicAddress, - _walletIdKey: info.walletId, + _accountIdKey: info.accountId, _chainIdKey: info.chainId, _additionalDataKey: info.additionalData, }; diff --git a/packages/transaction_signing_gateway/lib/model/private_wallet_credentials.dart b/packages/transaction_signing_gateway/lib/model/private_account_credentials.dart similarity index 52% rename from packages/transaction_signing_gateway/lib/model/private_wallet_credentials.dart rename to packages/transaction_signing_gateway/lib/model/private_account_credentials.dart index bf131c3b..3e0bc198 100644 --- a/packages/transaction_signing_gateway/lib/model/private_wallet_credentials.dart +++ b/packages/transaction_signing_gateway/lib/model/private_account_credentials.dart @@ -1,7 +1,7 @@ -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; -abstract class PrivateWalletCredentials { - WalletPublicInfo get publicInfo; +abstract class PrivateAccountCredentials { + AccountPublicInfo get publicInfo; String get mnemonic; diff --git a/packages/transaction_signing_gateway/lib/model/private_account_credentials_serializer.dart b/packages/transaction_signing_gateway/lib/model/private_account_credentials_serializer.dart new file mode 100644 index 00000000..902b368f --- /dev/null +++ b/packages/transaction_signing_gateway/lib/model/private_account_credentials_serializer.dart @@ -0,0 +1,11 @@ +import 'package:cosmos_utils/cosmos_utils.dart'; +import 'package:dartz/dartz.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; + +abstract class PrivateAccountCredentialsSerializer { + String get identifier; + + Either fromJson(Map json); + + Either> toJson(PrivateAccountCredentials credentials); +} diff --git a/packages/transaction_signing_gateway/lib/model/private_wallet_credentials_serializer.dart b/packages/transaction_signing_gateway/lib/model/private_wallet_credentials_serializer.dart deleted file mode 100644 index 229632e3..00000000 --- a/packages/transaction_signing_gateway/lib/model/private_wallet_credentials_serializer.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:cosmos_utils/cosmos_utils.dart'; -import 'package:dartz/dartz.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; - -abstract class PrivateWalletCredentialsSerializer { - String get identifier; - - Either fromJson(Map json); - - Either> toJson(PrivateWalletCredentials credentials); -} diff --git a/packages/transaction_signing_gateway/lib/model/transaction_broadcasting_failure.dart b/packages/transaction_signing_gateway/lib/model/transaction_broadcasting_failure.dart index b0fc0281..4112872f 100644 --- a/packages/transaction_signing_gateway/lib/model/transaction_broadcasting_failure.dart +++ b/packages/transaction_signing_gateway/lib/model/transaction_broadcasting_failure.dart @@ -1,6 +1,6 @@ enum TransactionBroadcastingFailType { noTransactionBroadcasterFound, - walletCredentialsStorageFailure, + accountCredentialsStorageFailure, unknown, } @@ -16,5 +16,5 @@ class TransactionBroadcasterNotFoundFailure extends TransactionBroadcastingFailu class StorageProblemBroadcastingFailure extends TransactionBroadcastingFailure { @override // TODO: implement type - TransactionBroadcastingFailType get type => TransactionBroadcastingFailType.walletCredentialsStorageFailure; + TransactionBroadcastingFailType get type => TransactionBroadcastingFailType.accountCredentialsStorageFailure; } diff --git a/packages/transaction_signing_gateway/lib/model/transaction_signing_failure.dart b/packages/transaction_signing_gateway/lib/model/transaction_signing_failure.dart index 235bc4dc..b875ab9a 100644 --- a/packages/transaction_signing_gateway/lib/model/transaction_signing_failure.dart +++ b/packages/transaction_signing_gateway/lib/model/transaction_signing_failure.dart @@ -4,7 +4,7 @@ enum TransactionSigningFailType { userDeclined, invalidPassword, noTransactionSignerFound, - walletCredentialsStorageFailure, + accountCredentialsStorageFailure, unknown, } @@ -39,7 +39,7 @@ class StorageProblemSigningFailure implements TransactionSigningFailure { final CredentialsStorageFailure failure; @override - TransactionSigningFailType get type => TransactionSigningFailType.walletCredentialsStorageFailure; + TransactionSigningFailType get type => TransactionSigningFailType.accountCredentialsStorageFailure; @override String toString() { diff --git a/packages/transaction_signing_gateway/lib/model/wallet_derivation_failure.dart b/packages/transaction_signing_gateway/lib/model/wallet_derivation_failure.dart deleted file mode 100644 index 2332b1ba..00000000 --- a/packages/transaction_signing_gateway/lib/model/wallet_derivation_failure.dart +++ /dev/null @@ -1,43 +0,0 @@ -enum WalletDerivationFailType { - invalidMnemonic, - derivatorNotFound, - unknown, -} - -abstract class WalletDerivationFailure { - WalletDerivationFailType get type; -} - -class InvalidMnemonicFailure implements WalletDerivationFailure { - const InvalidMnemonicFailure(this.failure); - - final Object failure; - - @override - WalletDerivationFailType get type => WalletDerivationFailType.invalidMnemonic; - - @override - String toString() => 'InvalidMnemonicFailure{fail: $failure}'; -} - -class DerivatorNotFoundFailure implements WalletDerivationFailure { - const DerivatorNotFoundFailure(); - - @override - WalletDerivationFailType get type => WalletDerivationFailType.derivatorNotFound; - - @override - String toString() => 'DerivatorNotFoundFailure'; -} - -class UnknownNotFoundFailure implements WalletDerivationFailure { - const UnknownNotFoundFailure(this.failure); - - final Object failure; - - @override - WalletDerivationFailType get type => WalletDerivationFailType.unknown; - - @override - String toString() => 'UnknownNotFoundFailure{fail: $failure}'; -} diff --git a/packages/transaction_signing_gateway/lib/model/wallet_derivation_info.dart b/packages/transaction_signing_gateway/lib/model/wallet_derivation_info.dart deleted file mode 100644 index fca98ddc..00000000 --- a/packages/transaction_signing_gateway/lib/model/wallet_derivation_info.dart +++ /dev/null @@ -1 +0,0 @@ -abstract class WalletDerivationInfo {} diff --git a/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart b/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart index cc752b3d..9ffdf5e4 100644 --- a/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart +++ b/packages/transaction_signing_gateway/lib/storage/cosmos_key_info_storage.dart @@ -5,12 +5,12 @@ import 'package:dartz/dartz.dart'; import 'package:flutter/foundation.dart'; import 'package:transaction_signing_gateway/encrypt/aes_cipher.dart'; import 'package:transaction_signing_gateway/encrypt/cipher.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials_serializer.dart'; +import 'package:transaction_signing_gateway/model/account_lookup_key.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; +import 'package:transaction_signing_gateway/model/account_public_info_serializer.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials_serializer.dart'; import 'package:transaction_signing_gateway/model/transaction_signing_failure.dart'; -import 'package:transaction_signing_gateway/model/wallet_lookup_key.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info_serializer.dart'; import 'package:transaction_signing_gateway/storage/key_info_storage.dart'; class CosmosKeyInfoStorage implements KeyInfoStorage { @@ -24,44 +24,44 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { _cipher = cipher ?? AESCipher(); static const _publicKeySuffix = ':public'; - final List serializers; + final List serializers; final SecureDataStore _secureDataStore; final PlainDataStore _plainDataStore; final Cipher _cipher; @override - Future> getPrivateCredentials( - WalletLookupKey walletLookupKey, + Future> getPrivateCredentials( + AccountLookupKey accountLookupKey, ) => _secureDataStore .readSecureText( key: _credentialsKey( - chainId: walletLookupKey.chainId, - walletId: walletLookupKey.walletId, + chainId: accountLookupKey.chainId, + accountId: accountLookupKey.accountId, ), ) .zipWith( _findDeserializer( _serializerIdKey( - chainId: walletLookupKey.chainId, - walletId: walletLookupKey.walletId, + chainId: accountLookupKey.chainId, + accountId: accountLookupKey.accountId, ), ), ) - .flatMap( + .flatMap( (tuple) async { final data = tuple.value1; final serializer = tuple.value2; if (data == null) { - return left(CredentialsStorageFailure('Could not find credentials for $walletLookupKey')); + return left(CredentialsStorageFailure('Could not find credentials for $accountLookupKey')); } if (serializer == null) { - return left(CredentialsStorageFailure('Could not find proper deserializer for $walletLookupKey')); + return left(CredentialsStorageFailure('Could not find proper deserializer for $accountLookupKey')); } try { - final decrypted = _cipher.decrypt(password: walletLookupKey.password, encryptedData: data); + final decrypted = _cipher.decrypt(password: accountLookupKey.password, encryptedData: data); final json = await compute(jsonDecode, decrypted) as Map; return serializer.fromJson(json); } catch (error) { @@ -72,45 +72,45 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { fail: logError, ); - String _credentialsKey({required String chainId, required String walletId}) => '$chainId:$walletId'; + String _credentialsKey({required String chainId, required String accountId}) => '$chainId:$accountId'; - String _publicInfoKey({required String chainId, required String walletId}) => '$chainId:$walletId$_publicKeySuffix'; + String _publicInfoKey({required String chainId, required String accountId}) => '$chainId:$accountId$_publicKeySuffix'; bool _isPublicInfoKey(String key) => key.endsWith(_publicKeySuffix); - String _serializerIdKey({required String chainId, required String walletId}) => '$chainId:$walletId:serializer'; + String _serializerIdKey({required String chainId, required String accountId}) => '$chainId:$accountId:serializer'; @override Future> savePrivateCredentials({ - required PrivateWalletCredentials walletCredentials, + required PrivateAccountCredentials accountCredentials, required String password, }) async { - final serializer = _findSerializer(walletCredentials); + final serializer = _findSerializer(accountCredentials); if (serializer == null) { return left( - CredentialsStorageFailure('Could not find proper serializer for ${walletCredentials.runtimeType}'), + CredentialsStorageFailure('Could not find proper serializer for ${accountCredentials.runtimeType}'), ); } final credsKey = _credentialsKey( - chainId: walletCredentials.publicInfo.chainId, - walletId: walletCredentials.publicInfo.walletId, + chainId: accountCredentials.publicInfo.chainId, + accountId: accountCredentials.publicInfo.accountId, ); final serializerKey = _serializerIdKey( - chainId: walletCredentials.publicInfo.chainId, - walletId: walletCredentials.publicInfo.walletId, + chainId: accountCredentials.publicInfo.chainId, + accountId: accountCredentials.publicInfo.accountId, ); final publicInfoKey = _publicInfoKey( - chainId: walletCredentials.publicInfo.chainId, - walletId: walletCredentials.publicInfo.walletId, + chainId: accountCredentials.publicInfo.chainId, + accountId: accountCredentials.publicInfo.accountId, ); - final publicInfoJson = await compute(jsonEncode, WalletPublicInfoSerializer.toMap(walletCredentials.publicInfo)); - return Future.value(serializer.toJson(walletCredentials)) + final publicInfoJson = await compute(jsonEncode, AccountPublicInfoSerializer.toMap(accountCredentials.publicInfo)); + return Future.value(serializer.toJson(accountCredentials)) .flatMap((jsonMap) async => right(await compute(jsonEncode, jsonMap))) .flatMap((jsonString) async { final encrypted = _cipher.encrypt(password: password, data: jsonString); return _secureDataStore.saveSecureText(key: credsKey, value: encrypted); }).flatMap((_) { - return _plainDataStore.savePlainText(key: serializerKey, value: walletCredentials.serializerIdentifier); + return _plainDataStore.savePlainText(key: serializerKey, value: accountCredentials.serializerIdentifier); }).flatMap((_) { return _plainDataStore.savePlainText(key: publicInfoKey, value: publicInfoJson); }).map((_) { @@ -119,20 +119,20 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { } @override - Future> deleteWalletCredentials({ - required WalletPublicInfo publicInfo, + Future> deleteAccountCredentials({ + required AccountPublicInfo publicInfo, }) async { final credsKey = _credentialsKey( chainId: publicInfo.chainId, - walletId: publicInfo.walletId, + accountId: publicInfo.accountId, ); final serializerKey = _serializerIdKey( chainId: publicInfo.chainId, - walletId: publicInfo.walletId, + accountId: publicInfo.accountId, ); final publicInfoKey = _publicInfoKey( chainId: publicInfo.chainId, - walletId: publicInfo.walletId, + accountId: publicInfo.accountId, ); return _secureDataStore.saveSecureText(key: credsKey, value: null).flatMap((_) { @@ -145,7 +145,7 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { } @override - Future>> getWalletsList() async => + Future>> getAccountsList() async => _plainDataStore.readAllPlainText().flatMap( (storageMap) async { try { @@ -154,7 +154,7 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { .map((key) { return jsonDecode(storageMap[key] ?? '') as Map; }) - .map(WalletPublicInfoSerializer.fromMap) + .map(AccountPublicInfoSerializer.fromMap) .toList(); return right(infos); } catch (e) { @@ -163,7 +163,7 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { }, ); - Future> _findDeserializer( + Future> _findDeserializer( String serializerIdKey, ) => _plainDataStore.readPlainText(key: serializerIdKey).flatMap( @@ -172,7 +172,7 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { return right(null); } return right( - serializers.cast().firstWhere( + serializers.cast().firstWhere( (element) => element?.identifier == identifier, orElse: () => null, ), @@ -180,32 +180,32 @@ class CosmosKeyInfoStorage implements KeyInfoStorage { }, ); - PrivateWalletCredentialsSerializer? _findSerializer(PrivateWalletCredentials creds) => - serializers.cast().firstWhere( + PrivateAccountCredentialsSerializer? _findSerializer(PrivateAccountCredentials creds) => + serializers.cast().firstWhere( (element) => element?.identifier == creds.serializerIdentifier, orElse: () => null, ); @override - Future> verifyLookupKey(WalletLookupKey walletLookupKey) async { - final privateCreds = await getPrivateCredentials(walletLookupKey); + Future> verifyLookupKey(AccountLookupKey accountLookupKey) async { + final privateCreds = await getPrivateCredentials(accountLookupKey); return right(privateCreds.isRight()); } @override - Future> updatePublicWalletInfo({required WalletPublicInfo info}) async { + Future> updatePublicAccountInfo({required AccountPublicInfo info}) async { try { final publicInfoKey = _publicInfoKey( chainId: info.chainId, - walletId: info.walletId, + accountId: info.accountId, ); - return _plainDataStore.readPlainText(key: publicInfoKey).flatMap((walletInfo) async { - if (walletInfo == null) { - return left(const CredentialsStorageFailure('Wallet not found')); + return _plainDataStore.readPlainText(key: publicInfoKey).flatMap((accountInfo) async { + if (accountInfo == null) { + return left(const CredentialsStorageFailure('Account not found')); } - final publicInfoJson = await compute(jsonEncode, WalletPublicInfoSerializer.toMap(info)); + final publicInfoJson = await compute(jsonEncode, AccountPublicInfoSerializer.toMap(info)); return _plainDataStore.savePlainText(key: publicInfoKey, value: publicInfoJson); }); } catch (e, stack) { diff --git a/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart b/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart index 0965c15f..4575c46f 100644 --- a/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart +++ b/packages/transaction_signing_gateway/lib/storage/key_info_storage.dart @@ -1,27 +1,27 @@ import 'package:cosmos_utils/cosmos_utils.dart'; import 'package:dartz/dartz.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; +import 'package:transaction_signing_gateway/model/account_lookup_key.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; import 'package:transaction_signing_gateway/model/transaction_signing_failure.dart'; -import 'package:transaction_signing_gateway/model/wallet_lookup_key.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; abstract class KeyInfoStorage { - Future> getPrivateCredentials( - WalletLookupKey walletLookupKey, + Future> getPrivateCredentials( + AccountLookupKey accountLookupKey, ); Future> savePrivateCredentials({ - required PrivateWalletCredentials walletCredentials, + required PrivateAccountCredentials accountCredentials, required String password, }); - Future> deleteWalletCredentials({required WalletPublicInfo publicInfo}); + Future> deleteAccountCredentials({required AccountPublicInfo publicInfo}); - Future> updatePublicWalletInfo({ - required WalletPublicInfo info, + Future> updatePublicAccountInfo({ + required AccountPublicInfo info, }); - Future>> getWalletsList(); + Future>> getAccountsList(); - Future> verifyLookupKey(WalletLookupKey walletLookupKey); + Future> verifyLookupKey(AccountLookupKey accountLookupKey); } diff --git a/packages/transaction_signing_gateway/lib/transaction_broadcaster.dart b/packages/transaction_signing_gateway/lib/transaction_broadcaster.dart index 0562e32f..c0ca3dcf 100644 --- a/packages/transaction_signing_gateway/lib/transaction_broadcaster.dart +++ b/packages/transaction_signing_gateway/lib/transaction_broadcaster.dart @@ -1,5 +1,5 @@ import 'package:dartz/dartz.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; import 'package:transaction_signing_gateway/model/signed_transaction.dart'; import 'package:transaction_signing_gateway/model/transaction_broadcasting_failure.dart'; import 'package:transaction_signing_gateway/model/transaction_hash.dart'; @@ -7,7 +7,7 @@ import 'package:transaction_signing_gateway/model/transaction_hash.dart'; abstract class TransactionBroadcaster { Future> broadcast({ required SignedTransaction transaction, - required PrivateWalletCredentials privateWalletCredentials, + required PrivateAccountCredentials privateAccountCredentials, }); bool canBroadcast(SignedTransaction signedTransaction); @@ -17,7 +17,7 @@ class NotFoundBroadcaster implements TransactionBroadcaster { @override Future> broadcast({ required SignedTransaction transaction, - required PrivateWalletCredentials privateWalletCredentials, + required PrivateAccountCredentials privateAccountCredentials, }) async => left(TransactionBroadcasterNotFoundFailure()); diff --git a/packages/transaction_signing_gateway/lib/transaction_signer.dart b/packages/transaction_signing_gateway/lib/transaction_signer.dart index c2344205..641b2561 100644 --- a/packages/transaction_signing_gateway/lib/transaction_signer.dart +++ b/packages/transaction_signing_gateway/lib/transaction_signer.dart @@ -7,7 +7,7 @@ abstract class TransactionSigner { /// /// Returns [SignedTransaction] on successful sign, or [TransactionSigningFailure] otherwise. Future> sign({ - required PrivateWalletCredentials privateCredentials, + required PrivateAccountCredentials privateCredentials, required UnsignedTransaction transaction, }); @@ -25,7 +25,7 @@ class NotFoundTransactionSigner implements TransactionSigner { @override Future> sign({ - required PrivateWalletCredentials privateCredentials, + required PrivateAccountCredentials privateCredentials, required UnsignedTransaction transaction, }) async => left(const TransactionSignerNotFoundFailure()); diff --git a/packages/transaction_signing_gateway/lib/transaction_signing_gateway.dart b/packages/transaction_signing_gateway/lib/transaction_signing_gateway.dart index c4985a98..1024b165 100644 --- a/packages/transaction_signing_gateway/lib/transaction_signing_gateway.dart +++ b/packages/transaction_signing_gateway/lib/transaction_signing_gateway.dart @@ -1,18 +1,18 @@ library transaction_signing_gateway; export 'package:transaction_signing_gateway/alan/alan_credentials_serializer.dart'; -export 'package:transaction_signing_gateway/alan/alan_private_wallet_credentials.dart'; +export 'package:transaction_signing_gateway/alan/alan_private_account_credentials.dart'; export 'package:transaction_signing_gateway/alan/alan_transaction.dart'; export 'package:transaction_signing_gateway/alan/alan_transaction_broadcaster.dart'; export 'package:transaction_signing_gateway/alan/alan_transaction_signer.dart'; export 'package:transaction_signing_gateway/encrypt/aes_cipher.dart'; export 'package:transaction_signing_gateway/encrypt/cipher.dart'; export 'package:transaction_signing_gateway/gateway/transaction_signing_gateway.dart'; -export 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; -export 'package:transaction_signing_gateway/model/private_wallet_credentials_serializer.dart'; +export 'package:transaction_signing_gateway/model/account_public_info.dart'; +export 'package:transaction_signing_gateway/model/private_account_credentials.dart'; +export 'package:transaction_signing_gateway/model/private_account_credentials_serializer.dart'; export 'package:transaction_signing_gateway/model/signed_transaction.dart'; export 'package:transaction_signing_gateway/model/unsigned_transaction.dart'; -export 'package:transaction_signing_gateway/model/wallet_public_info.dart'; export 'package:transaction_signing_gateway/storage/biometric_data_store.dart'; export 'package:transaction_signing_gateway/storage/cosmos_key_info_storage.dart'; export 'package:transaction_signing_gateway/storage/flutter_secure_storage_data_store.dart'; diff --git a/packages/transaction_signing_gateway/lib/wallet_derivator.dart b/packages/transaction_signing_gateway/lib/wallet_derivator.dart deleted file mode 100644 index ee7d3c44..00000000 --- a/packages/transaction_signing_gateway/lib/wallet_derivator.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:dartz/dartz.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/model/wallet_derivation_failure.dart'; -import 'package:transaction_signing_gateway/model/wallet_derivation_info.dart'; - -abstract class WalletDerivator { - Future> derive({ - required WalletDerivationInfo walletDerivationInfo, - }); - - bool canDerive(WalletDerivationInfo walletDerivationInfo); -} - -class NotFoundDerivator implements WalletDerivator { - @override - bool canDerive(WalletDerivationInfo walletDerivationInfo) => true; - - @override - Future> derive({ - required WalletDerivationInfo walletDerivationInfo, - }) async => - left(const DerivatorNotFoundFailure()); -} diff --git a/packages/transaction_signing_gateway/test/account_public_info_serializer_test.dart b/packages/transaction_signing_gateway/test/account_public_info_serializer_test.dart new file mode 100644 index 00000000..6689be47 --- /dev/null +++ b/packages/transaction_signing_gateway/test/account_public_info_serializer_test.dart @@ -0,0 +1,41 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; +import 'package:transaction_signing_gateway/model/account_public_info_serializer.dart'; + +void main() { + late AccountPublicInfo publicInfo; + + setUp(() { + publicInfo = const AccountPublicInfo( + name: 'a name', + publicAddress: 'cosmos1wze8mn5nsgl9qrgazc6f92fve7m5e6psjcx2du', + accountId: 'fc74d409-3945-4f53-ba76-a03b3cee7865', + chainId: 'cosmoshub', + additionalData: 'additional data', + ); + }); + + test('serializes account info', () async { + final map = AccountPublicInfoSerializer.toMap(publicInfo); + final info = AccountPublicInfoSerializer.fromMap(map); + expect(map['name'], publicInfo.name); + expect(map['chain_id'], publicInfo.chainId); + expect(map['public_address'], publicInfo.publicAddress); + expect(map['wallet_Id'], publicInfo.accountId); + expect(map['additional_data'], publicInfo.additionalData); + expect(info, publicInfo); + }); + + test('serializes account info', () async { + final infoWithoutAdditionalData = AccountPublicInfo( + name: publicInfo.name, + publicAddress: publicInfo.publicAddress, + accountId: publicInfo.accountId, + chainId: publicInfo.chainId, + ); + final map = AccountPublicInfoSerializer.toMap(infoWithoutAdditionalData); + final info = AccountPublicInfoSerializer.fromMap(map); + expect(map['additional_data'], null); + expect(info.additionalData, null); + }); +} diff --git a/packages/transaction_signing_gateway/test/alan_credentials_serializer_test.dart b/packages/transaction_signing_gateway/test/alan_credentials_serializer_test.dart index e0fd4952..52d7b9bb 100644 --- a/packages/transaction_signing_gateway/test/alan_credentials_serializer_test.dart +++ b/packages/transaction_signing_gateway/test/alan_credentials_serializer_test.dart @@ -1,16 +1,16 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:transaction_signing_gateway/alan/alan_credentials_serializer.dart'; -import 'package:transaction_signing_gateway/alan/alan_private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; +import 'package:transaction_signing_gateway/alan/alan_private_account_credentials.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; void main() { group('Alan Serializer tests', () { final serializer = AlanCredentialsSerializer(); - const credentials = AlanPrivateWalletCredentials( + const credentials = AlanPrivateAccountCredentials( mnemonic: 'mnemonic', - publicInfo: WalletPublicInfo( + publicInfo: AccountPublicInfo( chainId: 'chainId', - walletId: 'walletId', + accountId: 'walletId', name: 'name', publicAddress: 'cosmos1ec4v57s7weuwatd36dgpjh8hj4gnj2cuut9sav', ), @@ -21,7 +21,7 @@ void main() { expect(jsonResult.isRight(), true); final credentialsResult = jsonResult.flatMap(serializer.fromJson); expect(credentialsResult.isRight(), true); - final alanCredsResult = credentialsResult.getOrElse(() => throw '') as AlanPrivateWalletCredentials; + final alanCredsResult = credentialsResult.getOrElse(() => throw '') as AlanPrivateAccountCredentials; expect(alanCredsResult, credentials); }); }); diff --git a/packages/transaction_signing_gateway/test/mobile_key_info_storage_test.dart b/packages/transaction_signing_gateway/test/mobile_key_info_storage_test.dart index 07e7f81f..eed73ef8 100644 --- a/packages/transaction_signing_gateway/test/mobile_key_info_storage_test.dart +++ b/packages/transaction_signing_gateway/test/mobile_key_info_storage_test.dart @@ -1,14 +1,14 @@ import 'package:flutter_test/flutter_test.dart'; -import 'package:transaction_signing_gateway/model/wallet_lookup_key.dart'; +import 'package:transaction_signing_gateway/model/account_lookup_key.dart'; import 'package:transaction_signing_gateway/transaction_signing_gateway.dart'; -import 'mocks/private_wallet_credentials_mock.dart'; +import 'mocks/private_account_credentials_mock.dart'; import 'mocks/test_memory_store.dart'; void main() { group('MobileKeyInfoStorage', () { const chainId = 'atom'; - const walletId = '123walletId'; + const accountId = '123walletId'; const password = 'coolPassword123'; const name = 'name'; const publicAddress = 'cosmos1wze8mn5nsgl9qrgazq6a92fvh7m5e6psjcx2du'; @@ -16,20 +16,20 @@ void main() { const mnemonic = 'fruit talent run shallow police ripple wheat original cabbage vendor tilt income gasp meat acid annual armed system target great oxygen artist net elegant'; - const privateCredsStub = PrivateWalletCredentialsMock( - publicInfo: WalletPublicInfo( + const privateCredsStub = PrivateAccountCredentialsMock( + publicInfo: AccountPublicInfo( name: name, publicAddress: publicAddress, - walletId: walletId, + accountId: accountId, chainId: chainId, ), mnemonic: mnemonic, ); - const privateCredsStub2 = PrivateWalletCredentialsMock( - publicInfo: WalletPublicInfo( + const privateCredsStub2 = PrivateAccountCredentialsMock( + publicInfo: AccountPublicInfo( name: '$name 2', publicAddress: publicAddress2, - walletId: '${walletId}2', + accountId: '${accountId}2', chainId: '${chainId}2', ), mnemonic: mnemonic, @@ -41,13 +41,13 @@ void main() { ); // test('save and retrieve creds', () async { - final saveResult = await storage.savePrivateCredentials(walletCredentials: privateCredsStub, password: password); + final saveResult = await storage.savePrivateCredentials(accountCredentials: privateCredsStub, password: password); expect(saveResult.isRight(), true, reason: '$saveResult'); final readResult = await storage.getPrivateCredentials( - const WalletLookupKey( + const AccountLookupKey( chainId: chainId, - walletId: walletId, + accountId: accountId, password: password, ), ); @@ -57,10 +57,10 @@ void main() { // test('retrieve public infos', () async { - await storage.savePrivateCredentials(walletCredentials: privateCredsStub, password: password); - await storage.savePrivateCredentials(walletCredentials: privateCredsStub2, password: password); + await storage.savePrivateCredentials(accountCredentials: privateCredsStub, password: password); + await storage.savePrivateCredentials(accountCredentials: privateCredsStub2, password: password); - final readResult = await storage.getWalletsList(); + final readResult = await storage.getAccountsList(); expect(readResult.isRight(), true, reason: '$readResult'); final list = readResult.getOrElse(() => throw AssertionError()); expect(list[0], privateCredsStub.publicInfo); diff --git a/packages/transaction_signing_gateway/test/mocks/key_info_storage_mock.dart b/packages/transaction_signing_gateway/test/mocks/key_info_storage_mock.dart index 1ab9aa2d..b7e14826 100644 --- a/packages/transaction_signing_gateway/test/mocks/key_info_storage_mock.dart +++ b/packages/transaction_signing_gateway/test/mocks/key_info_storage_mock.dart @@ -1,11 +1,11 @@ import 'package:cosmos_utils/cosmos_utils.dart'; import 'package:dartz/dartz.dart'; import 'package:mockito/mockito.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/model/wallet_lookup_key.dart'; +import 'package:transaction_signing_gateway/model/account_lookup_key.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; import 'package:transaction_signing_gateway/storage/key_info_storage.dart'; -typedef KeyInfoRetriever = Future> Function( +typedef KeyInfoRetriever = Future> Function( String, String, String, @@ -19,19 +19,19 @@ class KeyInfoStorageMock extends Mock implements KeyInfoStorage { KeyInfoRetriever keyInfoRetriever; @override - Future> getPrivateCredentials( - WalletLookupKey? walletLookupKey, + Future> getPrivateCredentials( + AccountLookupKey? accountLookupKey, ) => super.noSuchMethod( Invocation.method( #getPrivateCredentials, [ - walletLookupKey, + accountLookupKey, ], {}, ), - returnValue: Future>.value( + returnValue: Future>.value( left(const CredentialsStorageFailure('not mocked')), ), - ) as Future>; + ) as Future>; } diff --git a/packages/transaction_signing_gateway/test/mocks/private_wallet_credentials_mock.dart b/packages/transaction_signing_gateway/test/mocks/private_account_credentials_mock.dart similarity index 61% rename from packages/transaction_signing_gateway/test/mocks/private_wallet_credentials_mock.dart rename to packages/transaction_signing_gateway/test/mocks/private_account_credentials_mock.dart index 2ec654b8..d4e562fc 100644 --- a/packages/transaction_signing_gateway/test/mocks/private_wallet_credentials_mock.dart +++ b/packages/transaction_signing_gateway/test/mocks/private_account_credentials_mock.dart @@ -1,12 +1,12 @@ import 'package:cosmos_utils/cosmos_utils.dart'; import 'package:dartz/dartz.dart'; import 'package:equatable/equatable.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials.dart'; -import 'package:transaction_signing_gateway/model/private_wallet_credentials_serializer.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials_serializer.dart'; -class PrivateWalletCredentialsMock extends Equatable implements PrivateWalletCredentials { - const PrivateWalletCredentialsMock({ +class PrivateAccountCredentialsMock extends Equatable implements PrivateAccountCredentials { + const PrivateAccountCredentialsMock({ required this.mnemonic, required this.publicInfo, }); @@ -15,7 +15,7 @@ class PrivateWalletCredentialsMock extends Equatable implements PrivateWalletCre final String mnemonic; @override - final WalletPublicInfo publicInfo; + final AccountPublicInfo publicInfo; @override String get serializerIdentifier => TestPrivateCredentialsSerializer.sIdentifier; @@ -28,19 +28,19 @@ class PrivateWalletCredentialsMock extends Equatable implements PrivateWalletCre ]; } -class TestPrivateCredentialsSerializer implements PrivateWalletCredentialsSerializer { +class TestPrivateCredentialsSerializer implements PrivateAccountCredentialsSerializer { static const String sIdentifier = 'TestPrivateCredentialsSerializer'; @override - Either fromJson( + Either fromJson( Map json, ) { try { return right( - PrivateWalletCredentialsMock( - publicInfo: WalletPublicInfo( + PrivateAccountCredentialsMock( + publicInfo: AccountPublicInfo( chainId: json['chainId'] as String, - walletId: json['walletId'] as String, + accountId: json['walletId'] as String, name: json['name'] as String, publicAddress: json['publicAddress'] as String, ), @@ -57,11 +57,11 @@ class TestPrivateCredentialsSerializer implements PrivateWalletCredentialsSerial @override Either> toJson( - PrivateWalletCredentials credentials, + PrivateAccountCredentials credentials, ) => right({ 'chainId': credentials.publicInfo.chainId, - 'walletId': credentials.publicInfo.walletId, + 'walletId': credentials.publicInfo.accountId, 'mnemonic': credentials.mnemonic, 'name': credentials.publicInfo.name, 'publicAddress': credentials.publicInfo.publicAddress diff --git a/packages/transaction_signing_gateway/test/transaction_signing_gateway_test.dart b/packages/transaction_signing_gateway/test/transaction_signing_gateway_test.dart index 6ee5ab06..d910dd10 100644 --- a/packages/transaction_signing_gateway/test/transaction_signing_gateway_test.dart +++ b/packages/transaction_signing_gateway/test/transaction_signing_gateway_test.dart @@ -2,12 +2,12 @@ import 'package:cosmos_utils/cosmos_utils.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; +import 'package:transaction_signing_gateway/model/account_lookup_key.dart'; import 'package:transaction_signing_gateway/model/transaction_signing_failure.dart'; -import 'package:transaction_signing_gateway/model/wallet_lookup_key.dart'; import 'package:transaction_signing_gateway/transaction_signing_gateway.dart'; import 'mocks/key_info_storage_mock.dart'; -import 'mocks/private_wallet_credentials_mock.dart'; +import 'mocks/private_account_credentials_mock.dart'; import 'mocks/transaction_summary_ui_mock.dart'; void main() { @@ -16,16 +16,16 @@ void main() { late KeyInfoStorageMock infoStorage; late TransactionSigningGateway signingGateway; const chainId = 'atom'; - const walletId = '123walletId'; + const accountId = '123walletId'; const publicAddress = 'cosmos1wze8mn5nsgl9qrgazq6a92fvh7m5e6psjcx2du'; const name = 'name'; const mnemonic = 'fruit talent run shallow police ripple wheat original cabbage vendor tilt income gasp meat acid annual armed system target great oxygen artist net elegant'; - const privateCredsStub = PrivateWalletCredentialsMock( - publicInfo: WalletPublicInfo( + const privateCredsStub = PrivateAccountCredentialsMock( + publicInfo: AccountPublicInfo( name: name, publicAddress: publicAddress, - walletId: walletId, + accountId: accountId, chainId: chainId, ), mnemonic: mnemonic, @@ -38,10 +38,10 @@ void main() { // WHEN final result = await signingGateway.signTransaction( transaction: UnsignedTransaction(), - walletLookupKey: const WalletLookupKey( + accountLookupKey: const AccountLookupKey( chainId: chainId, password: 'password', - walletId: walletId, + accountId: accountId, ), ); // THEN @@ -59,10 +59,10 @@ void main() { // WHEN final result = await signingGateway.signTransaction( transaction: UnsignedTransaction(), - walletLookupKey: const WalletLookupKey( + accountLookupKey: const AccountLookupKey( chainId: chainId, password: 'password', - walletId: walletId, + accountId: accountId, ), ); // THEN @@ -79,10 +79,10 @@ void main() { // WHEN final result = await signingGateway.signTransaction( transaction: UnsignedTransaction(), - walletLookupKey: const WalletLookupKey( + accountLookupKey: const AccountLookupKey( chainId: chainId, password: 'password', - walletId: walletId, + accountId: accountId, ), ); // THEN diff --git a/packages/transaction_signing_gateway/test/wallet_public_info_serializer_test.dart b/packages/transaction_signing_gateway/test/wallet_public_info_serializer_test.dart deleted file mode 100644 index 07481eeb..00000000 --- a/packages/transaction_signing_gateway/test/wallet_public_info_serializer_test.dart +++ /dev/null @@ -1,41 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info.dart'; -import 'package:transaction_signing_gateway/model/wallet_public_info_serializer.dart'; - -void main() { - late WalletPublicInfo publicInfo; - - setUp(() { - publicInfo = const WalletPublicInfo( - name: 'a name', - publicAddress: 'cosmos1wze8mn5nsgl9qrgazc6f92fve7m5e6psjcx2du', - walletId: 'fc74d409-3945-4f53-ba76-a03b3cee7865', - chainId: 'cosmoshub', - additionalData: 'additional data', - ); - }); - - test('serializes wallet info', () async { - final map = WalletPublicInfoSerializer.toMap(publicInfo); - final info = WalletPublicInfoSerializer.fromMap(map); - expect(map['name'], publicInfo.name); - expect(map['chain_id'], publicInfo.chainId); - expect(map['public_address'], publicInfo.publicAddress); - expect(map['wallet_Id'], publicInfo.walletId); - expect(map['additional_data'], publicInfo.additionalData); - expect(info, publicInfo); - }); - - test('serializes wallet info', () async { - final infoWithoutAdditionalData = WalletPublicInfo( - name: publicInfo.name, - publicAddress: publicInfo.publicAddress, - walletId: publicInfo.walletId, - chainId: publicInfo.chainId, - ); - final map = WalletPublicInfoSerializer.toMap(infoWithoutAdditionalData); - final info = WalletPublicInfoSerializer.fromMap(map); - expect(map['additional_data'], null); - expect(info.additionalData, null); - }); -} From 565eaebec137e187f87f59cabb6d3bd7c44cbbbc Mon Sep 17 00:00:00 2001 From: waleedarshad Date: Thu, 3 Mar 2022 12:21:01 +0500 Subject: [PATCH 2/9] Fix formatting issues --- .../lib/alan/alan_transaction_broadcaster.dart | 3 ++- .../lib/gateway/transaction_signing_gateway.dart | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart b/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart index 49702147..c8e597c2 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart @@ -22,7 +22,8 @@ class AlanTransactionBroadcaster implements TransactionBroadcaster { return left(AlanTransactionBroadcastingFailure('passed transaction is not $SignedAlanTransaction')); } if (privateAccountCredentials is! AlanPrivateAccountCredentials) { - return left(AlanTransactionBroadcastingFailure('passed privateCredentials is not $AlanPrivateAccountCredentials')); + return left( + AlanTransactionBroadcastingFailure('passed privateCredentials is not $AlanPrivateAccountCredentials')); } final txSender = TxSender.fromNetworkInfo(_networkInfo); final response = diff --git a/packages/transaction_signing_gateway/lib/gateway/transaction_signing_gateway.dart b/packages/transaction_signing_gateway/lib/gateway/transaction_signing_gateway.dart index 88c8e659..b9bcdf27 100644 --- a/packages/transaction_signing_gateway/lib/gateway/transaction_signing_gateway.dart +++ b/packages/transaction_signing_gateway/lib/gateway/transaction_signing_gateway.dart @@ -1,17 +1,17 @@ import 'package:cosmos_utils/cosmos_utils.dart'; import 'package:dartz/dartz.dart'; +import 'package:transaction_signing_gateway/account_derivator.dart'; import 'package:transaction_signing_gateway/alan/alan_account_derivator.dart'; import 'package:transaction_signing_gateway/mobile/no_op_transaction_summary_ui.dart'; -import 'package:transaction_signing_gateway/model/transaction_broadcasting_failure.dart'; -import 'package:transaction_signing_gateway/model/transaction_hash.dart'; -import 'package:transaction_signing_gateway/model/transaction_signing_failure.dart'; import 'package:transaction_signing_gateway/model/account_derivation_failure.dart'; import 'package:transaction_signing_gateway/model/account_derivation_info.dart'; import 'package:transaction_signing_gateway/model/account_lookup_key.dart'; +import 'package:transaction_signing_gateway/model/transaction_broadcasting_failure.dart'; +import 'package:transaction_signing_gateway/model/transaction_hash.dart'; +import 'package:transaction_signing_gateway/model/transaction_signing_failure.dart'; import 'package:transaction_signing_gateway/transaction_broadcaster.dart'; import 'package:transaction_signing_gateway/transaction_signing_gateway.dart'; import 'package:transaction_signing_gateway/transaction_summary_ui.dart'; -import 'package:transaction_signing_gateway/account_derivator.dart'; class TransactionSigningGateway { TransactionSigningGateway({ @@ -106,7 +106,8 @@ class TransactionSigningGateway { }) async => _findCapableDerivator(accountDerivationInfo).derive(accountDerivationInfo: accountDerivationInfo); - Future>> getAccountsList() => _infoStorage.getAccountsList(); + Future>> getAccountsList() => + _infoStorage.getAccountsList(); /// Verifies if passed lookupKey is pointing to a valid account stored within the secure storage. Future> verifyLookupKey(AccountLookupKey accountLookupKey) => From e357cb1701394a87d506ec5f6d86e9e1b515f57d Mon Sep 17 00:00:00 2001 From: waleedarshad Date: Thu, 3 Mar 2022 12:26:34 +0500 Subject: [PATCH 3/9] Fix formatting issues --- .../lib/alan/alan_account_derivator.dart | 4 ++-- .../lib/alan/alan_credentials_serializer.dart | 2 +- .../lib/alan/alan_private_account_credentials.dart | 2 +- .../lib/alan/alan_transaction_broadcaster.dart | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/transaction_signing_gateway/lib/alan/alan_account_derivator.dart b/packages/transaction_signing_gateway/lib/alan/alan_account_derivator.dart index 15f3a148..4725e9c8 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_account_derivator.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_account_derivator.dart @@ -1,13 +1,13 @@ import 'package:alan/alan.dart' as alan; import 'package:dartz/dartz.dart'; import 'package:flutter/foundation.dart'; +import 'package:transaction_signing_gateway/account_derivator.dart'; import 'package:transaction_signing_gateway/alan/alan_account_derivation_info.dart'; import 'package:transaction_signing_gateway/alan/alan_private_account_credentials.dart'; -import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; import 'package:transaction_signing_gateway/model/account_derivation_failure.dart'; import 'package:transaction_signing_gateway/model/account_derivation_info.dart'; import 'package:transaction_signing_gateway/model/account_public_info.dart'; -import 'package:transaction_signing_gateway/account_derivator.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; import 'package:uuid/uuid.dart'; class AlanAccountDerivator implements AccountDerivator { diff --git a/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart b/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart index 97ed791a..72f2c9e9 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart @@ -2,9 +2,9 @@ import 'package:cosmos_utils/cosmos_utils.dart'; import 'package:dartz/dartz.dart'; import 'package:flutter/foundation.dart'; import 'package:transaction_signing_gateway/alan/alan_private_account_credentials.dart'; +import 'package:transaction_signing_gateway/model/account_public_info.dart'; import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; import 'package:transaction_signing_gateway/model/private_account_credentials_serializer.dart'; -import 'package:transaction_signing_gateway/model/account_public_info.dart'; class AlanCredentialsSerializer implements PrivateAccountCredentialsSerializer { static const id = 'AlanCredentialsSerializer'; diff --git a/packages/transaction_signing_gateway/lib/alan/alan_private_account_credentials.dart b/packages/transaction_signing_gateway/lib/alan/alan_private_account_credentials.dart index a2df7e1b..5ca3f2f1 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_private_account_credentials.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_private_account_credentials.dart @@ -1,8 +1,8 @@ import 'package:alan/alan.dart' as alan; import 'package:equatable/equatable.dart'; import 'package:transaction_signing_gateway/alan/alan_credentials_serializer.dart'; -import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; import 'package:transaction_signing_gateway/model/account_public_info.dart'; +import 'package:transaction_signing_gateway/model/private_account_credentials.dart'; class AlanPrivateAccountCredentials extends Equatable implements PrivateAccountCredentials { const AlanPrivateAccountCredentials({ diff --git a/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart b/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart index c8e597c2..a623c838 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_transaction_broadcaster.dart @@ -23,7 +23,8 @@ class AlanTransactionBroadcaster implements TransactionBroadcaster { } if (privateAccountCredentials is! AlanPrivateAccountCredentials) { return left( - AlanTransactionBroadcastingFailure('passed privateCredentials is not $AlanPrivateAccountCredentials')); + AlanTransactionBroadcastingFailure('passed privateCredentials is not $AlanPrivateAccountCredentials'), + ); } final txSender = TxSender.fromNetworkInfo(_networkInfo); final response = From 44478c73204f44670eac2f86ecd2239deaf424d4 Mon Sep 17 00:00:00 2001 From: waleedarshad Date: Thu, 3 Mar 2022 17:15:07 +0500 Subject: [PATCH 4/9] Change values of the keys to account specific strings --- .../lib/alan/alan_credentials_serializer.dart | 2 +- .../lib/model/account_public_info_serializer.dart | 2 +- .../lib/storage/biometric_data_store.dart | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart b/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart index 72f2c9e9..822d02d1 100644 --- a/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart +++ b/packages/transaction_signing_gateway/lib/alan/alan_credentials_serializer.dart @@ -11,7 +11,7 @@ class AlanCredentialsSerializer implements PrivateAccountCredentialsSerializer { static const _chainIdKey = 'chain_id'; static const _mnemonicKey = 'mnemonic'; - static const _accountIdKey = 'walletId'; + static const _accountIdKey = 'accountId'; static const _nameKey = 'name'; static const _publicAddressKey = 'publicAddress'; diff --git a/packages/transaction_signing_gateway/lib/model/account_public_info_serializer.dart b/packages/transaction_signing_gateway/lib/model/account_public_info_serializer.dart index 41fe1bce..028873d1 100644 --- a/packages/transaction_signing_gateway/lib/model/account_public_info_serializer.dart +++ b/packages/transaction_signing_gateway/lib/model/account_public_info_serializer.dart @@ -5,7 +5,7 @@ class AccountPublicInfoSerializer { static const _nameKey = 'name'; static const _chainIdKey = 'chain_id'; static const _publicAddressKey = 'public_address'; - static const _accountIdKey = 'wallet_Id'; + static const _accountIdKey = 'account_Id'; static const _additionalDataKey = 'additional_data'; static AccountPublicInfo fromMap(Map map) { diff --git a/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart b/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart index 55545dd3..47c31938 100644 --- a/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart +++ b/packages/transaction_signing_gateway/lib/storage/biometric_data_store.dart @@ -10,7 +10,7 @@ class BiometricDataStore implements SecureDataStore { @Deprecated('Use "cosmos_auth" package instead') BiometricDataStore({ this.promptInfo = PromptInfo.defaultValues, - this.storageFileName = 'cosmos_wallet_creds', + this.storageFileName = 'cosmos_account_creds', StorageFileInitOptions? storageFileInitOptions, }) : _storageFileInitOptions = storageFileInitOptions ?? StorageFileInitOptions( From 63681b46d5309cf59d6a161049a6e7221786a11e Mon Sep 17 00:00:00 2001 From: waleedarshad Date: Thu, 3 Mar 2022 18:04:46 +0500 Subject: [PATCH 5/9] Update CHANGELOG.md --- .../transaction_signing_gateway/CHANGELOG.md | 69 ++++++++++++++++++- 1 file changed, 67 insertions(+), 2 deletions(-) diff --git a/packages/transaction_signing_gateway/CHANGELOG.md b/packages/transaction_signing_gateway/CHANGELOG.md index ac071598..89f5178f 100644 --- a/packages/transaction_signing_gateway/CHANGELOG.md +++ b/packages/transaction_signing_gateway/CHANGELOG.md @@ -1,3 +1,68 @@ -## [0.0.1] - TODO: Add release date. +## Breaking changes after 2.0.3 -* TODO: Describe initial release. +### The following classes & properties have been refactored (`OldClassName` -> `NewClassName`) +####`Alan` related classes +* `AlanWalletDerivationInfo` -> `AlanAccountDerivationInfo` + * `walletAlias` property refactored to `accountAlias` +* `AlanWalletDerivator` -> `AlanAccountDerivator` +* `AlanPrivateWalletCredentials` -> `AlanPrivateAccountCredentials` +####Models +* `WalletDerivationFailure` -> `AccountDerivationFailure` +* `WalletLookupKey` -> `AccountLookupKey` + * `walletId` property refactored to `accountId` +* `WalletPublicInfo` -> `AccountPublicInfo` + * `walletId` property refactored to `accountId` +* `WalletPublicInfoSerializer` -> `AccountPublicInfoSerializer` + +####Abstractions +* `WalletDerivator` -> `AccountDerivator` +* `WalletDerivationInfo` -> `AccountDerivationInfo` +* `PrivateWalletCredentials` -> `PrivateAccountCredentials` +* `PrivateWalletCredentialsSerializer` -> `PrivateAccountCredentialsSerializer` + +## 2.0.3 - 2021-01-27 + +###Fixed +* Paste button not enabling the continue button on asset transfer page +* Fees token denom is always AKT +* Ruby setup for deployment scripts in Github Actions + +## 2.0.2 - 2022-01-25 + +###Added +* Security screen to enable app lock and biometrics +###Fixed +* Bug fixes and minor improvements + +## [2.0.1](https://github.com/tendermint/flutter/compare/v2.0.0...v2.0.1) - 2021-12-17 + +###Fixed +* Library references in Ignite template + +## 2.0.0 - 2021-12-17 + +###Changed +* Major design revamp for Ignite template + +## 1.0.2 - 2021-09-20 + +###Fixed +* Fix go proxy cache + +## 1.0.1 - 2021-08-21 + +###Added +* Support for dark theme +###Changed +* Minimum Android SDK version to 18 +###Fixed +* Minor bug fixes + +## 1.0.0 - 2021-08-17 + +* Initial version of Ignite template + +## 0.1.0 - 2021-08-03 + +* Export ignite template as a Go module +* TODO: Add more from the first release From d40c79adebbacc3a7e0eff835672544ada97ba88 Mon Sep 17 00:00:00 2001 From: waleedarshad Date: Thu, 3 Mar 2022 18:10:33 +0500 Subject: [PATCH 6/9] Fix test files --- .../test/account_public_info_serializer_test.dart | 2 +- .../test/alan_credentials_serializer_test.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/transaction_signing_gateway/test/account_public_info_serializer_test.dart b/packages/transaction_signing_gateway/test/account_public_info_serializer_test.dart index 6689be47..822a1fe9 100644 --- a/packages/transaction_signing_gateway/test/account_public_info_serializer_test.dart +++ b/packages/transaction_signing_gateway/test/account_public_info_serializer_test.dart @@ -21,7 +21,7 @@ void main() { expect(map['name'], publicInfo.name); expect(map['chain_id'], publicInfo.chainId); expect(map['public_address'], publicInfo.publicAddress); - expect(map['wallet_Id'], publicInfo.accountId); + expect(map['account_Id'], publicInfo.accountId); expect(map['additional_data'], publicInfo.additionalData); expect(info, publicInfo); }); diff --git a/packages/transaction_signing_gateway/test/alan_credentials_serializer_test.dart b/packages/transaction_signing_gateway/test/alan_credentials_serializer_test.dart index 52d7b9bb..18157044 100644 --- a/packages/transaction_signing_gateway/test/alan_credentials_serializer_test.dart +++ b/packages/transaction_signing_gateway/test/alan_credentials_serializer_test.dart @@ -10,7 +10,7 @@ void main() { mnemonic: 'mnemonic', publicInfo: AccountPublicInfo( chainId: 'chainId', - accountId: 'walletId', + accountId: 'accountId', name: 'name', publicAddress: 'cosmos1ec4v57s7weuwatd36dgpjh8hj4gnj2cuut9sav', ), From c8176dacb958168537f69dccf7d9104fe8744833 Mon Sep 17 00:00:00 2001 From: waleedarshad Date: Thu, 3 Mar 2022 18:14:24 +0500 Subject: [PATCH 7/9] Fix formatting in CHANGELOG.md --- packages/transaction_signing_gateway/CHANGELOG.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/transaction_signing_gateway/CHANGELOG.md b/packages/transaction_signing_gateway/CHANGELOG.md index 89f5178f..e8f1999c 100644 --- a/packages/transaction_signing_gateway/CHANGELOG.md +++ b/packages/transaction_signing_gateway/CHANGELOG.md @@ -1,12 +1,13 @@ ## Breaking changes after 2.0.3 ### The following classes & properties have been refactored (`OldClassName` -> `NewClassName`) -####`Alan` related classes +###`Alan` related classes * `AlanWalletDerivationInfo` -> `AlanAccountDerivationInfo` * `walletAlias` property refactored to `accountAlias` * `AlanWalletDerivator` -> `AlanAccountDerivator` * `AlanPrivateWalletCredentials` -> `AlanPrivateAccountCredentials` -####Models + +###Models * `WalletDerivationFailure` -> `AccountDerivationFailure` * `WalletLookupKey` -> `AccountLookupKey` * `walletId` property refactored to `accountId` @@ -14,7 +15,7 @@ * `walletId` property refactored to `accountId` * `WalletPublicInfoSerializer` -> `AccountPublicInfoSerializer` -####Abstractions +###Abstractions * `WalletDerivator` -> `AccountDerivator` * `WalletDerivationInfo` -> `AccountDerivationInfo` * `PrivateWalletCredentials` -> `PrivateAccountCredentials` From 3f0fae5377e9b7c87eb7b8c2a1deacccc765a10b Mon Sep 17 00:00:00 2001 From: waleedarshad Date: Thu, 3 Mar 2022 18:16:14 +0500 Subject: [PATCH 8/9] Test commit to check if the formatting works --- packages/transaction_signing_gateway/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/transaction_signing_gateway/CHANGELOG.md b/packages/transaction_signing_gateway/CHANGELOG.md index e8f1999c..da04c90f 100644 --- a/packages/transaction_signing_gateway/CHANGELOG.md +++ b/packages/transaction_signing_gateway/CHANGELOG.md @@ -56,7 +56,9 @@ * Support for dark theme ###Changed * Minimum Android SDK version to 18 + ###Fixed + * Minor bug fixes ## 1.0.0 - 2021-08-17 From b7c57ffa1ac7f6beb3c66c5a7946945e506399c9 Mon Sep 17 00:00:00 2001 From: waleedarshad Date: Thu, 3 Mar 2022 18:27:33 +0500 Subject: [PATCH 9/9] Fix formatting issues --- .../transaction_signing_gateway/CHANGELOG.md | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/transaction_signing_gateway/CHANGELOG.md b/packages/transaction_signing_gateway/CHANGELOG.md index da04c90f..a59e9160 100644 --- a/packages/transaction_signing_gateway/CHANGELOG.md +++ b/packages/transaction_signing_gateway/CHANGELOG.md @@ -1,13 +1,13 @@ ## Breaking changes after 2.0.3 ### The following classes & properties have been refactored (`OldClassName` -> `NewClassName`) -###`Alan` related classes +#### `Alan` related classes * `AlanWalletDerivationInfo` -> `AlanAccountDerivationInfo` * `walletAlias` property refactored to `accountAlias` * `AlanWalletDerivator` -> `AlanAccountDerivator` * `AlanPrivateWalletCredentials` -> `AlanPrivateAccountCredentials` -###Models +#### Models * `WalletDerivationFailure` -> `AccountDerivationFailure` * `WalletLookupKey` -> `AccountLookupKey` * `walletId` property refactored to `accountId` @@ -15,7 +15,7 @@ * `walletId` property refactored to `accountId` * `WalletPublicInfoSerializer` -> `AccountPublicInfoSerializer` -###Abstractions +#### Abstractions * `WalletDerivator` -> `AccountDerivator` * `WalletDerivationInfo` -> `AccountDerivationInfo` * `PrivateWalletCredentials` -> `PrivateAccountCredentials` @@ -23,42 +23,41 @@ ## 2.0.3 - 2021-01-27 -###Fixed +### Fixed * Paste button not enabling the continue button on asset transfer page * Fees token denom is always AKT * Ruby setup for deployment scripts in Github Actions ## 2.0.2 - 2022-01-25 -###Added +### Added * Security screen to enable app lock and biometrics -###Fixed +### Fixed * Bug fixes and minor improvements ## [2.0.1](https://github.com/tendermint/flutter/compare/v2.0.0...v2.0.1) - 2021-12-17 -###Fixed +### Fixed * Library references in Ignite template ## 2.0.0 - 2021-12-17 -###Changed +### Changed * Major design revamp for Ignite template ## 1.0.2 - 2021-09-20 -###Fixed +### Fixed * Fix go proxy cache ## 1.0.1 - 2021-08-21 -###Added +### Added * Support for dark theme -###Changed +### Changed * Minimum Android SDK version to 18 -###Fixed - +### Fixed * Minor bug fixes ## 1.0.0 - 2021-08-17