solana_kit_transaction_confirmation
Confirm Solana transactions by racing signature notifications against block-height expiry, durable-nonce invalidation, or timeouts.
Installation
Install the package directly:
dependencies:
"solana_kit_transaction_confirmation": ^0.9.1
If your app uses several Solana Kit packages together, you can also depend on the umbrella package instead:
dart pub add solana_kit
Inside this monorepo, Dart workspace resolution uses the local package automatically.
Documentation
- Package page: https://pub.dev/packages/solana_kit_transaction_confirmation
- API reference: https://pub.dev/documentation/solana_kit_transaction_confirmation/latest/
- Workspace docs: https://openbudgetfun.github.io/solana_kit/
- Package catalog entry: https://openbudgetfun.github.io/solana_kit/reference/package-catalog#solana_kit_transaction_confirmation
- Source code: https://github.com/openbudgetfun/solana_kit/tree/main/packages/solana_kit_transaction_confirmation
For architecture notes, getting-started guides, and cross-package examples, start with the workspace docs site and then drill down into the package README and API reference.
Usage
Send and confirm
The additive helper sendAndConfirmTransaction signs, sends, and polls for confirmation in one call. Pass an Rpc instance and a fully signed transaction.
import 'package:solana_kit/solana_kit.dart';
Future<void> main() async {
final rpc = createSolanaRpc(url: 'https://api.devnet.solana.com');
// `signedTransaction` is a fully signed TransactionWithLifetime.
// final signature = await sendAndConfirmTransaction(
// rpc: rpc,
// transaction: signedTransaction,
// );
// print('Confirmed signature: ${signature.value}');
print(rpc);
}
Wait for confirmation
If you already have a signature (for example, from a prior sendTransaction call), use waitForTransactionConfirmation to poll until the transaction reaches your target commitment level.
import 'package:solana_kit/solana_kit.dart';
Future<void> main() async {
final rpc = createSolanaRpc(url: 'https://api.devnet.solana.com');
// `signature` and `transaction` come from a prior sendTransaction call.
// await waitForTransactionConfirmation(
// rpc: rpc,
// signature: mySignature,
// transaction: myTransaction,
// );
print(rpc);
}
Configuration
Both helpers accept an optional config object:
import 'package:solana_kit/solana_kit.dart';
import 'package:solana_kit_subscribable/solana_kit_subscribable.dart';
void main() {
final abortSource = CancellationTokenSource();
final config = RpcTransactionConfirmationConfig(
commitment: Commitment.confirmed,
pollInterval: Duration(milliseconds: 400),
searchTransactionHistory: false,
abortSignal: abortSource.token,
);
print(config.commitment);
}
SendAndConfirmTransactionConfig extends RpcTransactionConfirmationConfig and adds maxRetries for the send step.
Low-level strategy factories
For custom confirmation logic, the package exposes strategy factories you can compose yourself:
createBlockheightExceedencePromiseFactoryraces the signature against block height.createNonceInvalidationPromiseFactoryraces the signature against durable nonce invalidation.createRecentSignatureConfirmationPromisepollsgetSignatureStatuses.createTimeoutPromiseadds a wall-clock deadline.raceStrategiescombines two or more strategies, resolving when the first succeeds and cancelling the rest.
Example
Use example/main.dart as a runnable starting point for solana_kit_transaction_confirmation.
- Import path:
package:solana_kit_transaction_confirmation/solana_kit_transaction_confirmation.dart - This section is centrally maintained with
mdtto keep package guidance aligned. - After updating shared docs templates, run
docs:updatefrom the repo root.
Maintenance
- Validate docs in CI and locally with
docs:check. - Keep examples focused on one workflow and reference package README sections for deeper API details.
Libraries
- solana_kit_transaction_confirmation
- Confirmation tracking for the Solana Kit Dart SDK.