Documentation Index
Fetch the complete documentation index at: https://docs.dynamic.xyz/docs/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The BitcoinModule provides native Bitcoin operations including message signing, PSBT signing, sending Bitcoin, and balance queries. Access it via DynamicSDK.instance.bitcoin.
Prerequisites
Get Balance
Query the Bitcoin balance (in satoshis) for a wallet.
final sdk = DynamicSDK.instance;
final wallet = sdk.wallets.userWallets.first;
final balance = await sdk.bitcoin.getBalance(
walletId: wallet.id,
);
print('Balance: $balance satoshis');
Sign a Message
Sign a message using the connected Bitcoin wallet. Supports optional protocol and addressType parameters.
final signature = await sdk.bitcoin.signMessage(
walletId: wallet.id,
message: 'Hello, Bitcoin!',
);
print('Signature: $signature');
With Protocol and Address Type
// Using BIP-322 simple protocol with payment address
final signature = await sdk.bitcoin.signMessage(
walletId: wallet.id,
message: 'Hello, Bitcoin!',
protocol: 'bip322-simple', // or 'ecdsa'
addressType: 'payment', // or 'ordinals'
);
| Parameter | Type | Description |
|---|
walletId | String | The wallet ID to sign with |
message | String | The message to sign |
protocol | String? | Signing protocol: ecdsa or bip322-simple |
addressType | String? | Address type: payment or ordinals |
Send Bitcoin
Send Bitcoin to a recipient address. The amount is specified in satoshis.
final txId = await sdk.bitcoin.sendBitcoin(
walletId: wallet.id,
recipientAddress: 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh',
amount: '10000', // in satoshis
feePriority: 'medium', // optional: 'high', 'medium', or 'low'
);
print('Transaction ID: $txId');
| Parameter | Type | Description |
|---|
walletId | String | The wallet ID to send from |
recipientAddress | String | The recipient Bitcoin address |
amount | String | Amount in satoshis |
feePriority | String? | Fee priority: high, medium, or low |
Build a PSBT
Build an unsigned Partially Signed Bitcoin Transaction (PSBT) without broadcasting it.
final unsignedPsbt = await sdk.bitcoin.buildPsbt(
walletId: wallet.id,
recipientAddress: 'bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh',
amount: '10000',
feePriority: 'medium',
);
print('Unsigned PSBT (base64): $unsignedPsbt');
Sign a PSBT
Sign a PSBT using the connected wallet.
final signedPsbt = await sdk.bitcoin.signPsbt(
walletId: wallet.id,
request: {
'unsignedPsbtBase64': unsignedPsbt,
},
);
print('Signed PSBT: $signedPsbt');
Sign Multiple PSBTs
Batch-sign multiple PSBTs in a single call.
final signedPsbts = await sdk.bitcoin.signPsbts(
walletId: wallet.id,
requests: [
{'unsignedPsbtBase64': psbt1},
{'unsignedPsbtBase64': psbt2},
],
);
print('Signed ${signedPsbts.length} PSBTs');
Send Raw Transaction
Broadcast a raw transaction hex to the Bitcoin network.
final txId = await sdk.bitcoin.sendRawTransaction(
walletId: wallet.id,
rawTransaction: '0200000001...', // raw tx hex
);
print('Transaction ID: $txId');
Complete Example
import 'package:dynamic_sdk/dynamic_sdk.dart';
Future<void> bitcoinExample() async {
final sdk = DynamicSDK.instance;
final wallet = sdk.wallets.userWallets.first;
// Check balance
final balance = await sdk.bitcoin.getBalance(walletId: wallet.id);
print('Balance: $balance satoshis');
// Sign a message
final signature = await sdk.bitcoin.signMessage(
walletId: wallet.id,
message: 'Verify wallet ownership',
);
print('Signature: $signature');
// Build and sign a PSBT
final unsignedPsbt = await sdk.bitcoin.buildPsbt(
walletId: wallet.id,
recipientAddress: 'bc1q...',
amount: '5000',
);
final signedPsbt = await sdk.bitcoin.signPsbt(
walletId: wallet.id,
request: {'unsignedPsbtBase64': unsignedPsbt},
);
print('Signed PSBT: $signedPsbt');
// Or send directly
final txId = await sdk.bitcoin.sendBitcoin(
walletId: wallet.id,
recipientAddress: 'bc1q...',
amount: '5000',
feePriority: 'medium',
);
print('Sent! TX: $txId');
}
API Reference
| Method | Returns | Description |
|---|
getBalance | Future<String> | Get wallet balance in satoshis |
signMessage | Future<String> | Sign a message |
sendBitcoin | Future<String> | Send BTC, returns transaction ID |
buildPsbt | Future<String> | Build unsigned PSBT (base64) |
signPsbt | Future<String> | Sign a single PSBT |
signPsbts | Future<List<String>> | Sign multiple PSBTs |
sendRawTransaction | Future<String> | Broadcast raw transaction hex |
Next Steps