Pular para o conteúdo

otxn_field

  • Localiza o campo sf especificado na transação de origem
  • Escreve a versão serializada do campo no buffer de saída
int64_t otxn_field (
uint32_t write_ptr,
uint32_t write_len,
uint32_t field_id
);
int64_t account_field_len =
otxn_field(account_field, 20, sfAccount);
NomeTipoDescrição
write_ptruint32_tPonteiro para um buffer de tamanho adequado para armazenar a saída.
write_lenuint32_tTamanho do buffer de saída.
field_iduint32_t

O código sf do campo que você está procurando.

Para calcular isso manualmente, pegue o type serializado e desloque-o para os 16 bits mais altos do uint32_t, depois pegue o field e coloque-o nos 16 bits mais baixos.

Por exemplo:
sfEmitNonce tem type 5 e field 11, portanto seu valor é 0x050BU

TipoDescrição
int64_t

O número de bytes escritos

Se negativo, um erro:
OUT_OF_BOUNDS
- ponteiros/tamanhos especificados fora da memória do hook.

TOO_SMALL
- o buffer de saída não era grande o suficiente para conter o campo serializado

INVALID_FIELD
- o field_id sf era inválido

DOESNT_EXIST
- o campo não foi encontrado na transação de origem