Construye en Flow: Aprende FCL - 7. Como consultar una cuenta en Flow por su dirección
Tags: javascript, flow, fcl, web3
Published: 2022-06-13 03:54:03

## Resumen

En el post anterior, cubrimos como colectar información acerca de bloques en la cadena. Hoy cubriremos como puedes consultar información acerca de una cuenta especifica usando la función `account`.

Los dos casos de uso mas comunes, y que tu aprenderás hoy serán:

- obtener el balance actual de una cuenta en FLOW.
- traer una lista de contractos desplegados en la cuenta.

### Paso 1 - Instalación

Añade `"@onflow/fcl": "1.0.0"` como tu dependencia.

### Paso 2 - Configuración

Justo como la última last vez, importaremos los métodos necesarios y configuraremos FCL:

```jsx
// Importa los métodos de FCL
import { account, query, config } from "@onflow/fcl";

// Especifica el endpoint de la API - esta vez usaremos Mainnet
const api = "https://rest-mainnet.onflow.org";

// Configura FCL para usar mainnet como el nodo de acceso
config().put("accessNode.api", api);
```

### Paso 3 - Copiar el resolvedor

Siempre es bueno aplicar conocimiento previo y practicar. Traigamos de vuelta la función resolvedora de la [lección 4](https://dev.to/onflow/construye-en-flow-aprende-fcl-4-como-resolver-identidades-en-find-a-direcciones-en-flow-26nm) para usarla en nuestro ejemplo: 

```jsx
const resolveName = async (name) => {
	const cadence = `
    import FIND from 0x097bafa4e0b48eef

    pub fun main(name: String): Address?{
      return FIND.lookupAddress(name)
    }
  `;

  const args = (arg, t) => [arg(name, t.String)];
  return await query({ cadence, args });
};
```

### Paso 4 - Encontrando la cuenta

Tratemos de resolver la identidad `flovatar` y exploremos que tiene para nosotros😊

Usaremos nuestro bloque invocado inmediatamente como siempre: 

```jsx
// Usaremos IIFE para ejecutar nuestro codigo inmediatamente 
(async () => {
  console.clear();

  const address = await resolveName("flovatar")

	// es posible que name sea resuelto a "null" 
	// agreguemos algo de protección basica en esta parte
	if (address){
    const accountInfo = await account(address);
    console.log({ accountInfo });
	}
})();
```

Después de que el polvo se asiente, deberías ver el código en la consola: 

```jsx
{
	address: "921ea449dffec68a",
	balance: 13052726819120,
	code: "",
	contracts: Object,
	keys: Array(2),
}
```

Esos 5 valores son respectivamente:: 

- `address` **-** dirección de una cuenta (nota el prefijo `0x` faltante si deseas usarlo en el futuro)
- `balance` - cantidad de tokens FLOW en formato UFix64. Divide por `Math.pow(10,8)` para obtener un valor float.
- `code` - este es un valor deprecado, previamente fue usado para almacenar código del contrato desplegado a la cuenta. Antes solo era posible almacenar un solo contrato por cuenta.
- `contracts` - objeto representando contratos desplegados. Las llaves son los nombres de los contratos y los valores son código en Cadence del respectivo contrato.
- `keys` - lista de llaves asociadas a una cuenta.

Puedes encontrar mas información acerca de ellos en la documentación de Flow - [https://docs.onflow.org/fcl/reference/api/#blockobject](https://docs.onflow.org/fcl/reference/api/#blockobject)

## Otras maneras de explorar una cuenta

Hay formas de explorar una cuenta específica: 

- **Flow View Source** - [https://flow-view-source.com/mainnet/account/0x5916e847260714b6](https://flow-view-source.com/mainnet/account/0x5916e847260714b6) - es un proyecto de la comunidad hecho por el creador original de FCL - James Hunter - [https://github.com/orodio](https://github.com/orodio)
- **Flowscan** - [https://flowscan.org/account/0x5916e847260714b6](https://flowscan.org/account/0x5916e847260714b6) - la página de Flowscan te mostrará mas información acerca de transacciones y transferencias gracias a que procesa los bloques detrás de escenas para acumular esa información.

Hasta la próxima 👋

## Recursos

- **Código del ejemplo** - [https://codesandbox.io/s/dev-to-fcl-07-get-account-j9rxkm?file=/src/index.js](https://codesandbox.io/s/dev-to-fcl-07-get-account-j9rxkm?file=/src/index.js)

Otros recursos que podrías encontrar útil:

- **Documentación de  Flow** - [https://docs.onflow.org/](https://docs.onflow.org/) - más información de tallada acerca de Flow blockchain y como interactuar con ella.
- **Flow Portal** - [https://flow.com/](https://flow.com/) - tu punto de entrada a Flow.
- **FCL JS** - [https://github.com/onflow/fcl-js](https://github.com/onflow/fcl-js) - Código fuente y la habilidad de contribuir a la librería FCL JS.
- **Cadence** - [https://docs.onflow.org/cadence/](https://docs.onflow.org/cadence/) - Introducción a Cadence
- **Codesandbox** - [https://codesandbox.io](https://codesandbox.io/) - Un asombroso IDE en el navegador para prototipar.

*Esta es una traducción al español del séptimo artículo de la serie Build on Flow | Learn FCL escrito por [Maksimus Starka](https://twitter.com/MaxStalker).*