Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
1020f28
Initial
dev2-nomo Jan 9, 2025
2c9c78c
Initial
dev2-nomo Jan 9, 2025
bcc503a
Migrate to builtIn HDNode insteaf of bip32
dev2-nomo Jan 13, 2025
610a5e6
Fix Lint
dev2-nomo Jan 13, 2025
d65d3de
Fix Pipe
dev2-nomo Jan 13, 2025
e02dc68
Refactor derivation functions to use NetworkNodeInfo and simplify par…
dev2-nomo Jan 13, 2025
b2ad177
Add command framework with Help and Exit commands to CLI Example
dev2-nomo Jan 13, 2025
0659823
Bip39 impl (#141)
dev2-nomo Jan 30, 2025
13540e8
Update http package to version 1.3.0 and SDK constraint to 3.3.0
dev2-nomo Jan 30, 2025
ae830e8
Merge branch 'main' of https://github.com/nomo-app/walletkit-dart int…
dev2-nomo Jan 30, 2025
ae29d9f
Fix Lint
dev2-nomo Jan 30, 2025
dbda488
test: Enhance BIP39 tests to validate extended private key generation
dev2-nomo Jan 30, 2025
3731128
refactor: Comment out mnemonic generation test for word 'arm'
dev2-nomo Jan 30, 2025
353d1f0
feat: Add TODO for future test cases in multiple languages
dev2-nomo Jan 30, 2025
a48eac4
Update sdk
dev2-nomo Mar 20, 2025
806441e
Merge branch 'main' of https://github.com/nomo-app/walletkit-dart int…
dev2-nomo Mar 20, 2025
db65476
Segwit fee fix (#149)
dev2-nomo Mar 20, 2025
4997ead
Initial (#130)
nomo-app Mar 20, 2025
8137b73
format
dev2-nomo Mar 20, 2025
41abf45
Add cursorignore
dev2-nomo Mar 24, 2025
fea2619
Update Readme and add License
dev2-nomo Mar 24, 2025
d94e931
Start Refactor
dev2-nomo Mar 24, 2025
602f9d0
Fix Imports
dev2-nomo Mar 26, 2025
8b8c9b0
Fix Input Output Length Byte
ThomasFercher Sep 26, 2025
b700dbd
Wallet Impl First Try
ThomasFercher Sep 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion example/web3_kit_example.dart

This file was deleted.

13 changes: 13 additions & 0 deletions example/wkdart.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import 'dart:io';

Comment on lines +2 to +3
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Add necessary wallet-related imports and error handling.

As this is a wallet interface implementation, the file should import the necessary wallet-related modules and implement proper error handling for I/O operations.

Consider adding:

 import 'dart:io';
+import 'package:walletkit_dart/walletkit_dart.dart';
+import 'dart:async';
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import 'dart:io';
import 'dart:io';
import 'package:walletkit_dart/walletkit_dart.dart';
import 'dart:async';

void main(List<String> args) {
print("Welcome to Walletkit-Dart");

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Enhance main function with wallet initialization and CLI argument handling.

The current implementation lacks essential wallet functionality initialization and doesn't utilize the command-line arguments.

Consider implementing:

  1. Command-line argument parsing for wallet operations
  2. Wallet initialization
  3. Usage instructions
  4. Error handling

Example structure:

void main(List<String> args) async {
  try {
    if (args.contains('--help')) {
      printUsage();
      return;
    }
    
    print("Welcome to Walletkit-Dart");
    final wallet = await WalletKit.initialize();
    
    // Interactive loop here
    
  } catch (e) {
    print("Error: $e");
    exit(1);
  }
}

while (true) {
final input = stdin.readLineSync();

if (input == 'exit') {
break;
}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Implement proper command processing and async I/O.

The current interactive loop implementation has several limitations:

  1. Uses blocking I/O
  2. Lacks command processing
  3. No error handling
  4. No user feedback

Consider implementing:

while (true) {
  stdout.write('wallet> ');
  String? input;
  try {
    input = await stdin.readLineSync();
    if (input == null) continue;
    
    if (input == 'exit') {
      break;
    }
    
    final result = await processCommand(input);
    print(result);
  } catch (e) {
    print('Error: $e');
  }
}

Future<String> processCommand(String input) async {
  final parts = input.split(' ');
  switch (parts[0]) {
    case 'balance':
      return await wallet.getBalance();
    case 'send':
      if (parts.length != 3) return 'Usage: send <address> <amount>';
      return await wallet.send(parts[1], double.parse(parts[2]));
    case 'help':
      return '''
Available commands:
  balance - Show wallet balance
  send <address> <amount> - Send funds
  exit - Exit the application
''';
    default:
      return 'Unknown command. Type "help" for available commands.';
  }
}

}
1 change: 1 addition & 0 deletions lib/src/crypto/tron/entities/tron_address.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:typed_data';
import 'package:walletkit_dart/src/crypto/utxo/utils/pubkey_to_address.dart';
import 'package:walletkit_dart/src/crypto/utxo/utils/ecurve.dart';
import 'package:walletkit_dart/src/utils/base58.dart';
import 'package:walletkit_dart/src/utils/crypto.dart';
import 'package:walletkit_dart/src/utils/keccak.dart';
import 'package:walletkit_dart/walletkit_dart.dart';

Expand Down
1 change: 1 addition & 0 deletions lib/src/crypto/tron/entities/tron_transaction_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:fixnum/fixnum.dart';
import 'package:walletkit_dart/src/crypto/tron/repositories/rpc/core/Tron.pb.dart';

import 'package:walletkit_dart/src/crypto/utxo/utils/pubkey_to_address.dart';
import 'package:walletkit_dart/src/utils/crypto.dart';
import 'package:walletkit_dart/walletkit_dart.dart';
import 'package:walletkit_dart/src/crypto/tron/repositories/rpc/core/Tron.pb.dart'
as tron;
Expand Down
1 change: 1 addition & 0 deletions lib/src/crypto/utxo/entities/payments/p2h.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:walletkit_dart/src/crypto/utxo/entities/op_codes.dart';
import 'package:walletkit_dart/src/crypto/utxo/utils/pubkey_to_address.dart';
import 'package:walletkit_dart/src/domain/exceptions.dart';
import 'package:walletkit_dart/src/utils/base32.dart';
import 'package:walletkit_dart/src/utils/crypto.dart';
import 'package:walletkit_dart/walletkit_dart.dart';

class P2Hash {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:walletkit_dart/src/crypto/utxo/entities/payments/pk_script_conve
import 'package:walletkit_dart/src/crypto/utxo/utils/pubkey_to_address.dart';
import 'package:walletkit_dart/src/crypto/utxo/entities/raw_transaction/input.dart';
import 'package:walletkit_dart/src/crypto/utxo/entities/raw_transaction/output.dart';
import 'package:walletkit_dart/src/utils/crypto.dart';
import 'package:walletkit_dart/src/utils/int.dart';
import 'package:walletkit_dart/src/utils/var_uint.dart';
import 'package:walletkit_dart/walletkit_dart.dart';
Expand Down
1 change: 1 addition & 0 deletions lib/src/crypto/utxo/utils/eurocoin_signing.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:bip32/bip32.dart' as bip32;
import 'package:hex/hex.dart';
import 'package:walletkit_dart/src/crypto/utxo/utils/pubkey_to_address.dart';
import 'package:walletkit_dart/src/domain/exceptions.dart';
import 'package:walletkit_dart/src/utils/crypto.dart';
import 'package:walletkit_dart/walletkit_dart.dart';
import 'package:pointycastle/src/utils.dart' as p_utils;
import 'package:bip32/src/utils/ecurve.dart' as ecc;
Expand Down
1 change: 1 addition & 0 deletions lib/src/crypto/utxo/utils/proof_of_payment.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:walletkit_dart/src/crypto/utxo/entities/raw_transaction/output.d
import 'package:walletkit_dart/src/crypto/utxo/entities/op_codes.dart';
import 'package:walletkit_dart/src/crypto/utxo/utils/pubkey_to_address.dart';
import 'package:walletkit_dart/src/crypto/utxo/repositories/electrum_json_rpc_client.dart';
import 'package:walletkit_dart/src/utils/crypto.dart';
import 'package:walletkit_dart/src/utils/int.dart';
import 'package:walletkit_dart/src/utils/var_uint.dart';
import 'package:walletkit_dart/walletkit_dart.dart';
Expand Down
26 changes: 1 addition & 25 deletions lib/src/crypto/utxo/utils/pubkey_to_address.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:walletkit_dart/src/utils/base32.dart';
import 'package:convert/convert.dart' show hex;
import 'package:bs58check/bs58check.dart' as bs58check;
import 'package:walletkit_dart/src/utils/base58.dart';
import 'package:walletkit_dart/src/utils/crypto.dart';
import 'package:walletkit_dart/walletkit_dart.dart';

String pubKeyHexToAddress(
Expand Down Expand Up @@ -118,31 +119,6 @@ String pubKeyHashToP2SHAddress(Uint8List pubKeyHash, int scriptHashPrefix) {
return base58Encode(prefixedHashWithChecksum);
}

///
/// Ripmed160 Hash of Sha256 Hash
///
Uint8List ripmed160Sha256Hash(Uint8List buffer) {
final ripmed160 = RIPEMD160Digest();
final sha256 = SHA256Digest();
return ripmed160.process(sha256.process(buffer));
}

///
/// Sha256 Hash of Sha256 Hash
///
Uint8List sha256Sha256Hash(Uint8List buffer) {
final sha256 = SHA256Digest();
return sha256.process(sha256.process(buffer));
}

///
/// Sha256 Hash
///
Uint8List sha256Hash(Uint8List buffer) {
final sha256 = SHA256Digest();
return sha256.process(buffer);
}

///
/// BCH CashAddr
///
Expand Down
35 changes: 35 additions & 0 deletions lib/src/utils/crypto.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import 'dart:typed_data';
import 'package:pointycastle/export.dart';

///
/// Ripmed160 Hash of Sha256 Hash
///
Uint8List ripmed160Sha256Hash(Uint8List buffer) {
final ripmed160 = RIPEMD160Digest();
final sha256 = SHA256Digest();
return ripmed160.process(sha256.process(buffer));
}

///
/// Sha256 Hash of Sha256 Hash
///
Uint8List sha256Sha256Hash(Uint8List buffer) {
final sha256 = SHA256Digest();
return sha256.process(sha256.process(buffer));
}

///
/// Sha256 Hash
///
Uint8List sha256Hash(Uint8List buffer) {
final sha256 = SHA256Digest();
return sha256.process(buffer);
}

///
/// HMAC Sha256
///
Uint8List hmacSHA512(Uint8List key, Uint8List data) {
final hmac = HMac(SHA512Digest(), 128)..init(KeyParameter(key));
return hmac.process(data);
}
Loading
Loading