Skip to content
LogoLogo

Transactions

from arrekta_sdk import build_transaction, sign_transaction, parse_arrk
 
tx = build_transaction(
    coins=coins,
    payments=[(address, parse_arrk("1.5"))],
    change=keychain.account_at(0, 1).lock,
    fee_rate=fee_rate,            # base units per 1000 bytes
    # optional: issuances, mints, freezes, version, valid_until
)
signed = sign_transaction(tx, spent_outputs, keychain, "regtest")
client.send_transaction(tx=signed)
FunctionReturns
txid(tx) / wtxid(tx)transaction ids (hex, natural byte order)
serialize_transaction(tx) / deserialize_transaction(data)the §5 encoding
sighash(tx, index, spent, network)the message signed for an input (§6.4)
bump_fee(...)replace an unconfirmed transaction at a higher fee rate (RBF)
cpfp(...)a child paying for a stuck parent, submitted as a package

Set version=2 with valid_until for expiring transactions, and version=3 for TRUC.

Example

/**
 * Send a payment: derive a wallet, fund it on regtest, pay 1.5 ARRK, confirm.
 *
 *   ARREKTA_URL=http://127.0.0.1:28332 ARREKTA_ADMIN_TOKEN=... npx tsx examples/send-payment.ts
 */
import { createClient, formatArrk, fromHex, generateSeed, getAddress, getChain, getCoins, keychainFromSeed, mine, sendPayment } from 'arrekta-sdk';
 
const URL = process.env.ARREKTA_URL ?? 'http://127.0.0.1:28332';
const ADMIN = process.env.ARREKTA_ADMIN_TOKEN; // regtest mining for the demo
const SEED = fromHex(process.env.ARREKTA_SEED ?? 'a1'.repeat(32));
 
// 1. Connect and read the chain.
const client = createClient({ url: URL, adminToken: ADMIN });
const chain = await getChain(client);
console.log(`connected to ${chain.network} at height ${chain.height}`);
 
// 2. Alice's wallet from her seed; Bob gets a fresh one.
const alice = keychainFromSeed(SEED, { network: chain.network });
const bob = keychainFromSeed(generateSeed(), { network: chain.network });
 
// 3. Fund Alice (regtest: mine past coinbase maturity).
if ((await getCoins(client, { wallet: alice })).length === 0) await mine(client, alice.address(0), 101);
 
// 4. Pay Bob 1.5 ARRK (fee rate from the node's estimate).
const sent = await sendPayment(client, { wallet: alice, to: bob.address(0), amount: '1.5' });
console.log(`sent ${sent.txid} (fee ${formatArrk(sent.fee)} ARRK)`);
 
// 5. Confirm and check Bob's balance.
await mine(client, alice.address(0), 1);
const balance = (await getAddress(client, { address: bob.address(0) })).balances[0]!;
console.log(`bob has ${formatArrk(balance.spendable)} ARRK`);

Source: sdk/typescript/examples/send-payment.ts (updated 2026-11-02) · sdk/python/examples/send_payment.py (updated 2026-11-02). Runnable against a regtest node; CI runs every example.