SDK de Go - Obtener Datos
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
recuperarán datos de la cadena, por ejemplo Account
, AccountResources
, Transactions
.
Aquí hay un ejemplo mostrando cómo obtener datos comunes que puedes necesitar en tu aplicación:
client, err := aptos.NewClient(aptos.DevnetConfig)if err != nil { panic("Failed to create client:" + err.Error())}
address := aptos.AccountAddress{}err := address.ParseStringRelaxed("0x123")if err != nil { panic("Failed to parse address:" + err.Error())}
accountInfo, err := client.Account(address)resources, err := client.AccountResources(address)transactions, err := client.Transactions()
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 client.QueryIndexer()
así:
var out []CoinBalance var q struct { Current_coin_balances []struct { CoinType string `graphql:"coin_type"` Amount uint64 OwnerAddress string `graphql:"owner_address"` } `graphql:"current_coin_balances(where: {owner_address: {_eq: $address}})"` }
variables := map[string]any{ "address": address.StringLong(), } err := ic.Query(&q, variables)
if err != nil { return nil, err }
for _, coin := range q.Current_coin_balances { out = append(out, CoinBalance{ CoinType: coin.CoinType, Amount: coin.Amount, }) }
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 client.View
.
Por ejemplo, puedes buscar la red que estás usando con la función de vista chain_id
:
viewResponse, err := client.View(&aptos.ViewPayload { Module: aptos.ModuleId{Address: aptos.AccountAddress{}, Name: "chain_id"}, Function: "get", ArgTypes: []aptos.TypeTag{}, Args: [][]byte{},)
chainId := viewResponse[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 esperar en una versión específica del indexador.
// Esperar en processorName para alcanzar la versión 12345err := client.WaitOnIndexer("processorName", 12345)