Native Wallet Dart Package
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:
- Fork the repository.
- Create a new branch (
git checkout -b feature-xyz). - Commit your changes (
git commit -m 'Add feature XYZ'). - Push to the branch (
git push origin feature-xyz). - 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