---
title: "O que é o Anchor e o Anchor Program Registry?"
description: "Aprenda a usar o Anchor e o Anchor Program Registry para construir aplicações na Solana"
---

# O que é o Anchor e o Anchor Program Registry?

Anchor é um dos principais frameworks de desenvolvimento para Solana, voltado à escrita de programas de alto nível seguros e eficientes na Solana. Um programa em Anchor é um smart contract na blockchain Solana que permite aos usuários ancorar dados na blockchain Solana. Devido à grande comunidade de desenvolvedores da Solana, os programas verificados na Solana são hospedados no Anchor Program Registry para facilitar o acesso.

Este artigo vai ajudar você a entender como usar uma das [ferramentas de desenvolvimento Solana mais importantes](http://www.alchemy.com/overviews/solana-developer-tools), o Anchor, e o Anchor Program Registry para construir na Solana. Também vamos comparar Anchor e Seahorse, um framework de desenvolvimento baseado em Python para interagir com a Solana.

## **O que é o modelo de contas da Solana?**

Tudo o que os desenvolvedores constroem na blockchain Solana envolve [**programs e accounts**](https://www.alchemy.com/overviews/solana-account-model), que executam e armazenam dados na blockchain. Existem diferentes categorias de accounts na Solana, incluindo:

- **Data accounts** - armazenam dados
- **Program accounts** - armazenam programas executáveis
- **Native accounts** - indicam programas nativos na Solana

E cada account armazena um conjunto de informações:

- **lamports** - número de lamports pertencentes à account
- **owner** - programa proprietário da account
- **executable** - verifica se a account pode processar instruções ou não
- **data** - array de bytes de dados brutos armazenado pela account
- **rent_epoch** - próxima epoch em que a account [deverá pagar taxas de rent](https://www.alchemy.com/overviews/how-to-calculate-rent-for-solana-programs)

## **O que é o Anchor?**

[**Anchor**](https://www.anchor-lang.com/) é um framework usado para escrever programas seguros e de alto nível na Solana, que abstrai a construção de baixo nível de accounts e a modificação das interfaces dos seus programas Solana.

Um framework atua como uma base para que os usuários não precisem criar lógica desnecessária do zero, ajuda a evitar código redundante e a escrever programas limpos e seguros. Especificamente, o Anchor fornece accounts desserializadas e dados de instrução por meio de boilerplates, uma interface de linha de comando (CLI) e um workspace para [desenvolver aplicativos Solana](https://www.alchemy.com/overviews/learn-solana-development).

### **Como o Anchor funciona?**

O Anchor usa macros e traits para gerar código Rust boilerplate para o desenvolvedor. Todo programa Anchor consiste em três componentes:

1. **declare_id** - uma macro usada para declarar o endereço on-chain do programa
1. **\#\[program\]** - macro de atributo usada para indicar o módulo que contém a lógica de instrução do programa
1. **\#\[account\]** - macro de atributo usada para definir tipos de account personalizados para o programa

**Aqui está a estrutura básica de um programa Anchor:**

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

### **1. Criar um keypair padrão**

Ao construir um programa Anchor pela primeira vez, ele gera um novo par de chaves que serve como keypair padrão para implantar o programa.

A chave pública deve ser usada como o programID especificado na macro declare_id!

### **2. Instruir o programa**

Em seguida, podemos instruir o programa separadamente usando o atributo \#\[program\]. Cada função de instrução requer um parâmetro do tipo **Context** e pode, opcionalmente, incluir parâmetros de função adicionais representando dados de instrução. O Anchor cuida automaticamente da desserialização dos dados de instrução, de forma que o usuário possa trabalhar com esses dados como tipos Rust.

### **3. Implementar um desserializador de account**

_\#\[derive\(Accounts\)\]_ implementa um desserializador de Account na struct fornecida e elimina a necessidade de desserializar cada account manualmente. Isso é responsável por realizar todas as verificações de restrição necessárias e garantir que as accounts atendam às condições exigidas para que o programa funcione com segurança.

### **4. Invocar a função initialize**

Quando a função Initialize é invocada, o programa:

- Verifica se as accounts passadas para a instrução correspondem aos tipos de account especificados na struct Initialize
- Verifica as accounts em relação a quaisquer restrições adicionais especificadas

É assim que um programa Anchor funciona e permite que você comece a construir programas Anchor. Para saber mais sobre programas Anchor, é altamente recomendável consultar a documentação oficial.

## **O que é o Anchor Program Registry \(APR\)?**

**O Anchor Program Registry (APR) é um diretório de programas Anchor registrados na blockchain Solana, permitindo que os usuários os localizem e acessem facilmente. O APR garante que os programas Anchor sejam registrados e autenticados na blockchain.**

Há vários programas no Anchor Program Registry para facilitar o seu trabalho. Vejamos alguns exemplos:

- token_signer - fornece um conjunto de programas para gerenciamento de chaves e segurança na Solana.
- spl_governance - uma coleção de programas on-chain voltados para o **Sealevel parallel runtime.**
- crate_token - permite que qualquer pessoa crie, gerencie e negocie uma cesta tokenizada de ativos.

### **Como os desenvolvedores Solana usam o Anchor Program Registry?**

Os desenvolvedores Solana usam o Anchor Program Registry para acessar programas verificados na blockchain Solana. O Anchor Program Registry catalga o código-fonte de programas verificados, permitindo que os desenvolvedores acessem um repositório de código funcional.

Você pode seguir o fluxo abaixo para usar o Anchor Program Registry:

1. Acesse o endereço de um Anchor Program
1. Conecte sua wallet
1. Acesse a UI
1. Assine e envie uma transação para executar uma instrução

A interface do APR fornece uma lista de instruções que o programa Anchor suporta e campos de formulário que você pode usar para configurar os inputs de uma determinada instrução.

## **O que é o Seahorse?**

Seahorse é um framework de desenvolvimento Solana como o Anchor, mas construído para desenvolvedores Python. O Seahorse fornece um conjunto de ferramentas para construir, implantar e interagir com programs e accounts na blockchain Solana. Ele suporta diferentes linguagens de programação como JavaScript, Rust e Python, com recursos e documentação completos para novos desenvolvedores.

### **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>Linguagens de programação suportadas</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>Foco</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Flexibilidade e escalabilidade</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Experiência do usuário e facilidade de uso</p>", tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": { title: "<p>Ferramentas e recursos</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Desenvolvimento de smart contracts</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Desenvolvimento de aplicações descentralizadas</p>", tooltip: "", icon: "" },
        id: 2,
      },
      {
        "1": { title: "<p>Ambiente de desenvolvimento local</p>", tooltip: "", icon: "" },
        "2": { title: true, tooltip: "", icon: "" },
        "3": { title: true, tooltip: "", icon: "" },
        id: 3,
      },
      {
        "1": { title: "<p>Testnet para executar simulações</p>", tooltip: "", icon: "" },
        "2": { title: true, tooltip: "", icon: "" },
        "3": { title: true, tooltip: "", icon: "" },
        id: 4,
      },
      {
        "1": { title: "<p>Documentação e recursos</p>", tooltip: "", icon: "" },
        "2": { title: true, tooltip: "", icon: "" },
        "3": { title: true, tooltip: "", icon: "" },
        id: 5,
      },
    ],
  }}
/>

## **Recursos para aprender Anchor**

Existem vários recursos disponíveis para ajudar você a aprender sobre o framework Anchor:

1. [Anchor Docs](https://www.anchor-lang.com/) - encontre as informações mais relevantes e atualizadas
1. [Soldev](https://soldev.app/course) - comece a desenvolver smart contracts com Anchor usando código de exemplo
1. [Sol Playground](https://beta.solpg.io/) - comece a desenvolver programas com Anchor usando uma IDE online

Existem muitos recursos disponíveis para ajudar você a aprender sobre o framework Anchor e começar a construir suas próprias aplicações descentralizadas.

## **Comece a desenvolver com Anchor e Alchemy**

O framework Anchor é uma ferramenta valiosa para construir **programas Solana (smart contracts) confiáveis e seguros**. Além disso, o Anchor Program Registry é um diretório de programas verificados na blockchain Solana, sendo um recurso essencial para permitir melhor composability.

A versatilidade e a escalabilidade do framework Anchor o tornam uma escolha atraente para desenvolvedores Solana. Se você está pronto para começar sua jornada de desenvolvimento na Solana, cadastre-se para uma [conta Solana RPC](https://dashboard.alchemy.com/signup/?a=solana-anchor) gratuita hoje mesmo!
