Skip to main content

Module 0x2::tx_context

Struct TxContext

Information about the transaction currently being executed. This cannot be constructed by a transaction. It is a privileged object created by the VM and passed in to the entrypoint of the transaction as &mut TxContext.

struct TxContext has drop

Fields
sender: address

The address of the user that signed the current transaction

tx_hash: vector<u8>

Hash of the current transaction

epoch: u64

The current epoch number

epoch_timestamp_ms: u64

Timestamp that the epoch started at

ids_created: u64

Counter recording the number of fresh id's created while executing this transaction. Always 0 at the start of a transaction

Function sender

Return the address of the user that signed the current transaction

public fun sender(self: &tx_context::TxContext): address

Implementation

public fun sender(self: &TxContext): address { self.sender }

Function digest

Return the transaction digest (hash of transaction inputs). Please do not use as a source of randomness.

public fun digest(self: &tx_context::TxContext): &vector<u8>

Implementation

public fun digest(self: &TxContext): &vector<u8> { &self.tx_hash }

Function epoch

Return the current epoch

public fun epoch(self: &tx_context::TxContext): u64

Implementation

public fun epoch(self: &TxContext): u64 { self.epoch }

Function epoch_timestamp_ms

Return the epoch start time as a unix timestamp in milliseconds.

public fun epoch_timestamp_ms(self: &tx_context::TxContext): u64

Implementation

public fun epoch_timestamp_ms(self: &TxContext): u64 { self.epoch_timestamp_ms }

Function fresh_object_address

Create an address that has not been used. As it is an object address, it will never occur as the address for a user. In other words, the generated address is a globally unique object ID.

public fun fresh_object_address(ctx: &mut tx_context::TxContext): address

Implementation

public fun fresh_object_address(ctx: &mut TxContext): address { let ids_created = ctx.ids_created; let id = derive_id(*&ctx.tx_hash, ids_created); ctx.ids_created = ids_created + 1; id }

Function ids_created

Return the number of id's created by the current transaction. Hidden for now, but may expose later

fun ids_created(self: &tx_context::TxContext): u64

Implementation

fun ids_created(self: &TxContext): u64 { self.ids_created }

Function derive_id

Native function for deriving an ID via hash(tx_hash || ids_created)

fun derive_id(tx_hash: vector<u8>, ids_created: u64): address

Implementation

native fun derive_id(tx_hash: vector<u8>, ids_created: u64): address;