-
Notifications
You must be signed in to change notification settings - Fork 31
wallet_rpc_Transactions
Methods for sending, composing, inspecting, and listing transactions.
See Overview for connection details and the shared rpc() helper used in examples.
Send coins to an address. Fees are calculated automatically.
{
"account": 0,
"address": "<destination_address>",
"amount": { "decimal": "10.5" },
"selected_utxos": [],
"options": { "in_top_x_mb": null, "broadcast_to_mempool": null }
}Returns the transaction id, raw hex, fees paid, and whether it was broadcast.
const result = await rpc('address_send', {
account: 0,
address: '<destination_address>',
amount: { decimal: '10.5' },
selected_utxos: [],
options: { in_top_x_mb: null, broadcast_to_mempool: true },
});
console.log('Transaction id:', result.tx_id);
console.log('Fee:', result.fees.coins.decimal);
console.log('Broadcast:', result.broadcasted);Send a token amount to an address.
const result = await rpc('token_send', {
account: 0,
token_id: '<token_id>',
address: '<destination_address>',
amount: { decimal: '100' },
options: { in_top_x_mb: null, broadcast_to_mempool: true },
});
console.log('Transaction id:', result.tx_id);Sweep all spendable coins (and tokens) from one or more addresses to a destination.
// Sweep from specific addresses
const result = await rpc('address_sweep_spendable', {
account: 0,
destination_address: '<destination_address>',
from_addresses: ['<source_address_1>', '<source_address_2>'],
all: false,
options: { in_top_x_mb: null, broadcast_to_mempool: true },
});
// Sweep all addresses in the account
const result2 = await rpc('address_sweep_spendable', {
account: 0,
destination_address: '<destination_address>',
from_addresses: [],
all: true,
options: { in_top_x_mb: null, broadcast_to_mempool: true },
});Spend a specific UTXO, moving its funds to an address.
const result = await rpc('utxo_spend', {
account: 0,
utxo: {
source_id: { type: 'Transaction', content: { tx_id: '<txid>' } },
index: 0,
},
output_address: '<destination_address>',
htlc_secret: null,
options: { in_top_x_mb: null, broadcast_to_mempool: true },
});Compose a raw transaction from explicit inputs and outputs without signing it. Returns a hex-encoded PartiallySignedTransaction that can be passed to account_sign_raw_transaction.
const result = await rpc('transaction_compose', {
inputs: [
{
source_id: { type: 'Transaction', content: { tx_id: '<txid>' } },
index: 0,
},
],
outputs: [
{
type: 'Transfer',
content: {
value: { type: 'Coin', content: { amount: { decimal: '5.0' } } },
destination: '<destination_address>',
},
},
],
htlc_secrets: null,
only_transaction: false,
});
console.log('Unsigned PST hex:', result.hex);
console.log('Estimated fee:', result.fees.coins.decimal);Sign a hex-encoded transaction or PartiallySignedTransaction. Used for multisig and cold wallet workflows.
const result = await rpc('account_sign_raw_transaction', {
account: 0,
raw_tx: '<pst_hex>',
options: { in_top_x_mb: null },
});
console.log('Signed hex:', result.hex);
console.log('Signatures:', result.current_signatures);Inspect a raw transaction hex — shows inputs, outputs, fees, and signature status without broadcasting.
const result = await rpc('transaction_inspect', {
transaction: '<hex>',
});
console.log('Inputs:', result.stats.num_inputs);
console.log('Signatures:', result.stats.total_signatures);
console.log('Fee:', result.fees?.coins.decimal);Signature statuses per input: "NotSigned", "InvalidSignature", "UnknownSignature", "FullySigned", "PartialMultisig".
Create an unsigned transaction spending from a specific address (cold storage withdrawal). The change is returned to the same address unless overridden.
const result = await rpc('transaction_create_from_cold_input', {
account: 0,
address: '<destination_address>',
amount: { decimal: '50.0' },
selected_utxo: {
source_id: { type: 'Transaction', content: { tx_id: '<txid>' } },
index: 0,
},
change_address: null,
options: { in_top_x_mb: null },
});
console.log('Unsigned hex:', result.hex);Submit a fully signed hex transaction to the mempool and broadcast it.
const result = await rpc('node_submit_transaction', {
tx: '<signed_hex>',
do_not_store: false,
options: { trust_policy: 'Trusted' },
});
console.log('Broadcast tx id:', result.tx_id);List confirmed transactions for an account, optionally filtered by address.
const txs = await rpc('transaction_list_by_address', {
account: 0,
address: null, // or '<address>' to filter
limit: 20,
});
for (const tx of txs) {
console.log(tx.id, 'at height', tx.height, 'timestamp', tx.timestamp.timestamp);
}List pending (unconfirmed) transaction ids that can be abandoned.
const pending = await rpc('transaction_list_pending', { account: 0 });
console.log('Pending:', pending);Get a transaction from the wallet as a JSON object.
const tx = await rpc('transaction_get', {
account: 0,
transaction_id: '<txid>',
});
console.log(tx);Get a transaction as a raw hex string.
const hex = await rpc('transaction_get_raw', {
account: 0,
transaction_id: '<txid>',
});Get a signed transaction as a raw hex string.
const hex = await rpc('transaction_get_signed_raw', {
account: 0,
transaction_id: '<txid>',
});Abandon an unconfirmed transaction, releasing its inputs for reuse.
await rpc('transaction_abandon', {
account: 0,
transaction_id: '<txid>',
});Store arbitrary data on the blockchain (as a hex string). Note: this incurs a high fee.
const data = Buffer.from('hello world').toString('hex');
const result = await rpc('address_deposit_data', {
account: 0,
data,
options: { in_top_x_mb: null, broadcast_to_mempool: true },
});
console.log('Data deposit tx:', result.tx_id);Most transaction methods accept an options object:
| Field | Type | Description |
|---|---|---|
in_top_x_mb |
number | null |
Target the transaction to be in the top X MB of the mempool priority |
broadcast_to_mempool |
boolean | null |
Whether to broadcast immediately (default: true) |
- Home
- Installing Mintlayer
- Upgrade Mintlayer
- Node
- Addresses
- Wallet CLI
- Wallet RPC
- API
- Advanced Tools
- Guides
- CHANGELOG