Transaction Module
Build and serialize Hoosat transactions.
Overview
The transaction.mo module provides low-level transaction building and serialization.
Core Functions
buildTransaction
Build a Hoosat transaction with one input and 1-2 outputs.
public func buildTransaction(
utxo: UTXO,
recipientScript: Text,
outputAmount: Nat64,
fee: Nat64,
changeScript: Text
) : HoosatTransaction
Parameters:
utxo: UTXO to spendrecipientScript: Recipient's script public key (hex)outputAmount: Amount to send in sompifee: Transaction fee in sompichangeScript: Change address script public key (hex)
Example:
import Transaction "mo:hoosat-mo/transaction";
import Types "mo:hoosat-mo/types";
let utxo : Types.UTXO = {
transactionId = "a1b2c3...";
index = 0;
amount = 2000000;
scriptVersion = 0;
scriptPublicKey = "20a1b2c3...ac";
address = "hoosat:qp...";
};
let tx = Transaction.buildTransaction(
utxo,
"20d4e5f6...ac", // Recipient script
1000000, // 0.01 HTN
1000, // 0.00001 HTN fee
"20a1b2c3...ac" // Change script
);
serializeTransaction
Serialize transaction to JSON for broadcasting.
public func serializeTransaction(
tx: HoosatTransaction
) : Text
Example:
let json = Transaction.serializeTransaction(tx);
// Returns: "{\"transaction\":{\"version\":0,\"inputs\":[...]}}"
Utility Functions
signatureToHex
Convert signature to hex string.
public func signatureToHex(
sig: [Nat8]
) : Text
arrayFromHex
Convert hex string to byte array.
public func arrayFromHex(
hex: Text
) : [Nat8]
Transaction Structure
public type HoosatTransaction = {
version: Nat16;
inputs: [TransactionInput];
outputs: [TransactionOutput];
lockTime: Nat64;
subnetworkId: Text;
gas: Nat64;
payload: Text;
};
Constants
Transaction.DUST_THRESHOLD // 1,000 sompi
Transaction.DEFAULT_VERSION // 0