cake_wallet/cw_ethereum/lib/ethereum_client.dart

38 lines
1 KiB
Dart
Raw Normal View History

2023-01-04 14:51:23 +00:00
import 'package:cw_core/node.dart';
import 'package:cw_ethereum/ethereum_transaction_priority.dart';
2023-01-04 14:51:23 +00:00
import 'package:http/http.dart';
import 'package:web3dart/web3dart.dart';
class EthereumClient {
Web3Client? _client;
2023-01-04 14:51:23 +00:00
Future<bool> connect(Node node) async {
try {
_client = Web3Client(node.uri.toString(), Client());
2023-01-04 14:51:23 +00:00
return true;
} catch (e) {
return false;
}
}
Future<EtherAmount> getBalance(String privateKey) async {
final private = EthPrivateKey.fromHex(privateKey);
return _client!.getBalance(private.address);
2023-01-04 14:51:23 +00:00
}
Future<int> getGasUnitPrice() async {
final gasPrice = await _client!.getGasPrice();
return gasPrice.getInWei.toInt();
}
Future<List<int>> getEstimatedGasForPriorities() async {
final result = await Future.wait(EthereumTransactionPriority.all.map((priority) => _client!
.estimateGas(
2023-01-12 13:53:20 +00:00
maxPriorityFeePerGas: EtherAmount.fromUnitAndValue(EtherUnit.gwei, priority.tip))));
return result.map((e) => e.toInt()).toList();
}
}