Pular para o conteúdo

state_foreign

  • Lê um ID de Conta de 20 bytes a partir de aread_ptr
  • Lê uma chave do Estado do Hook de 32 bytes a partir de kread_ptr
  • Escreve os dados (valor) dessa chave, nesse ID de Conta, no buffer apontado por write_ptr
int64_t state_foreign (
uint32_t write_ptr,
uint32_t write_len,
uint32_t kread_ptr,
uint32_t kread_len,
uint32_t nread_ptr,
uint32_t nread_len,
uint32_t aread_ptr,
uint32_t aread_len
);
#define SBUF(str) (uint32_t)(str), sizeof(str)
uint8_t ns[32] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int64_t lookup =
state_foreign(SBUF(blacklist_status), SBUF(otxn_accid), SBUF(ns), SBUF(blacklist_accid));
if (lookup < 0)
rollback(SBUF("Error: could not find key on foreign state."), 1);
NomeTipoDescrição
write_ptruint32_tUm ponteiro para o buffer no qual escrever os dados do Estado do Hook.
write_lenuint32_tO tamanho do buffer de escrita.
kread_ptruint32_tPonteiro para um buffer contendo a chave do Estado do Hook.
kread_lenuint32_tO tamanho da chave do Estado do Hook. (Deve ser 32.)
nread_ptruint32_tUm ponteiro para o buffer contendo o Namespace de 32 bytes no qual buscar o estado
nread_lenuint32_tO tamanho do buffer de namespace (deve ser 32).
aread_ptruint32_tUm ponteiro para um buffer contendo o ID de Conta de 20 bytes no qual buscar o estado.
aread_lenuint32_tO tamanho do buffer de Conta. (Deve ser sempre 20).
TipoDescrição
int64_t

O número de bytes escritos no buffer de escrita.

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

DOESNT_EXIST
- a chave do Estado do Hook especificada não possui um valor associado no ledger no momento da chamada.

TOO_BIG
- a chave especificada por read_ptr e read_len era maior que 32 bytes.

TOO_SMALL
- o buffer de saída era muito pequeno para armazenar os dados do Estado do Hook.

INVALID_ACCOUNT
- a conta especificada em aread_ptr é inválida ou não existe.