solana_utils 0.0.1
solana_utils: ^0.0.1 copied to clipboard
Solana address and transaction signature validator/formatter, and basic transaction details.
Solana Utils #
Solana Utils is a Dart package that provides essential utilities for interacting with the Solana blockchain. It includes address validation, transaction signature validation, transaction details retrieval, and formatting tools.
Features #
This package provides the following functionalities:
✅ Address Validation #
- Checks if a Solana address follows the correct format.
✅ Transaction Signature Validation #
- Validates if a transaction signature is properly formatted.
✅ Transaction Details Fetching #
- Retrieves transaction details from either Solana mainnet or devnet.
🔜 Upcoming Features #
- Token balance checker
- SPL token metadata fetcher
- Program account data parser
- RPC endpoint health checker
- Gas fee estimator
- Wallet key pair generator
These additions will assist Solana developers in common blockchain tasks while building their applications. Our goal is to implement all the possible utilities devs would have while developing on Solana, so if you have one in mind or have implemented one previously, reach out and we'd be happy to add it.
Installation #
Add solana_utils
to your project's dependencies:
dependencies:
solana_utils: latest_version
Then, run:
flutter pub get
Usage #
Importing the Package #
import 'package:solana_utils/solana_utils.dart';
1. Address Validation #
void main() {
bool isValidAddress = SolanaUtils.isValidAddress(
'Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr',
);
print('Is valid address: $isValidAddress');
}
2. Transaction Signature Validation #
void main() {
bool isValidSignature = SolanaUtils.isValidSignature(
'3tHvhETSSR9GnumxQTsvEqjX1hHMzAKN6mEJj4LXHucUACk2JESXvDB8vdzNmxM8vJzTSPct5zs63tU9ifNtB8vn',
);
print('Is valid signature: $isValidSignature');
}
3. Formatting Addresses and Signatures #
void main() {
String shortAddress = SolanaUtils.formatAddress(
'Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr',
); // Output: Gh9Z...tKJr
print('Short address: $shortAddress');
String shortSig = SolanaUtils.formatSignature(
'5KT3cmxBswmY9PYc5qWj5N7jnhqFv1PNqgwxMXaQEP3u1MnkY5CT9fDNMJPY8qzFXhuZckerLRHYu8qo6T1FfM5P',
); // Output: 5KT3cmx...T1FfM5P
print('Short signature: $shortSig');
}
4. Fetching Transaction Details #
void main() async {
final txn = await SolanaUtils.getTransactionDetails(
'4QhLJQvJYvg2LVMgE7Mo3YkHt6n11Z6nGu7PbrPiZg37muG7mQKKMqyV7Bh9vRZ2sHNP4e5dDWrzzJ1WfZNEybCR',
useMainnet: true,
);
if (txn != null) {
print('Transaction succeeded: ${txn.success}');
print('Slot: ${txn.rawJson}');
print('Fee: ${txn.feeSol} SOL');
print('Block time: ${txn.blockTime}');
} else {
print('Transaction not found');
}
}
Example Transaction Response #
When you fetch transaction details, the rawJson response may look like this:
{
"blockTime": 1742777404,
"meta": {
"computeUnitsConsumed": 300,
"err": null,
"fee": 8000,
"logMessages": [
"Program 11111111111111111111111111111111 invoke [1]",
"Program 11111111111111111111111111111111 success"
],
"preBalances": [
63226978197335, 2000000, 1, 1
],
"postBalances": [
63226735117224, 245072111, 1, 1
]
},
"slot": 328760882,
"transaction": {
"signatures": [
"4QhLJQvJYvg2LVMgE7Mo3YkHt6n11Z6nGu7PbrPiZg37muG7mQKKMqyV7Bh9vRZ2sHNP4e5dDWrzzJ1WfZNEybCR"
]
}
}
Future Plans #
Planned features include:
- Token balance checker: Retrieve token balances for a given address.
- SPL token metadata fetcher: Fetch metadata details for SPL tokens.
- Program account data parser: Read and parse on-chain account data.
- RPC endpoint health checker: Monitor Solana RPC node performance.
- Gas fee estimator: Estimate transaction fees before submission.
- Wallet key pair generator: Generate secure Solana wallets.
Contributing #
Contributions are welcome! Feel free to submit issues and pull requests.
To contribute:
- Fork the repository
- Create a new branch (
feature-branch
) - Commit your changes
- Push to your branch
- Submit a pull request
License #
This project is licensed under the MIT License.
Contact #
For questions or support, open an issue or reach out via GitHub.
Happy coding! 🚀