Published: Dezembro 23, 2021

Uma Introdução ao Desenvolvimento em Ethereum

O Conceito de Programação Cripto

Em resumo, a programação cripto envolve o desenvolvimento de software utilizando tecnologias de blockchain, assim como a sua combinação com frameworks e linguagens mais familiares, como React e C++.

O desenvolvimento de criptomoedas e blockchain está se tornando cada vez mais demandado. Este é um trabalho com salários altíssimos, uma infinidade de vagas e um potencial ilimitado para o futuro. É o grande alicerce para o futuro que impulsiona essas tecnologias adiante.

A questão é que as criptomoedas e o blockchain formarão a base da economia do futuro, onde sistemas financeiros descentralizados governarão. E a tecnologia blockchain em si mostrou ser suficientemente universal para ser útil não apenas em questões estritamente financeiras (investimentos, leilões, relações comerciais, etc.), mas também em outras esferas da atividade humana.

 

 

 

Ao escolher a programação cripto, você desenvolverá programas como outros desenvolvedores, mas sob o capô de seus projetos, sempre haverá o código diretamente relacionado às tecnologias mais avançadas existentes.

O Que é um Desenvolvedor de Criptomoedas?

Um desenvolvedor de criptomoedas é uma pessoa que não apenas está próxima dos computadores e sabe como criar uma página ou um código, mas um desenvolvedor que está bem familiarizado com as tecnologias de finanças descentralizadas. No melhor dos casos – tendo experiência trabalhando com o componente de backend de programas, e no pior dos casos – pelo menos entendendo como escrever código de programa em princípio.

Um desenvolvedor desse tipo está envolvido na criação de código de backend para aplicativos descentralizados, que são chamados de Dapps. Eles geralmente existem na rede Ethereum e não são mais do que contratos inteligentes.

O Que é “Ethereum”?

Ethereum é todo um ambiente de blockchain que permite que todos executem programas em um ambiente confiável, suportado por contratos inteligentes.

Ao contrário do Bitcoin, a plataforma Ethereum permite interagir não apenas com criptomoedas, mas também com outros dados.

Os programas correspondentes são executados em um ambiente chamado EVM (Máquina Virtual Ethereum). Isso permite converter o código escrito por pessoas em um conjunto de caracteres digeríveis para o blockchain e suporta contratos inteligentes criados para realizar determinadas tarefas dentro do blockchain. Ele também usa sua própria moeda, chamada Ether.

 

 

Este é o maior sistema do seu tipo e, ao mesmo tempo, o mais popular. Na maioria dos casos, os empregadores procuram por programadores cripto para criar software que será implementado na interface do projeto Ethereum.

Contratos Inteligentes

Este é um código que é executado em um ambiente EVM e é capaz de processar dados transmitidos para ele, Ether ou qualquer lógica. Para contratos inteligentes, são escritas funções que permitem manipular as informações transmitidas a eles. Você pode compartilhar dados com outros contratos inteligentes ou, com base nas informações recebidas, transmitir entre usuários de contrato inteligente.

Um contrato inteligente permite excluir uma terceira parte de qualquer transação. O código do programa será responsável pela justiça: aberto, incorruptível e funcionando corretamente.

Os programadores cripto estão envolvidos na criação de contratos inteligentes, permitindo que os habitantes da rede blockchain façam transações relacionadas ao Ether.

Que Linguagens e Bibliotecas São Usadas na Programação Cripto?

Para criar contratos inteligentes e outros componentes da rede de criptomoedas, são utilizadas tanto linguagens de propósito geral tradicionais quanto novas criadas especificamente para trabalhar com Ethereum ou seus análogos.

As quatro mais populares incluem:

  • Solidity. É líder no campo. A primeira linguagem que vale a pena aprender para começar a criar DApps e contratos inteligentes. A linguagem é baseada na sintaxe JavaScript e C++. Possui tipagem estrita e um limiar de entrada bastante baixo para iniciantes.

  • Java. Uma plataforma poderosa que se provou em dezenas de áreas de desenvolvimento, incluindo a criação de software para sistemas operacionais móveis. É demandada no ambiente blockchain devido à aderência estrita aos princípios de OOP e à abundância de bibliotecas necessárias ao trabalhar com criptomoedas.

  • Vyper. Uma linguagem de programação segura e funcional com sintaxe emprestada do Python. É focada em trabalhar com EVM e criar contratos inteligentes.

  • Python. O próprio Python não poderia ficar de fora dessa lista. Uma das linguagens mais universais e onipresentes também encontrou seu lugar no mundo real do blockchain.

 

Como Começar uma Carreira na Programação Cripto?

O limiar para entrar na profissão é impossível. Devido à alta demanda, os requisitos não são particularmente rígidos, mas apenas entusiasmo não é suficiente. É necessário adquirir conhecimentos básicos e aprofundar o estudo das linguagens de programação blockchain.

O Que Eu Preciso Aprender e Saber?

Para começar, vale a pena ler sobre o blockchain em geral. Precisamos entender como todo o sistema funciona em termos gerais. A familiaridade com as características técnicas da implementação é opcional, pelo menos nos estágios iniciais.

Depois disso, você precisa decidir sobre a linguagem. Para iniciantes, Solidity é recomendado, pois é mais fácil de entender. A próxima etapa deve ser ou um estudo aprofundado da documentação com prática independente constante ou uma visita aos cursos apropriados.

Em termos de equipamento, você não precisa de nada. É suficiente abrir um ambiente de desenvolvimento integrado web chamado Remix e escrever seu primeiro contrato inteligente de acordo com as instruções no site oficial do Solidity.

Qual Ambiente no Remix IDE Pode Ser Usado p”ara Conectar uma Rede de Teste Privada?

Você pode acessar o Remix IDE de várias maneiras: via Internet, via navegador web como o Chrome, a partir de uma cópia local ou do Mist (o navegador Dapp Ethereum).

Usando o Remix IDE no Navegador

Você pode acessar o Remix IDE do seu navegador web sem nenhuma instalação especial. Visite https://remix.ethereum.org e você terá um IDE completo com um editor de código e vários painéis para compilar, executar e depurar seus contratos inteligentes. Você terá um contrato de exemplo com um boletim padrão com o qual pode brincar.

 

Remix IDE

 

Depois de Solidity, você terá que aprender os frameworks usados: Truffle para simplificar a criação de contratos inteligentes, Ganache para testar software em uma rede blockchain virtual, Web3.js para conectar o componente de backend do seu projeto com a parte frontal (pode ser React ou Vue).

 

 

Nos cursos online, você será educado em todos os aspectos de uma vez. Muitos desenvolvedores ativos de Solidity entraram na profissão logo após os cursos. O tempo médio de treinamento leva menos de seis meses.

Perspectivas e Futuro

A programação cripto é uma nova etapa da profissão de desenvolvedor, que está constantemente ganhando popularidade. Se você está interessado em um trabalho promissor e lucrativo, deve prestar atenção ao desenvolvimento de blockchain.


 

Um Guia Prático para Desenvolvimento em Ethereum. Programação de Contratos Inteligentes em Solidity.

Se você está criando um DApp baseado em Ethereum ou um token ERC20, precisa aprender a linguagem Solidity. Embora as blockchains sejam independentes de linguagem e muitas das linguagens existentes sejam usadas por engenheiros de blockchain, há algumas tarefas que não podem ser convenientemente implementadas por essas linguagens. Isso abriu demanda por novas opções específicas para criptomoedas. Uma dessas linguagens é o Solidity.

Independentemente de você ser um desenvolvedor experiente ou estar apenas começando na criptografia, seria uma boa ideia começar a estudar Solidity, pois os contratos inteligentes se tornaram uma parte importante do ecossistema blockchain. Além da implementação ativa de dApps, eles são integrados ativamente em blockchains de nível de infraestrutura e até mesmo em bitcoins através de provedores como RSK. Sabendo como criar contratos inteligentes, você pode acompanhar o trabalho dos programadores blockchain e será capaz de fornecer melhores soluções.

 

Documentação do Solidity

Fundamentos dos Contratos Inteligentes

Como parte do desenvolvimento, o contrato inteligente consiste em três seções: saldo, armazenamento e códigos. O saldo representa quanto Ethereum um contrato inteligente possui. O armazenamento contém dados como strings e arrays que são específicos para cada aplicação. A seção de código contém código de máquina bruto que é compilado a partir do que escrevemos em Solidity.

Ao contrário das contas de usuário, as contas de contrato inteligente não são externas às respectivas redes. Em outras palavras, você pode usar sua carteira em várias redes como Kovan e Ropsten, mas não pode fazer isso com um contrato inteligente. Os contratos inteligentes são internos.

Cada contrato inteligente tem uma fonte que é armazenada no dispositivo do autor e instâncias que são armazenadas na blockchain. Para criar uma instância (conta) de um contrato inteligente, precisamos implantá-lo na rede. É muito semelhante à relação entre classes e instâncias na programação orientada a objetos (OOP) tradicional e as linguagens que a representam (JS, Ruby). Para lhe dar uma representação mais visual, vamos criar uma classe Bike e adicionar uma instância dela.

Bike class & instance

 

Vamos escrever uma definição de contrato, que será então passada por um compilador que criará dois arquivos: um bytecode e uma interface binária de aplicativo (ABI). O bytecode é o que realmente será passado para a EVM, e a ABI é a camada entre o bytecode e o código JavaScript regular que permite criar uma interface de usuário (UI).

 

Escolhendo um IDE e Versão do Solidity

Antes de começarmos, precisamos de um Ambiente de Desenvolvimento Integrado (IDE) adequado. Em outras palavras, precisamos de um terminal conveniente com as ferramentas necessárias para escrever nosso código. Para os propósitos deste guia, escolheremos o Remix, um IDE criado pela Ethereum Foundation que permite escrever, testar, depurar, executar contratos inteligentes e muito mais. Você pode usá-lo diretamente no navegador ou baixá-lo localmente se preferir.

Depois de executar o Remix, você verá um editor de código no centro, um gerenciador de arquivos à esquerda e um compilador à direita.

 

Initial Remix window

 

Haverá algum código pré-escrito — que não vamos precisar. Para criar o primeiro contrato inteligente único, clique no ícone de adição no canto superior esquerdo do terminal e dê-lhe um nome.

 

Creating a new project in Remix

 

Como temos um documento vazio .sol, precisamos especificar a versão do Solidity que o compilador usará. No momento em que este guia foi escrito, a versão mais recente era 0.5.7. Se você não tem certeza de qual versão usar, pode especificar um intervalo de versões.

 

2 types of specifying the Solidity version

 

Vamos dar um nome ao nosso contrato inteligente, seguido por parênteses.

 

Naming the contract

 

Escrevendo Seu Primeiro Contrato Inteligente

Uma vez que temos o canvas pronto, é hora de definir os principais blocos de construção — as variáveis. Embora desenvolvedores de software experientes não tenham problemas para entender esse conceito, vamos apresentá-lo brevemente aos iniciantes. Variáveis são espaços reservados para porções de informações que são subsequentemente referenciadas pelo programa que as executa.

Vamos criar um par de variáveis: uma string (uma sequência de caracteres) e um inteiro (um número). No caso do Ethereum, as variáveis são armazenadas no blockchain junto com o restante dos contratos e, portanto, podem ser acessadas e atualizadas de qualquer lugar. Outra característica-chave das variáveis Solidity é que você pode torná-las privadas escrevendo “private” ao lado delas. Por fim, para inteiros, Solidity possui dois tipos: assinados (podem ser positivos e negativos) e não assinados (podem ser apenas positivos). Para especificar uma variável não assinada, devemos apenas colocar ‘u’ na frente dela.

A private string and an integer

 

Quando temos uma variável de nome, precisamos escrever os métodos de definição e recebimento. Isso é semelhante à função em JS. Lembre-se de que Solidity possui tipagem estática, então temos que definir os tipos de variáveis. Agora, qualquer valor que colocarmos em ‘setName’ definirá a string ‘nome’. Para obtê-lo, usaremos ‘getName’ e especificaremos qual variável esperamos ver. Agora é hora de fazer o mesmo para a variável de idade. O método é construído de forma semelhante ao ‘getName’.

 

Name/age setters and getters

 

Vamos dar uma olhada no nosso pequeno trecho de código. Vá para a guia “Run” do compilador e clique em “Deploy” sob o nome do seu contrato. Na parte inferior do compilador, você verá a seção “Contratos Implante”, onde nossos métodos estão disponíveis. Para passar o nome para o valor “NovoNome”, precisamos garantir que nossa string esteja escrita em JSON. Caso contrário, “getName” não retornará nada. Para “setAge”, basta especificar sua idade sem aspas. Como você pode ver, agora podemos definir e receber as variáveis de nome e idade através do nosso contrato inteligente.

 

Compiler, name and age

 

O que são Wei e Gas?

Uma das características mais notáveis dos contratos inteligentes é que, para implantá-los na rede Ethereum, você precisará iniciar uma transação que custa uma certa quantia em dinheiro, que é paga em Ether. É extremamente importante entender como as taxas são usadas no sistema, pois elas serão deduzidas toda vez que você interagir com a EVM.

O que é Wei?

Vamos supor que, enquanto lia nossa lição, você já tenha usado Bitcoin pelo menos uma vez. Provavelmente fez uma pequena transação que custou menos de 1 BTC. Nesse caso, você usou Satoshi, algo como centavos no dólar. Wei é semelhante ao Satoshi — é a menor parte de 1 Ether. Se pensarmos sobre isso de uma perspectiva de programação, este é o menor inteiro não assinado na rede. Ao interagir com a rede, você mais frequentemente encontra Gwei, que pertence a Gigawee e é igual a 1 bilhão de Wei.

O que é Gas?

Gas é uma parte integrante do mecanismo de execução de contratos inteligentes. Ele possui dois valores para cada transação: o Gas consumido e seu preço. Vale ressaltar que o usuário que inicia a transação determina esses valores. No entanto, se o valor de Gas definido não for suficiente para realizar uma determinada operação, o Gas será consumido, mas a transação não será executada. Além disso, se o preço do gas for definido muito baixo para a rede em um determinado momento, a transação não será processada pelos nós, o que acabará por torná-la mal sucedida. Existem vários serviços para verificar os valores ótimos para suas transações, um dos quais é ethgasstation.info. Para entender melhor o Gas e por que ele custa algum dinheiro, vamos começar a codificar alguns deles nós mesmos.

Volte para a janela do Remix e crie um novo arquivo. Em nosso exemplo, vamos chamá-lo de “Gas” e criar um contrato com o mesmo nome. Tenha em mente que quanto mais dados precisarmos armazenar no blockchain, mais Gas precisaremos. Ao mesmo tempo, para os propósitos desta lição, criaremos um contrato barato; Quanto mais você adicionar a ele, maior será a taxa.

Há uma função que retorna um inteiro que é a soma de duas entradas. Para torná-lo o mais fácil possível, indicaremos que nosso contrato não armazenará nada no blockchain e, para isso, adicionaremos “pure” ao lado da função.

 

Cheap contract

 

Agora você pode expandi-lo no compilador e inserir quaisquer dois números para obter o inteiro “c”. Para verificar o preço da nossa transação, precisamos olhar para o terminal localizado abaixo da seção de código. Há um custo de transação e um custo de execução. O primeiro se refere a quanto dados a transação tem. O segundo se refere a quanto energia da EVM foi necessária para a transação.

 
 

 

 

Essa é uma transação muito simples que custa quase nada para a rede. Ao escrever contratos inteligentes significativos, você adicionará mais detalhes, o que aumentará seu peso e, consequentemente, as taxas de transação.

Criando e Implantando seu Próprio Token ERC20. Emissão de Token e Criação de ICO.

Vamos encarar, a maioria dos desenvolvedores de blockchain que estão apenas começando tendem a se aventurar e criar suas próprias blockchains e tokens. Embora este seja um tópico extremamente complexo que atraiu alguns dos melhores desenvolvedores de software de outros campos, criar um token ERC20 básico não é uma tarefa difícil.

Primeiro, precisamos criar outro arquivo no Remix e carregar a interface ERC20, nomeadamente:

Padrão ERC20

A função totalSupply nos permite ver quantos tokens temos no total. A função balanceOf é usada para obter o número de tokens em determinados endereços. A função transfer permite que os usuários realizem transações entre si. As funções “transferFrom”, “allow” e “Approve” permitem que os usuários permitam que outros usuários iniciem transações em seu nome. Os eventos são ferramentas de registro para o livro-razão geral.

Além da interface em si, precisaremos de um arquivo separado .sol para o nosso novo token. Aqui, importamos a interface ERC20 e especificamos o símbolo, nome e número decimal do nosso token.

 

uToday token

 

Antes de compilarmos, precisamos especificar as restrições.

  • Vamos começar com uma sentença geral: esta é uma variável inteira constante, que faremos privada. O estoque total de nossos tokens será de 1 milhão. Também escreveremos uma função para retornar esse valor.

  • Em segundo lugar, precisamos armazenar nossos tokens em algum lugar. Para isso, precisaremos especificar um mapeamento que retornará o saldo para qualquer endereço especificado.

  • Em terceiro lugar, deve haver uma função para transferir tokens, que essencialmente terá o endereço do destinatário e o número de tokens transferidos. Esta função também deve ser capaz de verificar se o remetente tem tokens suficientes em seu saldo, o que pode ser implementado usando uma simples declaração if/then. Além disso, definiremos condições para ‘_value’ para que os usuários não possam enviar transações com tokens “0”, pois isso levará ao congestionamento da rede com vários lixos.

  • Em quarto lugar, precisamos criar um mapeamento para o restante das funções, que é um mapeamento inteiro.

  • Em seguida, especificaremos várias verificações nas funções “approve” e “allow” e definiremos as condições para ‘transferFrom’.

  • Por fim, nem todos os tokens estarão disponíveis no mercado. Alguns dos tokens geralmente são reservados para equipes, fundações, consultores e outros fins. Portanto, é importante deixar claro quantos tokens estarão circulando no sistema. Quando criamos os tokens, a oferta negociável é igual ao nosso saldo.

     
     

 

uToday token constraints

 

O código está pronto, então vamos dar uma olhada. Vá para a guia “Run” do compilador e expanda nosso contrato de token. Você verá que temos os dados do token, bem como a oferta geral, saldos e sobretaxas. Parabéns, você criou seu primeiro token.

Para que nosso token realmente funcione na rede, precisamos implantar um contrato inteligente (observe que isso é diferente de implantá-lo para testes no Remix). Para este tutorial, usaremos o Remix e o Metamask, mas existem outras maneiras de fazer isso. Metamask é um programa de carteira Ethereum simples, mas eficaz, com uma interface de usuário agradável que se integra como uma extensão em alguns dos navegadores mais populares. Em nosso caso, usaremos o Opera. Primeiro, vá para metamask.io e baixe a extensão. Depois disso, você verá o ícone da raposa no canto superior direito do seu navegador.

 

 

 

Clique no ícone e siga as instruções sugeridas para criar uma carteira. Não se esqueça de salvar a frase secreta! Quando tiver uma carteira, clique no ícone do Metamask e altere a rede para “Ropsten”, porque não queremos mexer na rede principal do Ethereum.

 

 

 

O último passo é criar um pouco de Ether (infelizmente, você não poderá usá-lo para compras reais, mas é necessário para testes). Vá para faucet.metamask.io e solicite 1 ether.

Agora você tem tudo pronto. Volte para a janela do Remix e mude o ambiente para “Injected Web3” no compilador. Além disso, dê uma olhada na guia de contas — seu endereço deve corresponder ao endereço que você criou no Metamask. Selecione o contrato inteligente que deseja implantar, que é o seu contrato de token, mas não a interface ERC20, e clique no botão apropriado. Uma janela do Metamask aparecerá com a transação, seus detalhes e opções para interagir com ela. Envie uma transação, e nosso token ganhará vida.

 

 

 

Agora você pode brincar com todos os recursos que mencionamos anteriormente. Vamos dar uma olhada no nosso contrato do outro lado para garantir que funcione corretamente. Como qualquer outra blockchain, o Ethereum possui vários exploradores de blocos que servem ao principal objetivo de monitorar o que está acontecendo na rede. Em nosso caso, usaremos o etherscan, embora haja várias outras ótimas alternativas. Observe que se você apenas entrar no etherscan, verá a Main Network. Como precisamos ver a rede Ropsten, você precisará colocar “ropsten” antes do endereço do site. Encontre seu endereço e você verá duas transações — uma para o Ether gratuito que você recebeu e outra para a implantação do contrato.

 

 

Para encontrar o endereço do seu contrato, clique em TxHash e vá para o campo “To”. Aqui você pode verificar transações, código e eventos do seu contrato inteligente. No momento, precisamos verificar e publicar nosso contrato. Vá para a seção “Código” e clique no link “Verificar e Publicar”. Aqui você precisará especificar o nome do seu token novamente, a versão do compilador (no nosso caso, a última versão do Solidity que usamos foi 0.5.7, então vamos manter a versão do compilador correspondente). Agora você precisa copiar o código do contrato inteligente do token junto com o código da interface ERC20 da janela do Remix para o etherscan e clicar em “Confirmar e Publicar” na parte inferior da tela.

 

Smart contract verification

 

É hora de voltar ao endereço do seu contrato. O código na guia “Código” agora estará sujeito a verificação. Além disso, agora você terá mais duas guias: “Ler contrato” e “Escrever contrato”. Na seção de leitura, podemos verificar a funcionalidade do nosso token. Insira o seu endereço (não o endereço do contrato) no campo ‘balanceOf’ para ver quantos tokens você tem; deverá mostrar 1 milhão, que codificamos como estoque total e transferimos para nossa carteira. Isso significa que nosso token agora funciona corretamente na rede de teste.

 

Se você deseja iniciar uma carreira de desenvolvedor na indústria de criptomoedas, deve entender que, apesar de sua relativa simplicidade no núcleo, a blockchain possui uma flexibilidade e funcionalidade incríveis. Desde 2017, as blockchains evoluíram significativamente, e seus casos de uso foram além das simples transações financeiras. Com o advento do Ethereum, uma nova camada de redes apareceu, hospedando várias aplicações dApps e soluções baseadas em blockchain. A ferramenta dessa evolução foi um contrato inteligente, e se você deseja expandir sua experiência, torná-la mais valiosa e orientada para o futuro, precisa saber como funciona.

Embora você possa codificar contratos inteligentes usando outras linguagens, o Solidity ainda é mais adequado para esses fins. Além disso, se você deseja se tornar um desenvolvedor Ethereum ou criar tokens ICO/ERC20 para seu projeto, essa é definitivamente sua escolha. Se você tem alguma experiência com C++ ou JavaScript, codificar em Solidity deve ser relativamente fácil para você. No entanto, você precisará entender algumas das diferenças entre os modelos de inicialização de software cliente-servidor e descentralizado. Graças à Ethereum Foundation e algumas organizações de terceiros, os desenvolvedores têm à disposição um conjunto de ferramentas convenientes, como Remix e Etherscan, para codificar e implantar contratos inteligentes.

Esperamos que nosso tutorial tenha ajudado você a entender a maioria dos conceitos do Solidity para começar uma jornada empolgante de aprendizado em tecnologia blockchain. Lembre-se de que você sempre pode consultar a documentação mais recente do Solidity.

Rate the article

Rate this post