diff --git a/assets/nano_node_list.yml b/assets/nano_node_list.yml index e7476c94f..63b4baec1 100644 --- a/assets/nano_node_list.yml +++ b/assets/nano_node_list.yml @@ -1,4 +1,6 @@ - - uri: rpc.nano.to:443 + uri: rpc.nano.to + useSSL: true + is_default: true - uri: node.perish.co:9076 \ No newline at end of file diff --git a/assets/nano_pow_node_list.yml b/assets/nano_pow_node_list.yml index 22aed967b..674518073 100644 --- a/assets/nano_pow_node_list.yml +++ b/assets/nano_pow_node_list.yml @@ -1,5 +1,7 @@ - - uri: rpc.nano.to:443 + uri: rpc.nano.to + useSSL: true + is_default: true - uri: workers.perish.co - diff --git a/cw_core/lib/node.dart b/cw_core/lib/node.dart index ec7c905dc..a07030d64 100644 --- a/cw_core/lib/node.dart +++ b/cw_core/lib/node.dart @@ -80,7 +80,7 @@ class Node extends HiveObject with Keyable { return Uri.https(uriRaw, ''); case WalletType.nano: case WalletType.banano: - if (uriRaw.contains("https") || uriRaw.endsWith("443") || isSSL) { + if (isSSL) { return Uri.https(uriRaw, ''); } else { return Uri.http(uriRaw, ''); diff --git a/cw_core/lib/pow_node.dart b/cw_core/lib/pow_node.dart deleted file mode 100644 index 1e98bc323..000000000 --- a/cw_core/lib/pow_node.dart +++ /dev/null @@ -1,159 +0,0 @@ -import 'dart:io'; -import 'package:cw_core/keyable.dart'; -import 'dart:convert'; -import 'package:http/http.dart' as http; -import 'package:hive/hive.dart'; -import 'package:cw_core/hive_type_ids.dart'; -import 'package:cw_core/wallet_type.dart'; -import 'package:http/io_client.dart' as ioc; - -part 'pow_node.g.dart'; - -Uri createUriFromElectrumAddress(String address) => Uri.tryParse('tcp://$address')!; - -@HiveType(typeId: PowNode.typeId) -class PowNode extends HiveObject with Keyable { - PowNode({ - this.login, - this.password, - this.useSSL, - this.trusted = false, - this.socksProxyAddress, - String? uri, - WalletType? type, - }) { - if (uri != null) { - uriRaw = uri; - } - if (type != null) { - this.type = type; - } - } - - PowNode.fromMap(Map map) - : uriRaw = map['uri'] as String? ?? '', - login = map['login'] as String?, - password = map['password'] as String?, - useSSL = map['useSSL'] as bool?, - trusted = map['trusted'] as bool? ?? false, - socksProxyAddress = map['socksProxyPort'] as String?; - - static const typeId = POW_NODE_TYPE_ID; - static const boxName = 'PowNodes'; - - @HiveField(0, defaultValue: '') - late String uriRaw; - - @HiveField(1) - String? login; - - @HiveField(2) - String? password; - - @HiveField(3, defaultValue: 0) - late int typeRaw; - - @HiveField(4) - bool? useSSL; - - @HiveField(5, defaultValue: false) - bool trusted; - - @HiveField(6) - String? socksProxyAddress; - - bool get isSSL => useSSL ?? false; - - bool get useSocksProxy => socksProxyAddress == null ? false : socksProxyAddress!.isNotEmpty; - - Uri get uri { - switch (type) { - case WalletType.monero: - return Uri.http(uriRaw, ''); - case WalletType.bitcoin: - return createUriFromElectrumAddress(uriRaw); - case WalletType.litecoin: - return createUriFromElectrumAddress(uriRaw); - case WalletType.haven: - return Uri.http(uriRaw, ''); - case WalletType.ethereum: - return Uri.https(uriRaw, ''); - case WalletType.nano: - case WalletType.banano: - if (uriRaw.contains("https") || uriRaw.endsWith("443") || isSSL) { - return Uri.https(uriRaw, ''); - } else { - return Uri.http(uriRaw, ''); - } - default: - throw Exception('Unexpected type ${type.toString()} for Node uri'); - } - } - - @override - bool operator ==(other) => - other is PowNode && - (other.uriRaw == uriRaw && - other.login == login && - other.password == password && - other.typeRaw == typeRaw && - other.useSSL == useSSL && - other.trusted == trusted && - other.socksProxyAddress == socksProxyAddress); - - @override - int get hashCode => - uriRaw.hashCode ^ - login.hashCode ^ - password.hashCode ^ - typeRaw.hashCode ^ - useSSL.hashCode ^ - trusted.hashCode ^ - socksProxyAddress.hashCode; - - @override - dynamic get keyIndex { - _keyIndex ??= key; - return _keyIndex; - } - - WalletType get type => deserializeFromInt(typeRaw); - - set type(WalletType type) => typeRaw = serializeToInt(type); - - dynamic _keyIndex; - - Future requestNode() async { - try { - switch (type) { - case WalletType.nano: - return requestNanoPowNode(); - default: - return false; - } - } catch (_) { - return false; - } - } - - Future requestNanoPowNode() async { - return http - .post( - uri, - headers: {'Content-type': 'application/json'}, - body: json.encode( - { - "action": "work_generate", - "hash": "0000000000000000000000000000000000000000000000000000000000000000", - }, - ), - ) - .then((http.Response response) { - if (response.statusCode == 200) { - return true; - } else { - return false; - } - }); - } -} diff --git a/cw_core/lib/wallet_base.dart b/cw_core/lib/wallet_base.dart index 42fb22e75..1da90a700 100644 --- a/cw_core/lib/wallet_base.dart +++ b/cw_core/lib/wallet_base.dart @@ -1,4 +1,3 @@ -import 'package:cw_core/pow_node.dart'; import 'package:mobx/mobx.dart'; import 'package:cw_core/balance.dart'; import 'package:cw_core/transaction_info.dart'; @@ -60,7 +59,7 @@ abstract class WalletBase< Future connectToNode({required Node node}); // there is a default definition here because only coins with a pow node (nano based) need to override this - Future connectToPowNode({required PowNode node}) async {} + Future connectToPowNode({required Node node}) async {} Future startSync(); diff --git a/cw_nano/lib/nano_client.dart b/cw_nano/lib/nano_client.dart index 236ce68f3..01f9ba9f9 100644 --- a/cw_nano/lib/nano_client.dart +++ b/cw_nano/lib/nano_client.dart @@ -1,14 +1,9 @@ import 'dart:async'; import 'dart:convert'; -import 'dart:math'; -import 'package:cw_core/crypto_currency.dart'; -import 'package:cw_core/erc20_token.dart'; -import 'package:cw_core/pow_node.dart'; import 'package:cw_nano/nano_balance.dart'; import 'package:cw_nano/nano_transaction_model.dart'; import 'package:cw_nano/nano_util.dart'; -import 'package:flutter/services.dart'; import 'package:http/http.dart' as http; import 'package:nanodart/nanodart.dart'; import 'package:cw_core/node.dart'; @@ -18,7 +13,7 @@ class NanoClient { "nano_38713x95zyjsqzx6nm1dsom1jmm668owkeb9913ax6nfgj15az3nu8xkx579"; Node? _node; - PowNode? _powNode; + Node? _powNode; bool connect(Node node) { try { @@ -29,7 +24,7 @@ class NanoClient { } } - bool connectPow(PowNode node) { + bool connectPow(Node node) { try { _powNode = node; return true; diff --git a/cw_nano/lib/nano_wallet.dart b/cw_nano/lib/nano_wallet.dart index 78855334b..2d67c63d3 100644 --- a/cw_nano/lib/nano_wallet.dart +++ b/cw_nano/lib/nano_wallet.dart @@ -6,11 +6,9 @@ import 'package:cw_core/crypto_currency.dart'; import 'package:cw_core/node.dart'; import 'package:cw_core/pathForWallet.dart'; import 'package:cw_core/pending_transaction.dart'; -import 'package:cw_core/pow_node.dart'; import 'package:cw_core/sync_status.dart'; import 'package:cw_core/transaction_direction.dart'; import 'package:cw_core/transaction_priority.dart'; -import 'package:cw_core/wallet_addresses.dart'; import 'package:cw_core/wallet_info.dart'; import 'package:cw_nano/file.dart'; import 'package:cw_core/nano_account.dart'; @@ -23,7 +21,6 @@ import 'package:cw_nano/nano_util.dart'; import 'package:cw_nano/nano_wallet_keys.dart'; import 'package:cw_nano/pending_nano_transaction.dart'; import 'package:mobx/mobx.dart'; -import 'package:hive/hive.dart'; import 'dart:async'; import 'package:cw_nano/nano_wallet_addresses.dart'; import 'package:cw_core/wallet_base.dart'; @@ -151,7 +148,7 @@ abstract class NanoWalletBase } @override - Future connectToPowNode({required PowNode node}) async { + Future connectToPowNode({required Node node}) async { _client.connectPow(node); } diff --git a/lib/di.dart b/lib/di.dart index 2573eb6dd..9a58f54dd 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -93,7 +93,6 @@ import 'package:cake_wallet/view_model/wallet_list/wallet_list_item.dart'; import 'package:cake_wallet/view_model/wallet_restore_choose_derivation_view_model.dart'; import 'package:cw_core/erc20_token.dart'; import 'package:cw_core/nano_account.dart'; -import 'package:cw_core/pow_node.dart'; import 'package:cw_core/unspent_coins_info.dart'; import 'package:cake_wallet/core/backup_service.dart'; import 'package:cw_core/wallet_service.dart'; @@ -226,7 +225,7 @@ final getIt = GetIt.instance; var _isSetupFinished = false; late Box _walletInfoSource; late Box _nodeSource; -late Box _powNodeSource; +late Box _powNodeSource; late Box _contactSource; late Box _tradesSource; late Box