Output a field from the originating transaction as a human readable string

Behaviour

  • Find the specified sf field in the originating transaction
  • Write the human readable version of the field to the output buffer as a utf-8 string

Definition

int64_t otxn_field_txt (
    uint32_t write_ptr,
    uint32_t write_len,
    uint32_t field_id
);

Example

uint8_t output[50];
int64_t account_field_len = 
    otxn_field_txt(output, 50, sfAccount);

Parameters

Name

Type

Description

write_ptr

uint32_t

Pointer to a buffer of a suitable size to store the output.

write_len

uint32_t

Length of the output buffer.

field_id

uint32_t

The sf code of the field you are searching for.

To compute this manually take the serialized type and shift it into the 16 highest bits of uint32_t, then take the field and place it in the 16 lowest bits.

For example:
sfEmitNonce has type 5 and field 11 thus its value is 0x050BU

📘

Hint

This function is rarely used, you probably want otxn_field

Return Code

Type

Description

int64_t

The number of bytes written

If negative, an error:
OUT_OF_BOUNDS

  • pointers/lengths specified outside of hook memory.

TOO_SMALL

  • output buffer was not large enough to hold the stringified field

INVALID_FIELD

  • the sf field_id was invalid

DOESNT_EXIST

  • the field was not found in the originating transaction