---
title: "¿Qué es Anchor y el Anchor Program Registry?"
description: "Aprende a usar Anchor y el Anchor Program Registry para construir aplicaciones en Solana"
---

# ¿Qué es Anchor y el Anchor Program Registry?

Anchor lidera los frameworks de desarrollo de Solana para escribir programas de alto nivel seguros y eficientes en Solana. Un programa en Anchor es un contrato inteligente en la blockchain de Solana que permite a los usuarios anclar datos a la blockchain de Solana. Debido a la enorme comunidad de desarrolladores de Solana, los programas verificados en Solana se alojan en el Anchor Program Registry para facilitar el acceso a ellos.

Este artículo te ayudará a entender cómo usar una de las [herramientas de desarrollo de Solana más importantes](http://www.alchemy.com/overviews/solana-developer-tools), Anchor, y el Anchor Program Registry para construir en Solana. También compararemos Anchor y Seahorse, un framework de desarrollo basado en Python para interactuar con Solana.

## **¿Qué es el modelo de cuentas de Solana?**

Todo lo que los desarrolladores construyen en la blockchain de Solana involucra [**programas y cuentas**](https://www.alchemy.com/overviews/solana-account-model), que ejecutan y almacenan datos en la blockchain. Existen diferentes categorías de cuentas en Solana, entre ellas:

- **Cuentas de datos**: almacenan datos
- **Cuentas de programa**: almacenan programas ejecutables
- **Cuentas nativas**: indican programas nativos en Solana

Y cada cuenta almacena un conjunto de información:

- **lamports**: número de lamports que posee la cuenta
- **owner**: programa propietario de la cuenta
- **executable**: indica si la cuenta puede procesar instrucciones o no
- **data**: array de bytes de datos crudos almacenados por la cuenta
- **rent_epoch**: próxima epoch en la que la cuenta [deberá pagar rent fees](https://www.alchemy.com/overviews/how-to-calculate-rent-for-solana-programs)

## **¿Qué es Anchor?**

[**Anchor**](https://www.anchor-lang.com/) es un framework usado para escribir programas seguros y de alto nivel en Solana, que abstrae la construcción de bajo nivel de las cuentas y la modificación de las interfaces de tus programas de Solana.

Un framework actúa como base para que los usuarios no tengan que crear lógica innecesaria desde cero, ayuda a los usuarios a evitar código redundante y les permite escribir programas limpios y seguros. En concreto, Anchor proporciona cuentas y datos de instrucción deserializados mediante boilerplates, una interfaz de línea de comandos (CLI) y un workspace para [desarrollar aplicaciones de Solana](https://www.alchemy.com/overviews/learn-solana-development).

### **¿Cómo funciona Anchor?**

Anchor usa macros y traits para generar código Rust boilerplate para el desarrollador. Todo programa de Anchor consta de tres componentes:

1. **declare_id**: una macro usada para declarar la dirección on-chain del programa
1. **\#\[program\]**: macro de atributo usada para denotar el módulo que contiene la lógica de instrucciones del programa
1. **\#\[account\]**: macro de atributo usada para definir tipos de cuenta personalizados para el programa

**Esta es la estructura básica de un programa de Anchor:**

<ImageBlock
  src="https://media.alchemy.com/1703690818-basic-structure-of-an-anchor-program.png"
  alt="Estructura básica de un programa Anchor"
  width={1600}
  height={1080}
  caption="Estructura básica de un programa Anchor"
/>

### **1. Crear un keypair por defecto**

Cuando construimos un programa de Anchor por primera vez, se genera un nuevo keypair que sirve como keypair por defecto para desplegar el programa.

La clave pública debe usarse como el programID especificado en la macro declare_id!.

### **2. Instruir al programa**

Luego, podemos instruir al programa por separado usando el atributo \#\[program\]. Cada función de instrucción requiere un parámetro de tipo **Context** y puede incluir opcionalmente parámetros de función adicionales que representan datos de instrucción. Anchor manejará automáticamente la deserialización de los datos de instrucción para que el usuario pueda trabajar con ellos como tipos de Rust.

### **3. Implementar un deserializador de cuentas**

_\#\[derive\(Accounts\)\]_ implementa un deserializador de Account en el struct dado y elimina la necesidad de deserializar cada cuenta manualmente. Esto se encarga de realizar todas las verificaciones de restricciones requeridas y de asegurar que las cuentas cumplan las condiciones necesarias para que el programa funcione de forma segura.

### **4. Invocar la función initialize**

Cuando se invoca la función Initialize, el programa:

- Verifica que las cuentas pasadas a la instrucción coincidan con los tipos de cuenta especificados en el struct Initialize
- Verifica las cuentas contra cualquier restricción adicional especificada

Así es como funciona un programa de Anchor y te permite empezar a construir programas de Anchor. Para saber más sobre los programas de Anchor, se recomienda revisar su documentación.

## **¿Qué es el Anchor Program Registry (APR)?**

**El Anchor Program Registry (APR) es un directorio de programas de Anchor que han sido registrados en la blockchain de Solana, lo que permite a los usuarios localizarlos y acceder a ellos fácilmente. El APR garantiza que los programas de Anchor estén registrados y autenticados en la blockchain.**

Hay varios programas en el Anchor Program Registry que facilitan tu trabajo. Veamos algunos ejemplos:

- token_signer: ofrece un conjunto de programas para la gestión de claves y la seguridad en Solana.
- spl_governance: una colección de programas on-chain orientados al **Sealevel parallel runtime**.
- crate_token: permite a cualquiera crear, gestionar y comerciar una canasta tokenizada de activos.

### **¿Cómo usan los desarrolladores de Solana el Anchor Program Registry?**

Los desarrolladores de Solana usan el Anchor Program Registry para acceder a programas verificados en la blockchain de Solana. El Anchor Program Registry cataloga el código fuente de los programas verificados, lo que permite a los desarrolladores acceder a un repositorio de código funcional.

Puedes seguir el siguiente flujo para usar el Anchor Program Registry:

1. Visita la dirección de un Anchor Program
1. Conecta tu wallet
1. Accede a la UI
1. Firma y envía una transacción para ejecutar una instrucción

La interfaz del APR ofrece una lista de instrucciones que soporta el programa de Anchor y campos de formulario que puedes usar para configurar los inputs de una instrucción dada.

## **¿Qué es Seahorse?**

Seahorse es un framework de desarrollo de Solana como Anchor, pero está construido para desarrolladores de Python. Seahorse proporciona un conjunto de herramientas para construir, desplegar e interactuar con programas y cuentas en la blockchain de Solana. Soporta distintos lenguajes de programación como JavaScript, Rust y Python, con recursos y documentación completos para nuevos desarrolladores.

### **Anchor vs. Seahorse**

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "Feature", dataType: "object" },
      { key: "2", width: 200, title: "Seahorse", dataType: "object" },
      { key: "3", width: 200, title: "Anchor", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>Lenguajes de programación soportados</p>", tooltip: "", icon: "" },
        "2": { title: "<p>JavaScript, Rust, Python</p>", tooltip: "", icon: "" },
        "3": { title: "<p>JavaScript, TypeScript</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p>Enfoque</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Flexibilidad y escalabilidad</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Experiencia de usuario y facilidad de uso</p>", tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": { title: "<p>Herramientas y funciones</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Desarrollo de contratos inteligentes</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Desarrollo de aplicaciones descentralizadas</p>", tooltip: "", icon: "" },
        id: 2,
      },
      {
        "1": { title: "<p>Entorno de desarrollo local</p>", tooltip: "", icon: "" },
        "2": { title: true, tooltip: "", icon: "" },
        "3": { title: true, tooltip: "", icon: "" },
        id: 3,
      },
      {
        "1": { title: "<p>Testnet para ejecutar simulaciones</p>", tooltip: "", icon: "" },
        "2": { title: true, tooltip: "", icon: "" },
        "3": { title: true, tooltip: "", icon: "" },
        id: 4,
      },
      {
        "1": { title: "<p>Documentación y recursos</p>", tooltip: "", icon: "" },
        "2": { title: true, tooltip: "", icon: "" },
        "3": { title: true, tooltip: "", icon: "" },
        id: 5,
      },
    ],
  }}
/>

## **Recursos para aprender Anchor**

Hay varios recursos disponibles para ayudarte a aprender sobre el framework Anchor:

1. [Anchor Docs](https://www.anchor-lang.com/): encuentra la información más relevante y actualizada
1. [Soldev](https://soldev.app/course): empieza a desarrollar contratos inteligentes con Anchor con código de ejemplo
1. [Sol Playground](https://beta.solpg.io/): empieza a desarrollar programas con Anchor usando un IDE en línea

Hay muchos recursos disponibles para ayudarte a aprender sobre el framework Anchor y comenzar a construir tus propias aplicaciones descentralizadas.

## **Empieza a desarrollar con Anchor y Alchemy**

El framework Anchor es una herramienta valiosa para construir **programas de Solana (contratos inteligentes) confiables y seguros**. Además, el Anchor Program Registry es un directorio de programas verificados en la blockchain de Solana, y es un recurso fundamental para lograr una mejor composabilidad.

La versatilidad y escalabilidad del framework Anchor lo convierten en una opción atractiva para los desarrolladores de Solana. Si estás listo para comenzar tu recorrido en el desarrollo con Solana, regístrate hoy para obtener una cuenta gratuita de [Solana RPC](https://dashboard.alchemy.com/signup/?a=solana-anchor).
