Skip to content

Class: Transaction

Defined in: @nimiq/core/types/wasm/web.d.ts:1753

Transactions describe a transfer of value, usually from the sender to the recipient. However, transactions can also have no value, when they are used to signal a change in the staking contract.

Transactions can be used to create contracts, such as vesting contracts and HTLCs.

Transactions require a valid signature proof over their serialized content. Furthermore, transactions are only valid for 2 hours after their validity-start block height.

Constructors

new Transaction()

new Transaction(sender, sender_type, sender_data, recipient, recipient_type, recipient_data, value, fee, flags, validity_start_height, network_id): Transaction

Defined in: @nimiq/core/types/wasm/web.d.ts:1786

Creates a new unsigned transaction that transfers value amount of luna (NIM's smallest unit) from the sender to the recipient, where both sender and recipient can be any account type, and custom extra data can be added to the transaction.

Basic transactions

If both the sender and recipient types are omitted or 0 and both data and flags are empty, a smaller basic transaction is created.

Extended transactions

If no flags are given, but sender type is not basic (0) or data is set, an extended transaction is created.

Contract creation transactions

To create a new vesting or HTLC contract, set flags to 0b1 and specify the contract type as the recipient_type: 1 for vesting, 2 for HTLC. The data bytes must have the correct format of contract creation data for the respective contract type.

Signaling transactions

To interact with the staking contract, signaling transaction are often used to not transfer any value, but to simply signal a state change instead, such as changing one's delegation from one validator to another. To create such a transaction, set flags to 0b10 and populate the data bytes accordingly.

The returned transaction is not yet signed. You can sign it e.g. with tx.sign(keyPair).

Throws when an account type is unknown, the numbers given for value and fee do not fit within a u64 or the networkId is unknown. Also throws when no data or recipient type is given for contract creation transactions, or no data is given for signaling transactions.

Parameters

sender

Address

sender_type

number

sender_data

Uint8Array

recipient

Address

recipient_type

number

recipient_data

Uint8Array

value

bigint

fee

bigint

flags

number

validity_start_height

number

network_id

number

Returns

Transaction

Properties

data

data: Uint8Array

Defined in: @nimiq/core/types/wasm/web.d.ts:1899

The transaction's data as a byte array.


fee

readonly fee: bigint

Defined in: @nimiq/core/types/wasm/web.d.ts:1879

The transaction's fee in luna (NIM's smallest unit).


feePerByte

readonly feePerByte: number

Defined in: @nimiq/core/types/wasm/web.d.ts:1883

The transaction's fee per byte in luna (NIM's smallest unit).


flags

readonly flags: TransactionFlag

Defined in: @nimiq/core/types/wasm/web.d.ts:1895

The transaction's flags: 0b1 = contract creation, 0b10 = signaling.


format

readonly format: TransactionFormat

Defined in: @nimiq/core/types/wasm/web.d.ts:1855

The transaction's TransactionFormat.


networkId

readonly networkId: number

Defined in: @nimiq/core/types/wasm/web.d.ts:1891

The transaction's network ID.


proof

proof: Uint8Array

Defined in: @nimiq/core/types/wasm/web.d.ts:1907

The transaction's signature proof as a byte array.


recipient

readonly recipient: Address

Defined in: @nimiq/core/types/wasm/web.d.ts:1867

The transaction's recipient address.


recipientType

readonly recipientType: AccountType

Defined in: @nimiq/core/types/wasm/web.d.ts:1871

The transaction's recipient AccountType.


sender

readonly sender: Address

Defined in: @nimiq/core/types/wasm/web.d.ts:1859

The transaction's sender address.


senderData

readonly senderData: Uint8Array

Defined in: @nimiq/core/types/wasm/web.d.ts:1903

The transaction's sender data as a byte array.


senderType

readonly senderType: AccountType

Defined in: @nimiq/core/types/wasm/web.d.ts:1863

The transaction's sender AccountType.


serializedSize

readonly serializedSize: number

Defined in: @nimiq/core/types/wasm/web.d.ts:1911

The transaction's byte size.


validityStartHeight

readonly validityStartHeight: number

Defined in: @nimiq/core/types/wasm/web.d.ts:1887

The transaction's validity-start height. The transaction is valid for 2 hours after this block height.


value

readonly value: bigint

Defined in: @nimiq/core/types/wasm/web.d.ts:1875

The transaction's value in luna (NIM's smallest unit).

Methods

__getClassname()

__getClassname(): string

Defined in: @nimiq/core/types/wasm/web.d.ts:1755

Returns

string


free()

free(): void

Defined in: @nimiq/core/types/wasm/web.d.ts:1754

Returns

void


getContractCreationAddress()

getContractCreationAddress(): Address

Defined in: @nimiq/core/types/wasm/web.d.ts:1818

Returns the address of the contract that is created with this transaction.

Returns

Address


hash()

hash(): string

Defined in: @nimiq/core/types/wasm/web.d.ts:1801

Computes the transaction's hash, which is used as its unique identifier on the blockchain.

Returns

string


isValidAt()

isValidAt(block_height): boolean

Defined in: @nimiq/core/types/wasm/web.d.ts:1814

Tests if the transaction is valid at the specified block height.

Parameters

block_height

number

Returns

boolean


serialize()

serialize(): Uint8Array

Defined in: @nimiq/core/types/wasm/web.d.ts:1826

Serializes the transaction to a byte array.

Returns

Uint8Array


serializeContent()

serializeContent(): Uint8Array

Defined in: @nimiq/core/types/wasm/web.d.ts:1822

Serializes the transaction's content to be used for creating its signature.

Returns

Uint8Array


sign()

sign(key_pair): void

Defined in: @nimiq/core/types/wasm/web.d.ts:1797

Signs the transaction with the provided key pair. Automatically determines the format of the signature proof required for the transaction.

Limitations

  • HTLC redemption is not supported and will throw.
  • For transaction to the staking contract, both signatures are made with the same keypair, so it is not possible to interact with a staker that is different from the sender address or using a different cold or signing key for validator transactions.

Parameters

key_pair

KeyPair

Returns

void


toHex()

toHex(): string

Defined in: @nimiq/core/types/wasm/web.d.ts:1830

Serializes the transaction into a HEX string.

Returns

string


toPlain()

toPlain(genesis_block_number?, genesis_timestamp?): PlainTransaction

Defined in: @nimiq/core/types/wasm/web.d.ts:1834

Creates a JSON-compatible plain object representing the transaction.

Parameters

genesis_block_number?

number

genesis_timestamp?

bigint

Returns

PlainTransaction


verify()

verify(network_id?): void

Defined in: @nimiq/core/types/wasm/web.d.ts:1810

Verifies that a transaction has valid properties and a valid signature proof. Optionally checks if the transaction is valid on the provided network.

Throws with any transaction validity error. Returns without exception if the transaction is valid.

Throws when the given networkId is unknown.

Parameters

network_id?

number

Returns

void


deserialize()

static deserialize(bytes): Transaction

Defined in: @nimiq/core/types/wasm/web.d.ts:1838

Deserializes a transaction from a byte array.

Parameters

bytes

Uint8Array

Returns

Transaction


fromAny()

static fromAny(tx): Transaction

Defined in: @nimiq/core/types/wasm/web.d.ts:1845

Parses a transaction from a Transaction instance, a plain object, a hex string representation, or a byte array.

Throws when a transaction cannot be parsed from the argument.

Parameters

tx

string | Uint8Array | PlainTransaction | Transaction

Returns

Transaction


fromPlain()

static fromPlain(plain): Transaction

Defined in: @nimiq/core/types/wasm/web.d.ts:1851

Parses a transaction from a plain object.

Throws when a transaction cannot be parsed from the argument.

Parameters

plain

PlainTransaction

Returns

Transaction