---
title: "Como escrever programas Solana em Python usando Seahorse"
description: "Um guia para desenvolvedores Python sobre como escrever aplicações Solana"
---

# Como escrever programas Solana em Python usando Seahorse

Solana é uma rede blockchain de alta performance com funcionalidade de smart contract construída para escalar rumo à adoção global. Solana processa uma média de 3.000 transações por segundo, e é um dos protocolos blockchain mais rápidos. Solana Programs são smart contracts escritos na rede blockchain Solana usados para executar toda atividade, incluindo transferências de token, cunhagem de NFTs e votação on-chain.

Este artigo explica como escrever Solana Programs em Python usando o framework de desenvolvimento Seahorse, tanto a partir de um ambiente de desenvolvimento local quanto de uma IDE online.

## **Quais são as principais formas de desenvolver programas em Solana?**

**Para desenvolver Solana Programs, você precisa aprender Rust, construir com o framework de desenvolvimento Anchor, ou usar Seahorse, um framework de desenvolvimento pythonic para Solana.**

Rust é a linguagem de programação sobre a qual Solana foi construída, e é a[ linguagem de programação web3](https://www.alchemy.com/overviews/web3-programming-languages) padrão que pode ser usada para interagir com o Sealevel Runtime da Solana.

### **Desenvolvendo em Solana com anchor**

**Anchor é um framework usado para facilitar o desenvolvimento de aplicações Solana, abstraindo as complexidades da linguagem Rust para o usuário comum.**

Anchor fornece aos desenvolvedores Solana ferramentas como a Interface Definition Language \(IDL\), pacotes Typescript que geram clientes a partir do IDL, crates Rust, e Command Line Interface \(CLI\).

### **Desenvolvendo em Solana com Seahorse**

**Seahorse é um framework de desenvolvimento Solana conduzido pela comunidade que dá aos desenvolvedores a capacidade de escrever Solana programs na linguagem de programação Python.**

**‍**Seahorse permite que todo programa escrito em Python tenha as mesmas medidas de segurança presentes nos programas Rust. Seahorse é totalmente compatível com Anchor, e também é interoperável com código Rust.

**Python é usado na programação cotidiana de aplicações web e projetos de machine learning, e é a linguagem de programação mais popular.**

Como muitos desenvolvedores interessados em construir aplicações baseadas em blockchain já podem ter habilidades de programação em Python, eles podem usar Seahorse para construir uma aplicação Solana sem precisar aprender uma linguagem de programação totalmente nova \(Rust\).

## **Como usar Seahorse com um ambiente de desenvolvimento Solana local**

Uma plataforma como Solana Playground serve apenas para construir e testar aplicações rapidamente e não deve ser usada como dependência para criar [apps](https://www.alchemy.com/dapps/top/defi-dapps) em larga escala. Para configurar o ambiente necessário para construir com Seahorse em nosso workspace local, vamos instalar o seguinte:

1. Rust
1. O Solana Tool Suite
1. Node
1. Anchor
1. Seahorse

### **1. Instale as ferramentas essenciais de desenvolvimento Solana**

Para instalar Rust, o Solana Tool Suite, Node e Anchor, consulte este tutorial sobre [configuração de um ambiente de desenvolvimento Solana local](https://www.alchemy.com/docs/reference/solana-api-quickstart).

Se você estiver rodando uma máquina baseada em Linux, pode ser necessário executar o comando a seguir para adicionar dependências adicionais:

### **2. Instale o Seahorse**

Seahorse depende de _Anchor_ e do _Rustfmt_ para funcionar corretamente. Como Anchor já deve estar funcionando na sua máquina, instalar o pacote _Rustfmt_ e o _Anchor_ é simples.

Execute o comando a seguir para adicionar o pacote Rustfmt:

**Execute o comando a seguir no seu terminal para instalar o Seahorse:**

**Execute um último comando para verificar se o Seahorse foi instalado corretamente:**

### 3. Gere uma paper wallet

Como você já tem as [Solana Command Line Tools](https://www.alchemy.com/overviews/solana-developer-tools) instaladas, você pode criar uma "paper wallet" local para usar enquanto trabalha localmente.

Execute o comando a seguir para verificar se as ferramentas CLI da Solana estão instaladas:

**Em seguida, digite o próximo comando para gerar um novo keypair:**

Salve os detalhes de forma segura para poder começar a usá-los no seu ambiente local.

**Para financiar sua paper wallet:**

Execute o comando `solana airdrop 2` para adquirir 2 tokens SOL de teste

Se você quiser usar um ambiente de desenvolvimento online para testar o Seahorse em vez de rodá-lo localmente, uma boa opção é o Solana Playground.

## **Como configurar o Seahorse com o Solana playground**

Solana Playground é um[ Integrated Development Environment](https://www.alchemy.com/overviews/solidity-ide) online construído para acelerar o início do desenvolvimento de aplicações Solana.

[Solana Playground](https://www.alchemy.com/overviews/solidity-ide) oferece os seguintes Crates pré-construídos:

1. **Native** \(Rust\) - para desenvolvedores que pretendem construir em Solana sem nenhum framework
1. **Anchor** \(Rust\) - para desenvolvedores construírem em Solana em Rust com ferramentas adicionais**‍**
1. Seahorse \(Python\) - para desenvolvedores Solana com experiência em programação com Python

<ImageBlock
  src="https://media.alchemy.com/1703683155-solana-playground-selection-screen.png"
  alt="Tela de seleção do Solana Playground para escolher um framework de desenvolvimento: Native, Anchor e Seahorse."
  width={1600}
  height={813}
  caption="Tela de seleção do Solana Playground para escolher um framework de desenvolvimento: Native, Anchor e Seahorse."
/>

### **1. Crie um novo projeto Solana playground**

Crie um novo projeto no Solana Playground com um nome para o diretório. Após criar um nome, um projeto de demonstração chamado _FizzBuzz_ irá aparecer. Este mini dapp é o que usaremos neste tutorial.

### **2. Crie uma playground wallet**

Você deve primeiro gerar uma Playground Wallet para interagir com seus Seahorse programs. A Playground Wallet funciona como uma carteira de teste para a aplicação.

- Clique em "playground wallet"
- Selecione uma nova carteira
- Siga as instruções e baixe o arquivo JSON

<ImageBlock
  src="https://media.alchemy.com/1703683340-creating-new-playground-wallet.jpg"
  alt="Interface do Solana Playground para criar uma nova Playground Wallet"
  width={1600}
  height={900}
  caption="Interface do Solana Playground para criar uma nova Playground Wallet"
/>

### **3. Obtenha tokens SOL de teste**

Digite os comandos a seguir no terminal do playground para [obter tokens SOL da devnet](https://www.alchemy.com/overviews/solana-faucet):

**$ connect**‍

O comando `connect` vincula sua carteira de teste ao projeto.

**$ solana address**

**‍**O comando `solana address` imprime o endereço da sua [carteira Solana](https://www.alchemy.com/overviews/solana-wallets). Usaremos esse endereço mais adiante para inicializar o app FizzBuzz.

**$ solana airdrop 2**

O comando `solana airdrop` deposita tokens SOL de teste na sua carteira para cobrir as taxas necessárias para executar transações como "Build" ou "Deploy".

<ImageBlock
  src="https://media.alchemy.com/1703683491-solana-playground-project-file.jpg"
  alt="Arquivo do projeto de dapp FizzBuzz Seahorse do Solana Playground"
  width={1600}
  height={791}
  caption="Arquivo do projeto de dapp FizzBuzz Seahorse do Solana Playground"
/>

## **Como funcionam os componentes Python do seahorse**

Nesta seção, vamos percorrer a criação do popular, porém simples, app FizzBuzz on-chain. Há três seções principais no nosso código:

1. A Account
1. Instruction 1
1. Instruction 2

### **1. Account**

Executable Accounts são usadas para definir o código executável \(smart contract\) que roda na blockchain Solana. Na definição de Accounts, você pode atribuir os tipos de dados necessários nos seus Solana programs.

**Fizz** e **Buzz** são definidos como tipos de dados Boolean, enquanto a variável "n" é do tipo unsigned integer.

### **2. Instruction 1**

Existem outras formas de accounts chamadas Built-In Accounts. A maioria dessas built-in accounts é usada para chamar instruções específicas on-chain.

#### **A. Signer account**

Instruções que exigem signers precisam da aprovação de uma wallet. Um _Signer_ é a wallet que assina a transação com a chamada de instrução definida nesta parte do código.

A palavra-chave owner é usada para armazenar o valor dos detalhes do Signer. Para obter a chave pública do Signer, você pode adicionar este código:

#### **B. Empty account**

Um tipo empty account é usado para inicializar a classe da Account principal \(FizzBuzz\), mesmo que ela esteja inicialmente vazia.

Usando a palavra-chave _Empty_, você pode construir a classe definida na Account principal. Quando a account FizzBuzz é inicializada, a taxa de criação é paga pelo Owner \(ou seja, o signer da transação\).

Uma vez que essa account tenha sido criada on-chain, ela não pode ser recriada quando chamada novamente pelo mesmo owner. O seed gerado a partir da inicialização é capaz de identificar a account original.

### **3. Instruction 2**

A segunda chamada de instrução usa as accounts já criadas com seus valores.

Aqui está o exemplo de código completo do FizzBuzz:

## **Comece a construir aplicações Solana com Python usando Seahorse**

Seahorse é um projeto open-source conduzido pela comunidade, totalmente gratuito para uso público. Seahorse está atualmente em beta e muitos de seus recursos ainda não foram implementados. Embora não esteja pronto para produção, ele pode ser usado para experimentar e desenvolver aplicações na [devnet da Solana](https://www.alchemy.com/overviews/solana-devnet).

Com Seahorse, construir em Solana com Python é possível e simples. Se você é um [desenvolvedor Python interessado em aprender desenvolvimento web3](https://www.alchemy.com/overviews/how-to-learn-web3-development), explorar Seahorse com o Solana Playground é uma forma segura e divertida de começar a adquirir habilidades usando Anchor, Rust e Solana programs.
