Obtener Datos via SDK
Puedes usar el cliente Aptos
para obtener datos de la cadena usando una variedad de funciones de ayuda. Específicamente, muchas de las funciones listadas en la documentación de referencia aquí que comienzan con get...
recuperarán datos de la cadena.
Aquí hay un ejemplo mostrando cómo obtener datos comunes que puedes necesitar en tu aplicación:
const aptosConfig = new AptosConfig({ network: Network.DEVNET });const aptos = new Aptos(aptosConfig);
const fund = await aptos.getAccountInfo({ accountAddress: "0x123" });const modules = await aptos.getAccountModules({ accountAddress: "0x123" });const tokens = await aptos.getAccountOwnedTokens({ accountAddress: "0x123" });
El cliente Aptos
puede por defecto consultar tanto datos de red desde fullnodes como la API del Indexador que contiene datos agregados y enriquecidos. Si quieres usar una consulta personalizada para datos de la API del Indexador, puedes usar aptos.queryIndexer
así:
const ledgerInfo = await aptos.queryIndexer({ query: { query: ` query MyQuery { ledger_infos { chain_id } } ` } })
Usando Consultas Genéricas
Sección titulada «Usando Consultas Genéricas»Algunas consultas son intencionalmente amplias, pero esto puede hacer difícil inferir el tipo de retorno apropiado. Para acomodar eso, estas solicitudes amplias como getAccountResources
te permiten especificar cuál debería ser el tipo de respuesta esperado.
type Coin = { coin: { value: string } };
const resource = await aptos.getAccountResource<Coin>({ accountAddress: testAccount.accountAddress, resourceType: "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>",});
// Ahora tienes acceso a la propiedad del tipo de respuestaconst value = resource.coin.value;
Usando Funciones de Vista Move
Sección titulada «Usando Funciones de Vista Move»Puedes llamar funciones de vista que retornan datos personalizados de la cadena usando aptos.view
.
Por ejemplo, puedes buscar la red que estás usando con la función de vista chain_id
:
const payload: InputViewFunctionData = { function: "0x1::chain_id::get",};
const chainId = (await aptos.view({ payload }))[0];
Asegurar Datos Frescos del Indexador
Sección titulada «Asegurar Datos Frescos del Indexador»Detrás de escena, algunas solicitudes usan la API del Indexador para acceder a datos que han sido procesados o agregados. Ese análisis adicional puede tomar un poco de tiempo, por lo que los datos pueden estar ligeramente atrasados respecto al ledger más reciente.
Si quieres asegurar que los datos estén frescos, puedes especificar el minimumLedgerVersion
en cualquier solicitud que use la API del Indexador.
// Obtener el número de versión del ledger más recienteconst ledgerVersion = await aptos.getLedgerInfo().ledger_version;
const tokens = await aptos.getAccountOwnedTokens({ accountAddress: alice.accountAddress, minimumLedgerVersion: BigInt(response.version),});
También puedes asegurar que tu solicitud tenga los datos de una transacción que enviaste obteniendo la versión del ledger de la validación de la transacción misma.
// Esperar una transacción que acabas de enviarconst response = await aptos.waitForTransaction({ transactionHash: pendingTransaction.hash,});
// Luego buscar cómo esa transacción afectó la cuenta de aliceconst tokens = await aptos.getAccountOwnedTokens({ accountAddress: alice.accountAddress, minimumLedgerVersion: BigInt(response.version),});