Skip to main content

Types Module

Core data structures for Hoosat transactions.

Transaction Types

HoosatTransaction

public type HoosatTransaction = {
version: Nat16;
inputs: [TransactionInput];
outputs: [TransactionOutput];
lockTime: Nat64;
subnetworkId: Text;
gas: Nat64;
payload: Text;
};

TransactionInput

public type TransactionInput = {
previousOutpoint: Outpoint;
signatureScript: Text;
sequence: Nat64;
sigOpCount: Nat8;
};

TransactionOutput

public type TransactionOutput = {
amount: Nat64;
scriptPublicKey: ScriptPublicKey;
};

Outpoint

public type Outpoint = {
transactionId: Text; // 64-char hex
index: Nat32;
};

ScriptPublicKey

public type ScriptPublicKey = {
version: Nat16;
scriptPublicKey: Text; // Hex-encoded
};

UTXO Type

UTXO

public type UTXO = {
transactionId: Text; // 64-char hex
index: Nat32;
amount: Nat64;
scriptVersion: Nat16;
scriptPublicKey: Text; // Hex-encoded
address: Text; // Hoosat address
};

Example:

let utxo : Types.UTXO = {
transactionId = "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6";
index = 0;
amount = 2000000;
scriptVersion = 0;
scriptPublicKey = "20a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3ac";
address = "hoosat:qypq...";
};

Usage Example

import Types "mo:hoosat-mo/types";

let tx : Types.HoosatTransaction = {
version = 0;
inputs = [{
previousOutpoint = {
transactionId = "a1b2c3...";
index = 0;
};
signatureScript = "";
sequence = 0;
sigOpCount = 1;
}];
outputs = [{
amount = 1000000;
scriptPublicKey = {
version = 0;
scriptPublicKey = "20d4e5f6...ac";
};
}];
lockTime = 0;
subnetworkId = "0000000000000000000000000000000000000000";
gas = 0;
payload = "";
};