Contratos inteligentes e Soroban

Soroban é uma ferramenta de alto desempenho projetada para executar contratos inteligentes na blockchain Stellar.
CryptoConexion, Contratos-inteligentes, soroban

Os contratos inteligentes na Soroban permitem que os desenvolvedores criem aplicativos descentralizados (DApps) seguros e eficientes. A Soroban oferece um desempenho superior, eficiência de gás e segurança aprimorada em comparação com outras plataformas de contratos inteligentes.




Neste tutorial, sintetizamos os conceitos fundamentais abordados no segundo workshop do programa StellarEdu intitulado ‘Contratos inteligentes y Soroban’, para aprender como criar um contrato inteligente e sua implementação e integração na Soroban.

Introdução à Soroban

Antes de começar, vamos revisar o que foi discutido sobre Soroban em tutoriais anteriores, já que essa ferramenta é fundamental no workshop focado no desenvolvimento de contratos inteligentes na Stellar. 

A Soroban é uma ferramenta de alto desempenho projetada para executar contratos inteligentes na blockchain Stellar. Ela oferece uma série de vantagens sobre outras ferramentas, como maior velocidade, eficiência e segurança. A Soroban está em desenvolvimento contínuo, mas já está disponível para uso em aplicações reais.

Características principais:

  • Rendimento superior: Soroban é uma das ferramentas mais rápidas do mundo, capaz de executar contratos inteligentes até 100 vezes mais rápido do que outras ferramentas populares.
  • Eficiência de gás: utiliza um modelo de gás eficiente que permite aos desenvolvedores escrever contratos inteligentes mais compactos e com menor consumo de recursos.
  • Segurança aprimorada: Soroban é projetada com segurança em mente, utilizando técnicas de ponta para proteger os contratos inteligentes de ataques.
  • Compatibilidade com WebAssembly: é compatível com WebAssembly, permitindo aos desenvolvedores escrever contratos inteligentes em uma variedade de linguagens de programação.
  • Ambiente diverso de desenvolvimento: Soroban possui um ambiente de desenvolvimento diverso que inclui ferramentas para escrita, compilação e depuração de contratos inteligentes.

Casos de uso:

Soroban pode ser usada para uma ampla variedade de casos de uso, incluindo:

  • Emissão de tokens: é ideal para criar tokens personalizados na blockchain Stellar.
  • Aplicativos descentralizados (DApps): Soroban pode ser usada para desenvolver DApps seguros e eficientes na blockchain Stellar.
  • Finanças descentralizadas (DeFi): é usada para criar aplicações DeFi inovadoras na blockchain Stellar.
  • Gestão de cadeias de suprimentos: útil para rastrear e gerenciar cadeias de suprimentos de forma segura e transparente na blockchain Stellar.
  • Identidade digital: serve para criar sistemas de identidade digital seguros e confiáveis.

Como criar e implementar um contrato inteligente

Para criar e implementar um contrato inteligente na Stellar, siga estes passos:

Configuração:

1. Primeiro, instale o Rustup, que é o gerenciador de ferramentas para Rust, uma linguagem de programação de sistemas amplamente utilizada no desenvolvimento de software de baixo nível e considerada uma opção popular para programação na blockchain Stellar. Para isso, execute o seguinte comando na linha de comando:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Ao executar este comando, você está instalando o Rustup em seu sistema para instalar e gerenciar várias versões do compilador Rust em sua máquina. Isso é importante para o desenvolvimento em Rust, pois permite lidar com diferentes projetos que podem exigir versões específicas do Rust.

2.- Execute o comando:

rustup target add wasm32-unknown-unknown

Este comando adiciona a arquitetura wasm32-unknown-unknown como um alvo (target) para o Rustup. No contexto da blockchain Stellar, este comando é relevante para o desenvolvimento de contratos inteligentes e outras aplicações que utilizam WebAssembly (Wasm).

A arquitetura 'wasm32-unknown-unknown' é específica para a compilação de programas para WebAssembly (Wasm) sem uma plataforma de destino específica em mente. Wasm é um formato binário de código portátil que é executado de forma eficiente em qualquer navegador da web e também pode ser executado fora do navegador, o que o torna ideal para aplicativos descentralizados (DApps) na blockchain Stellar.

Ao adicionar esta arquitetura como um alvo no Rustup, você está configurando seu ambiente de desenvolvimento para compilar código Rust para Wasm, permitindo criar contratos inteligentes e outras aplicações que rodem na blockchain Stellar usando esta tecnologia.

3.- Instale a interface de linha de comando da Soroban. Para isso, execute o seguinte comando:

cargo install --locked soroban-cli

Desmembrando o comando:

  • cargo: é o gerenciador de pacotes e ferramentas para a linguagem de programação Rust.
  • install: é um subcomando de cargo: usado para instalar pacotes ou ferramentas do Rust.
  • --locked: esta opção garante que seja instalada exatamente a mesma versão do pacote que está especificada no arquivo Cargo.lock do projeto. Isso ajuda a manter a consistência entre os ambientes de desenvolvimento
  • soroban-cli: é o nome do pacote que deseja instalar, neste caso, a CLI do Soroban.

A instalação desta interface serve para interagir com a plataforma e desenvolver contratos inteligentes para a blockchain Stellar diretamente da linha de comando.

Criação do projeto

Após configurar o ambiente de programação, é possível passar para a criação do projeto, seguindo os seguintes passos:

1.- Crie o projeto. Para isso, execute o seguinte comando:

soroban contract init <Nombre del proyecto>

Desmembrando o comando:

- ‘soroban’: é o nome do programa ou da ferramenta que você está executando a partir da linha de comando. Neste caso, refere-se à Soroban.

- ‘contract’: é um subcomando da Soroban utilizado para trabalhar com contratos inteligentes.

- ‘init’: é um subcomando de 'contract' utilizado para inicializar um novo projeto de contrato inteligente.

- ‘<Nome do projeto>’: é o nome que você deseja atribuir ao novo projeto de contrato inteligente. Substitua ‘<Nome do projetoo>’ pelo nome desejado para seu projeto.

Ao executar este comando, a Soroban criará um novo diretório com a estrutura básica de um projeto de contrato inteligente, incluindo arquivos e pastas necessários para começar a desenvolver seu contrato na blockchain Stellar.

2.- Conecte seu projeto à rede de testes, executando o seguinte comando:

soroban network add testnet  --rpc-url https://soroban-testnet.stellar.org:443 --network-passphrase "Test SDF Network ; September 2015"

Desmembrando o comando:

- ‘soroban’: é o nome do programa ou da ferramenta que você está executando a partir da linha de comando, neste caso, a Soroban.

- ‘network add testnet’: é um subcomando da Soroban utilizado para adicionar uma nova rede de testes ao seu ambiente de desenvolvimento.

- ‘--rpc-url https://soroban-testnet.stellar.org:443’: é a URL do ponto final RPC (Remote Procedure Call) da rede de testes da Stellar. Este ponto final fornece acesso à rede de testes para enviar transações e fazer consultas.

- ‘--network-passphrase "Test SDF Network ; September 2015"’: é a frase de acesso à rede de testes da Stellar. Esta frase identifica a rede de testes e garante que você esteja interagindo com a rede correta.

Ao executar este comando, a Soroban adicionará a rede de testes da Stellar ao seu ambiente de desenvolvimento, permitindo que você desenvolva e teste seus contratos inteligentes na rede de testes antes de implantá-los na rede principal.

3.- Agora é hora de criar sua identidade para interagir com a rede, execute o seguinte comando:

soroban keys generate alice --network testnet

Este comando gera um novo par de chaves (chave pública e chave privada) para uma conta na rede de testes (testnet) da Stellar. Aqui está o desmembramento:

- ‘soroban’: é o nome do programa ou da ferramenta que você está executando a partir da linha de comando, neste caso, a Soroban.

- ‘keys generate alice’: é um subcomando da Soroban utilizado para gerar um novo par de chaves para uma conta. "alice" é o nome da conta que está sendo criada no exemplo, mas você pode substituí-lo pelo nome desejado.

- ‘--network testnet’: é a especificação da rede para a qual deseja gerar as chaves. Neste caso, você está gerando as chaves para a rede de testes (testnet) da Stellar.

Essas chaves geradas são usadas para acessar e gerenciar a conta na rede da Stellar. É importante manter a chave privada em segredo, pois ela fornece acesso total à conta e aos ativos associados a ela.

Desenvolvimento do contrato inteligente

Agora que você configurou tudo, está pronto para começar o desenvolvimento do seu contrato inteligente. Vamos lá!

1.- Execute os testes unitários e de desenvolvimento do projeto. Para isso, execute o seguinte comando:

cargo test

O comando ‘cargo test’ é usado no ambiente de desenvolvimento do Rust para executar os testes unitários e de integração escritos para um projeto. Aqui está o desmembramento:

- ‘cargo’: é a ferramenta de construção e gerenciamento de pacotes para Rust.

- ‘test’: é um subcomando do ‘cargo’ usado para executar os testes associados a um projeto Rust.

Quando você executa ‘cargo test’, Cargo automaticamente procura os testes no diretório ‘tests/’ e executa todas as funções marcadas com o atributo ‘#[test]’ nesses arquivos. Também executará os testes integrados que estão no mesmo arquivo que o código de produção usando o atributo ‘#[cfg(test)]’.

O resultado da execução do ‘cargo test’ mostrará informações sobre quais testes foram executados, quantos passaram, quantos falharam e qualquer saída adicional dos testes. Este comando é útil durante o desenvolvimento para garantir que o código funcione conforme o esperado e para detectar qualquer regressão ao fazer alterações no código.

2.- Compile seu contrato inteligente. Depois de desenvolver o contrato, é necessário compilá-lo, para isso, execute o seguinte comando:

soroban contract build

Quando você executa este comando, a Soroban compila o código-fonte do contrato inteligente, faz as otimizações necessárias e produz um arquivo binário que contém o contrato compilado pronto para ser implementado na rede Stellar. Este arquivo binário geralmente tem a extensão ‘.wasm’ e contém o código de bytes que será executado pela máquina virtual da Soroban na blockchain Stellar.

A execução de ‘soroban contract build’ é um passo importante no processo de desenvolvimento de contratos inteligentes na plataforma Soroban, pois converte o código-fonte legível por humanos em um formato que a rede Stellar pode entender e executar.

3.- Implemente seu contrato na rede Stellar. Para fazer isso, execute o seguinte comando:

soroban contract deploy --wasm <CONTRATO.wasm> \
--source alice --network testnet

O comando ‘soroban contract deploy’ é usado no contexto da plataforma Soroban para implementar um contrato inteligente na blockchain Stellar. Ao executar este comando, o contrato inteligente é implementado na rede Stellar, o que significa que o contrato está disponível para execução e uso pelos usuários da rede.

Aqui está o desmembramento do comando::

- ‘--wasm <CONTRATO.wasm>’: o parâmetro especifica o arquivo binário do contrato inteligente compilado em formato WebAssembly (.wasm). Este arquivo contém o código de bytes do contrato que será implementado na rede Stellar.

- ‘--source alice’: este parâmetro especifica a conta de origem da qual a transação de implementação do contrato inteligente será realizada. Neste caso, "alice" é o nome da conta que será usada como origem.

- ‘--network testnet’: este parâmetro especifica a rede Stellar na qual o contrato inteligente será implementado. Neste caso, está sendo implantado na rede de testes (testnet) da Stellar.

4.- Execute as funções do contrato. Para isso, execute o seguinte comando:

soroban contract invoke --id <ID del CONTRATO> \
--source alice --network testnet -- increment

Este comando é usado no contexto da plataforma Soroban para convocar um método ou função específica em um contrato inteligente implementado na blockchain da Stellar. Ao executar este comando, uma transação de convocação é feita, executando a lógica especificada no contrato inteligente.

Desmembramento do comando:

- ‘--id <ID del CONTRATO>’: este parâmetro especifica o identificador único do contrato inteligente na blockchain Stellar. É necessário fornecer o ID do contrato no qual deseja convocar a função.

- ‘--source alice’: este parâmetro especifica a conta de origem da qual a transação de convocação do contrato inteligente será realizada. Neste caso, "alice" é o nome da conta que será usada como origem.

- ‘--network testnet’: este parâmetro especifica a rede Stellar na qual o contrato inteligente está implementado. Neste caso, está sendo usado a rede de testes (testnet) da Stellar.

- ‘-- increment’: é o nome do método ou função que está sendo convocado no contrato inteligente. Neste exemplo, está sendo chamada uma função chamada "increment".

E é isso que é necessário para desenvolver seu contrato inteligente.

Integração do contrato inteligente

Agora passamos para a fase de integração do contrato inteligente com o aplicativo da web. Siga os passos abaixo:

1.- Caso não tenha, instale o NodeJs. Você pode fazer isso aquí.

2.- Inicialize seu novo projeto na Soroban, para isso execute o seguinte comando:

soroban contract init ./  --frontend-template \  git@github.com:sebamiro/increment-contract-front-template.git

O comando ‘soroban contract init’ é usado para inicializar um novo projeto de contrato inteligente na Soroban. 

Este é o desmembramento do comando:

- ‘./’: refere-se ao diretório no qual o projeto do contrato inteligente será inicializado. Neste caso, o projeto será inicializado no diretório atual.

- ‘--frontend-template’: este parâmetro especifica que será usado um modelo de frontend para o projeto do contrato inteligente.

- ‘git@github.com:sebamiro/increment-contract-front-template.git’: esta é a URL do repositório do modelo de frontend que será usado para o projeto do contrato inteligente. Neste caso, o modelo está no repositório git do GitHub localizado nesse endereço.

Editaremos o arquivo ./src/lib/contractAddress e colocaremos o id do nosso contrato.

Este site nos pedirá que conectemos nossa carteira Freighter, que é a carteira compatível com Stellar usada, e poderemos vincular a identidade que criamos anteriormente com a carteira.

3.- Instale as conexões executando o seguinte comando:

npm install

O desmembramento do comando é o seguinte:

  • npm: é o gerenciador de pacotes do Node.js usado para instalar e gerenciar pacotes.
  • install: é o comando npm usado para instalar pacotes.

Quando você executa npm install em um diretório de projeto que contém um arquivo package.json, o npm procura as conexões listadas nesse arquivo e as instala no diretório node_modules do projeto. Isso permite que o projeto tenha acesso a todas as bibliotecas e ferramentas de que precisa para funcionar corretamente.

4.- Inicialize o servidor no modo de desenvolvimento. Para isso, execute o seguinte comando:

npm run dev

Este comando é usado em ambientes de desenvolvimento de aplicativos da web que usam o npm (Node Package Manager). Geralmente, está configurado no arquivo ‘package.json’ de um projeto e é usado para executar um script chamado ‘dev’ que inicia o servidor de desenvolvimento.

Quando você executa ‘npm run dev’, o npm procura o script ‘dev’ no arquivo ‘package.json’e executa o comando associado. Geralmente, este comando é usado para iniciar um servidor de desenvolvimento local que fornece recursos de recarga ao vivo, compilação automática e outras ferramentas úteis para desenvolvedores enquanto trabalham em seu aplicativo.

No contexto da Stellar, este comando pode ser usado no desenvolvimento de aplicativos frontend ou ferramentas relacionadas à Stellar que usam JavaScript ou TypeScript junto com o npm como gerenciador de pacotes.

E com isso, terminamos de revisar tudo o que é necessário para você começar a desenvolver no Stellar.

Recursos adicionais

Ao concluir este segundo tutorial, você já possui habilidades básicas suficientes para começar no desenvolvimento na Stellar. No entanto, recomendamos os seguintes recursos que o ajudarão no caminho:

Recomendamos que você assista ao workshop que está em nosso canal do YouTube, para que, além desses conceitos, você possa ver mais elementos e recomendações compartilhadas no workshop.

Sigue aprendiendo con nuestros artículos relacionados:
CryptoConexion | StellarEdu | Stellar | Blockchain

StellarEdu, descubre el poder de esta blockchain
StellarEdu es un programa educativo, en español y portugués, diseñado especialmente para introducirte en el ecosistema de la blockchain de Stellar.

Comparte nuestro artículo:
LinkedIn
Facebook
Twitter
Reddit
Telegram
WhatsApp
Email
Más sobre: