Pular para o conteúdo
0%

O guia completo de contratos inteligentes na Solana

Publicado em 10 de agosto de 202311 min de leitura

Solana é uma plataforma blockchain focada no desenvolvimento de smart contracts e que busca resolver os desafios enfrentados pelas blockchains existentes. Ela hospeda diversos projetos blockchain, incluindo NFTs e projetos DeFi.

O ecossistema Solana cresceu em popularidade nos últimos anos graças às suas taxas de transação incrivelmente baixas e à sua alta escalabilidade. O que diferencia a Solana é a combinação do algoritmo de consenso proof of stake com um mecanismo exclusivo de proof of history, oferecendo aos desenvolvedores uma rede versátil para criar plataformas de NFT, apps e muito mais.

Este artigo explica como funcionam os smart contracts da Solana, como criar e implantar programas Solana e quais ferramentas são necessárias. Além disso, vamos revisar alguns tutoriais, exemplos, repositórios, ferramentas para desenvolvedores e recursos sobre smart contracts na Solana para você começar.

O que é um smart contract na Solana?

Os smart contracts da Solana, também conhecidos como programs, são códigos que interpretam instruções e estabelecem os termos de um acordo. Muitos desenvolvedores consideram os smart contracts da Solana uma alternativa viável aos smart contracts da Ethereum, graças às taxas de transação comparativamente baixas.

Smart contracts permitem que desenvolvedores criem apps que aproveitam a segurança, a confiabilidade e a acessibilidade da blockchain, ao mesmo tempo em que oferecem funcionalidades peer-to-peer sofisticadas, que vão de empréstimos e seguros a logística e jogos.

Os smart contracts da Solana podem ser escritos em diversas linguagens de programação. Embora o Rust seja a linguagem nativa dos smart contracts da Solana, o protocolo também suporta o desenvolvimento de smart contracts em C++, Solidity e outras linguagens por meio de clientes SDK de API RPC JSON de terceiros.

Arquitetura dos smart contracts da Solana

A Solana usa um modelo de smart contract diferente das blockchains tradicionais baseadas em EVM. No caso das blockchains tradicionais, o código e o estado são combinados em um único contrato, enquanto os smart contracts da Solana são stateless e contêm apenas a lógica do programa.

A arquitetura da Solana busca demonstrar a existência de um conjunto de algoritmos de software que, quando combinados para implementar uma blockchain, eliminam o software como gargalo de desempenho, permitindo que o throughput de transações escale proporcionalmente à largura de banda da rede.

Para melhorar a interação com apps, a Solana também conta com uma Command Line Interface (CLI) e uma API RPC JSON. Os apps também podem interagir com a blockchain e com os programs da Solana usando SDKs existentes.

Diagrama do processo de validação da Solana

O mecanismo de proof-of-history da Solana

A Solana busca melhorar a escalabilidade da blockchain combinando proof of stake com proof of history. Ela usa um sistema Tower Byzantine fault-tolerant (BFT), que elimina a necessidade de os nós se comunicarem entre si em tempo real, resultando em maior eficiência e uma taxa de transação alta, de 50.000 transações por segundo (TPS).

Como resultado, a Solana consegue lidar com um alto volume de transações mantendo a descentralização. A Solana cria novos blocos a cada 400 milissegundos com a ajuda de 200 nós validadores, mantendo as taxas de transação abaixo de um dólar.

A Solana é conhecida por sua escalabilidade elevada e velocidade de transação mais rápida. A rede Solana é escalável no nível do núcleo, portanto não requer soluções de layer 2 para aumentar a escalabilidade.

A tecnologia da rede Solana divide os dados em partes menores, facilitando a transferência de dados pela rede. A Solana também usa o Sealevel para auxiliar no processamento de transações em GPUs e SSDs, resultando em uma rede blockchain eficiente.

Crédito da imagem: Solana Labs

Quais são as diferenças entre um program Solana e um smart contract Ethereum?

Os smart contracts da Ethereum são escritos na linguagem de programação Solidity, enquanto os smart contracts da Solana são escritos principalmente em Rust e são chamados de programs. Eles são stateless e representam apenas a lógica do programa.

A diferença mais significativa entre os dois está no mecanismo de consenso empregado. A Ethereum usa Proof of Stake (PoS), buscando uma rede mais descentralizada e eficiente em termos de energia. Já a Solana utiliza Proof of History (PoH), uma abordagem exclusiva que prioriza velocidade e eficiência, resultando em transações rápidas e de baixo custo.

Um program Solana é composto inteiramente de código e não contém dados. Todos os dados são fornecidos como inputs. Esse design desacoplado permite alto desempenho, possibilitando que várias cópias de um program Solana rodem em paralelo com inputs diferentes. Em outras palavras, transações de múltiplas contas de usuário para o mesmo program Solana podem ocorrer simultaneamente. Esse é um dos recursos que tornam a Solana altamente escalável.

Como criar um smart contract na Solana

Esta seção detalha os passos necessários para criar um smart contract na Solana. Vamos guiá-lo pelo processo e fornecer todas as informações necessárias para você começar.

Pré-requisitos

  • Conhecimento básico de como a Solana funciona
  • Anchor e Rust instalados conforme a seção de configuração abaixo
  • Disposição para aprender

Passo 1: instalar Rust, Solana, yarn e anchor

Vamos começar configurando o ambiente de desenvolvimento Solana.

Instalar o Rust

Vamos começar instalando o Rust, a linguagem de programação usada para os programs da Solana.

Verifique se o Rust e o compilador do Rust foram instalados corretamente usando os comandos a seguir.

Você também deve ter agora o Cargo, o gerenciador de pacotes do Rust, instalado. Execute o comando abaixo para confirmar que o Cargo foi instalado corretamente.

O Rustup é a ferramenta que instala e atualiza o Rust.

O Rustc é o compilador da linguagem de programação Rust; ele permite pegar um programa Rust e torná-lo executável em todos os sistemas operacionais atuais.

O Cargo é a ferramenta que constrói sistemas e gerencia pacotes para a linguagem de programação Rust.

Instalar o Solana

Siga as instruções caso a instalação peça para você alterar seu path.

Instalar o node.js

Visite o site oficial para baixar o Node.js, certificando-se de selecionar a versão adequada para o seu sistema operacional.

Você pode confirmar a instalação do Node.js executando os comandos a seguir:

Instalar o yarn

O Yarn é um gerenciador de pacotes, assim como o npm.

Verifique sua versão do Yarn.

Instalar o anchor

O Anchor é um framework para o runtime Sealevel da Solana que oferece diversas ferramentas úteis para desenvolvedores.

Para instalar o Anchor, execute o comando a seguir.

Em seguida, confirme a instalação.

Passo 2: configurar o projeto

Nesta seção, configuramos nossa Solana CLI para o devnet e inicializamos um projeto com o framework anchor. Para simular uma implantação real, faremos o deploy na Solana Devnet.

Para continuar, execute o comando a seguir no seu terminal.

O próximo passo é criar uma wallet, necessária para executar e distribuir seus programs.

Recupere sua pubkey com o comando a seguir.

Depois disso, você pode consultar seu endereço executando o comando a seguir.

Em seguida, você precisará de algum SOL de testnet para o desenvolvimento. Você pode fazer um airdrop de SOL para sua wallet usando o comando a seguir.

Executar o comando abaixo exibirá seu saldo.

Vamos inicializar nosso projeto Anchor executando o comando abaixo. O comando criará todas as pastas e dependências extras necessárias para o projeto:

Passo 3: escrever nosso primeiro program HelloWorld

Na estrutura do projeto, você verá os seguintes arquivos e pastas.

  • program — Este é o diretório que contém todos os seus programs Solana
  • test — Uma pasta para o código de teste em Javascript
  • migrations — Este é o script de deploy do program
  • app — O local para construir nosso frontend

Lembre-se de que lib.rs é o arquivo inicial e principal do nosso program Solana. Ele contém alguns códigos iniciais, como mostrado abaixo.

Vamos explorar como o Rust funciona. A primeira linha de código em Rust importa dependências ou bibliotecas. Neste caso, está importando a biblioteca anchor.

A Solana armazena o endereço ou o program ID na variável declare_Id. O Anchor cria um program ID para nós por padrão.

Em seguida, vem a seção program, onde reside a lógica do programa.

A última seção é a seção derive Accounts, onde fica a struct de contas.

A struct initialize define o contexto da função initialize, e uma struct é usada para declarar uma estrutura. Definir métodos em Rust é diferente de outras linguagens de programação. A capacidade da Solana de separar código e dados é um de seus principais diferenciais.

Vamos entrar no program Hello World da Solana. Lembre-se de que os programs Solana são apenas contas especiais na rede Solana que podem armazenar e executar instruções. Usaremos a crate solana-program, que funciona como uma biblioteca padrão para programs Solana. Precisaremos usar alguns elementos da crate solana-program para criar um program básico.

A primeira seção usa o Borsh, sigla para Binary Object Representation Serializer for Hashing. O Borsh é usado para serializar e desserializar parâmetros passados de e para o program implantado. AccountInfo é uma struct no módulo account_info que fornece acesso às informações da conta. O entrypoint declara o ponto de entrada do program.

O ProgramResult dentro do módulo entrypoint retorna o ProgramReport ou o ProgramError. Por fim, o msg, outra macro, serve para imprimir mensagens no log do program, enquanto a struct pubkey nos permite acessar endereços como chave pública.

O trecho de código acima define o tipo de estado armazenado na conta e o contador u32, que é o tipo inteiro sem sinal de 32 bits que representa o número de saudações.

Os programs Solana exigem uma macro entrypoint para processar instruções do program, como visto na primeira linha de código acima. O entrypoint exigirá uma função process_instruction com o argumento program_id, que é a chave pública da conta que produz o program hello world. O argumento accounts é a conta à qual pretendemos dizer olá, e o argumento instruction_data contém inputs adicionais. O ProgramResult imprime a mensagem "Hello World Rust Program".

A declaração 'let' obtém as contas a serem saudadas. A declaração 'if' estabelece a condição de que, para os dados serem modificados, o program deve ser o proprietário da conta.

A declaração 'let' obtém as contas a serem saudadas. A declaração 'if' estabelece a condição de que, para os dados serem modificados, o program deve ser o proprietário da conta.

Como fazer o deploy de um smart contract na Solana

Esta seção descreve os passos para fazer o deploy de um smart contract na Solana.

Passo 1: testando o program Solana

Para executar os testes, execute o comando a seguir.

Isso vai buildar, fazer o deploy e testar os programs em um cluster específico.

Passo 2: fazendo o deploy na Devnet

Fazer o deploy em uma rede ativa é simples; primeiro precisamos confirmar que estamos na Devnet.

Localize seu arquivo Anchor.toml e atualize o cluster para devnet cluster = "devnet".

Construa o program executando o comando a seguir.

Por fim, faça o deploy do program.

Passo 3: verificar no Solana explorer

Em seguida, autenticamos o program no Solana Devnet explorer para verificar se ele foi implantado com sucesso, fornecendo o program id. Você deve ver o log de deploy na seção de histórico.

Tutoriais de smart contracts na Solana

Agora que temos uma boa compreensão de como funcionam os smart contracts, vamos mergulhar em um projeto real para dominar como funciona a arquitetura de desenvolvimento da Solana. O projeto que vamos construir é um smart contract Solana para mintar NFTs. Podemos mintar NFTs de várias formas, uma delas usando o Metaplex candy machine. NFTs são um dos casos de uso mais populares de smart contracts.

Nesta seção, você vai aprender

  • Como configurar o utilitário Solana CLI para usar a Devnet e outros comandos úteis na Solana
  • Como escrever programs mais complexos em Rust
  • Como inicializar um projeto com o framework anchor
  • Entendimento de variáveis e sintaxe do Rust

Os requisitos são

Configuração rápida

Configuramos o ambiente de desenvolvimento usando o comando abaixo para configurar a Solana para trabalhar com a rede Devnet.

Em seguida, gere sua wallet, que será necessária para executar e fazer o deploy dos seus programs usando o comando abaixo.

Você será solicitado a inserir uma senha para proteger sua wallet. Em seguida, você verá sua mnemonic, que é uma combinação de 12 palavras:

Você pode então verificar seu endereço.

Em seguida, execute o comando abaixo para fazer o airdrop de 4 SOL de testnet para o seu endereço.

Após o airdrop dos 4 SOL de testnet, verifique seu saldo executando o comando a seguir.

Agora que você configurou a Solana para trabalhar com a rede Devnet e criou uma nova wallet, vamos criar um projeto Anchor para gerenciar todas as pastas e configurações tediosas por nós. Vá até seu terminal e digite o comando a seguir.

O smart contract Solana

Antes de mergulhar no smart contract, precisamos configurar nossa CLI spl-token, que será usada para interagir com tokens SPL. Você pode fazer isso executando o comando abaixo no seu terminal.

Instale o solana sdk e o solana-program.

Você notará um arquivo lib.rs na pasta programs. É aqui que nosso program Solana será escrito. Como mencionado anteriormente, vamos construir a partir do padrão fornecido no lib.rs. Você deve ver algo assim.

Aqui, importamos as ferramentas com as quais trabalharemos no topo do nosso código.

Definindo a lógica do nosso program

Estamos concedendo autoridade ao program usando mint_authority para criar um mint (mint_nft) e, em seguida, atribuindo uma conta de token a ele (mint_token_account). Depois, vamos trabalhar com o token_program e o associated_token_program que importamos anteriormente.

Autoridade significa que a conta pode mintar mais tokens ou "imprimir mais dinheiro". Ela geralmente é criada pela conta wallet. É opcional porque uma mint authority pode revogar seu próprio direito, tornando a mint account imutável.

Criando a mint account

Criando a token account ‍

Escrevendo a função de mint

Em seguida, vamos mintar o NFT para a token account que criamos acima.

Fazendo o deploy do program

Agora você está pronto para construir o program de mintagem de NFT na Solana usando o framework Anchor!

O processo de build gera o par de chaves para a conta do seu program. Antes de fazer o deploy do program, você precisa adicionar essa chave pública ao seu arquivo lib.rs, já que ela é exigida por programs que usam o Anchor. Para isso, você precisa obter o par de chaves do arquivo keypair.json gerado pelo Anchor usando o comando a seguir.

O próximo passo é editar o arquivo lib.rs e substituir o par de chaves na definição declare_id!() pelo valor obtido no passo anterior.

Em seguida, você também precisa inserir o valor do Program ID obtido no arquivo Anchor.toml, na definição chainlink_solana_demo devnet.

Você pode querer construir o program novamente usando o Anchor, já que substituiu o keypair por um novo ID.

Por fim, você pode fazer o deploy do program.

Após o deploy bem-sucedido do program, a saída do terminal exibirá o program ID, que deve corresponder ao valor inserido nos arquivos lib.rs e Anchor.toml.

O contrato implantado também pode ser verificado no Solana Devnet Explorer.

O contrato implantado é exibido no Solana Devnet explorer.

Exemplos e repositórios de smart contracts na Solana

Existem inúmeros exemplos e repositórios de smart contracts da Solana que seriam de grande valor na sua jornada de desenvolvimento na Solana. Destacamos alguns deles abaixo.

1. Smart contract Hello world

O Hello World smart contract oferece um exemplo prático de program Solana usando Anchor e Rust. Ele segue uma abordagem passo a passo para construir smart contracts e apps na Solana. Também fornece códigos de exemplo para usar, construir e fazer o deploy de programs on-chain.

2. Simple Solana Program

O Simple Solana Program está funcionalmente relacionado ao exemplo Hello World. Ele demonstra como criar e invocar um program na blockchain Solana. Neste exemplo, o program Solana conta o número de vezes que foi executado e armazena essa informação on-chain.

3. Awesome Solana

O Awesome Solana é uma biblioteca detalhada com recursos para desenvolvedores Solana iniciantes e avançados. Ele oferece recursos sobre desenvolvimento na Solana, transações na Solana, bibliotecas Solana, explicações de como os programs Solana funcionam, e exemplos em vídeo para auxiliar seu aprendizado.

4. Break Solana

O Break Solana é um jogo composto por um frontend de cliente web, um backend de servidor web e um program Solana on-chain. O jogo Break Solana permite que um jogador envie transações simples de smart contract o mais rápido possível, demonstrando a velocidade da Solana.

Ferramentas e recursos para desenvolvedores escreverem programs na Solana

Existe uma coleção de recursos de aprendizado e ferramentas para desenvolvedores úteis na hora de escrever programs na Solana.

1. Solana Playground

O Solana Playground oferece uma maneira muito simples para os usuários interagirem com o sistema blockchain, permitindo que personalizem totalmente as transações Solana de acordo com suas necessidades específicas. Até mesmo quem não tem experiência em desenvolvimento de programas de computador pode usar o Solana Playground para entender melhor como a blockchain funciona. O repositório do projeto está disponível no Github.

2. Start on Solana

O Start on Solana oferece orientação para construir na Solana e contribuir com o ecossistema Solana. Ele oferece diversas quests em Javascript e Rust, desde criar um NFT na Solana até mintar e criar criptomoedas com Javascript.

3. Solana Cookbook

O Solana Cookbook é um recurso para desenvolvedores que fornece os conceitos fundamentais e referências para construir aplicações na Solana. É um recurso essencial que foca no desenvolvimento na Solana, oferecendo muitos exemplos para desenvolvedores.

4. Sol Dev Course

O Sol Dev Course foi criado para simplificar a experiência de desenvolvimento na Solana, tornando-se um dos melhores lugares para iniciantes começarem a construir na Solana. Ele também conta com uma comunidade engajada, permitindo que os membros contribuam com conteúdo para ajudar outros desenvolvedores web3.

5. Construa um app Web3 na Solana com react e Rust pela buildspace

A Buildspace é uma comunidade incrível para começar sua jornada de desenvolvimento na Solana, além de ganhar NFTs ao completar um marco. Os cursos interativos são perfeitos para iniciantes que querem construir coisas rapidamente na Solana.

Comece a escrever programs Solana

Navegar pelo mundo da blockchain e dos smart contracts pode ser complexo, mas plataformas como a Solana estão abrindo caminho para soluções mais eficientes, escaláveis e econômicas. Este guia forneceu uma visão geral abrangente da abordagem exclusiva da Solana para o desenvolvimento de smart contracts, destacando sua arquitetura distinta, seus mecanismos de consenso e as ferramentas disponíveis para desenvolvedores.

Seja você um desenvolvedor experiente ou esteja apenas começando no espaço blockchain, a Solana oferece um caminho promissor para inovação. À medida que o cenário blockchain evolui, plataformas como a Solana certamente desempenharão um papel fundamental na formação do futuro das aplicações descentralizadas e do ecossistema web3 mais amplo. Explore, experimente e aproveite o poder da Solana para o seu próximo projeto.

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.