Native Wallet Dart Package

Pub Version Build Status License

A Dart package that provides native wallet functionality by leveraging Dart FFI to integrate with a high-performance Rust backend. This package enables seamless cryptocurrency wallet operations like generating keys, signing transactions, and interacting with blockchain networks.


✨ Features

  • 🔐 Secure Key Management – Generate and manage cryptographic keys securely.
  • 📤 Transaction Signing – Sign transactions using native cryptographic libraries.
  • 🌐 Blockchain Integration – Interact with blockchain networks directly from Dart.
  • 🚀 High Performance – Utilizes Rust for optimized performance and security.
  • 🛠️ Cross-Platform – Works on Windows, macOS, Linux, Android, and iOS.

📦 Installation

Add the package to your pubspec.yaml:

dependencies:
  monero_wallet: ^1.0.0

Then run:

dart pub get

🛠️ Setup

1. Rust Environment

Ensure you have Rust installed:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

2. Build Native Library

Navigate to the Rust directory and build the shared library:

cd rust_backend
cargo build --release

This will generate the shared library (.so, .dylib, or .dll depending on your OS).

3. Configure Dart FFI

Place the compiled library where your Dart app can load it. Typically:

  • macOS/Linux: rust_backend/target/release/libmonero_wallet.so
  • Windows: rust_backend/target/release/monero_wallet.dll

🚀 Usage

Initialize the Wallet

import 'package:monero_wallet/monero_wallet.dart';

void main() {
  final wallet = NativeWallet();

  wallet.initialize();

  print('Wallet initialized!');
}

Generate a New Key Pair

final keyPair = wallet.generateKeyPair();
print('Public Key: ${keyPair.publicKey}');
print('Private Key: ${keyPair.privateKey}');

Sign a Transaction

final transaction = "sample transaction data";
final signature = wallet.signTransaction(transaction);
print('Transaction Signature: $signature');

📚 API Overview

initialize()

Initializes the native wallet library.

generateKeyPair()

Generates a new cryptographic key pair.

signTransaction(String data)

Signs the provided transaction data.

getBalance(String address)

Fetches the balance of the given wallet address.


🏗️ Architecture

  • Dart Layer: Handles API exposure and integrates with the UI.
  • Dart FFI: Bridges Dart and native Rust functions.
  • Rust Backend: Executes performance-critical operations securely.

📱 Platform Support

Platform Status
Android ✅ Supported
iOS ✅ Supported
Windows ✅ Supported
macOS ✅ Supported
Linux ✅ Supported

🛡️ Security Considerations

  • All cryptographic operations are handled by Rust, ensuring high performance and security.
  • Sensitive data like private keys are never exposed to the Dart layer.

🔧 Development

Run Tests

dart test

Format Code

dart format .

🤝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature-xyz).
  3. Commit your changes (git commit -m 'Add feature XYZ').
  4. Push to the branch (git push origin feature-xyz).
  5. Open a Pull Request.

📄 License

Distributed under the Apache 2.0 License. See LICENSE for more information.


💬 Contact

For issues or feature requests, please open an issue on GitHub.

Happy coding! 🚀

Libraries

monero_wallet
Support for doing something awesome.
rust_bindings