Alura > Cursos de Programação > Cursos de Computação > Conteúdos de Computação > Primeiras aulas do curso Blockchain: crie contratos inteligentes avançados

Blockchain: crie contratos inteligentes avançados

Conceitos intermediários de Blockchain - Apresentação

Você quer começar a escrever contratos inteligentes mais avançados, com funcionalidades mais sofisticadas, trabalhando no ecossistema das blockchains?

Meu nome é Vinícius Chagas e serei seu instrutor ao longo deste curso sobre blockchains! Eu sou fundador e CEO da HOUS3, uma fábrica de software focada na nova economia digital, e te dou boas-vindas diretamente do estúdio da Alura, preparado especialmente para esta jornada.

Audiodescrição: Vinícius se descreve como um homem de cabelo encaracolado castanho-escuro, barba média castanho-escura, e olhos castanho-escuros. Ele usa óculos de armação arredondada prateada, veste uma camisa preta, e está no estúdio da Alura, com um microfone preto à sua frente e uma parede clara ao fundo iluminada em degradê verde.

Para quem é este curso?

Este material foi preparado para quem trabalha com desenvolvimento e tem interesse em participar do ecossistema de blockchain, trabalhando com smart contracts, ou contratos inteligentes.

Quais são os requisitos?

Para isso, é importante possuir conhecimento básico prévio em Solidity. Além disso, para a parte prática, será necessário conhecimento prévio em Node e Next.js.

O que vamos aprender?

Ao longo deste curso, aprenderemos como funciona a criptografia na blockchain na prática. Também entenderemos o que são e como funcionam os protocolos de consenso.

Além disso, exploraremos as soluções de segunda camada e as soluções de escalabilidade na blockchain; entenderemos o que é Oracle e como integrar soluções de oráculos em smart contracts. Por fim, abordaremos padrões mais avançados de construção com contratos inteligentes.

Consolidaremos todos esses conhecimentos em um projeto prático de crowdfunding, onde construiremos uma aplicação com um front-end integrado à blockchain.

Essa aplicação incluirá um painel administrativo para criar campanhas de crowdfunding, contribuir para elas, solicitar saques e, como pessoas administradoras, aprovar e executar esses saques. Assim, distribuiremos o dinheiro recebido durante as doações para a campanha de crowdfunding.

Conclusão

Lembre-se de aproveitar todos os conteúdos da plataforma que estarão à sua disposição. Além dos vídeos, temos atividades práticas, um fórum, e uma comunidade no Discord.

Vamos começar a estudar? Te aguardamos no próximo vídeo!

Conceitos intermediários de Blockchain - A Plataforma Ethereum

Como vimos no curso anterior, tivemos duas fases da blockchain. A primeira fase, com o Bitcoin, tinha um propósito específico, focado no problema das transações financeiras. Já o Ethereum surgiu como um computador descentralizado, que podemos utilizar para escrever programas.

Bitcoin:

Ethereum:

Agora, vamos nos aprofundar nessa transição. Com o Bitcoin, enfrentamos um grande problema: não conseguimos utilizar aquela blockchain para escrever aplicações mais complexas devido a suas limitações. A partir de 2015, com o Ethereum, temos um computador descentralizado global, que possui uma máquina virtual, permitindo-nos escrever nossos programas, as chamadas "aplicações descentralizadas".

Como construir aplicações mais complexas?

Chegamos à questão de como construir aplicações mais complexas que vão além de transações financeiras. Por exemplo, um jogo que utiliza blockchain para alguma regra de negócio, um sorteio, e aplicações financeiras como empréstimos e liquidações.

A grande diferença entre a blockchain de primeira geração, como o Bitcoin, e as blockchains de segunda geração, que tiveram origem no Ethereum, é a presença de um componente chamado Ethereum Virtual Machine.

Ethereum Virtual Machine, basicamente, é uma máquina virtual que nos permite escrever contratos inteligentes. Esses contratos são programas que escrevemos e enviamos para a blockchain, sendo executados a cada transação que faz uma requisição para aquele contrato.

O Ethereum surge com a visão de ser o computador global. Seu fundador, Vitalik Buterin, o apresenta como um canivete suíço. Enquanto o Bitcoin tinha uma finalidade específica de transações financeiras, o Ethereum oferece várias ferramentas para escrevermos nossas aplicações descentralizadas na blockchain, utilizando contratos inteligentes.

Um exemplo simples de contrato inteligente é uma lógica que, uma vez escrita e enviada para a blockchain, será executada quando as condições pré-determinadas forem validadas.

Imagine um contrato inteligente na blockchain para um aluguel.

Exemplo de contrato inteligente:

  1. O inquilino envia o pagamento;
  2. O contrato verifica o valor depositado;
  3. Contrato transfere o pagamento para proprietário.

Quando o inquilino deposita o dinheiro, o contrato identifica o depósito e pode, por exemplo, liberar o acesso ao imóvel, tudo sem a intervenção de terceiros. Essa autoexecução dos contratos inteligentes é o grande ganho das aplicações descentralizadas.

Quais são essas aplicações descentralizadas mais complexas que queremos escrever com as blockchains 2.0?

Imagine que temos um ecossistema de contratos inteligentes que gerenciam empréstimos financeiros. De um lado, temos os provedores de liquidez que colocam quantias financeiras e, do outro, os tomadores que aceitam pagar juros.

Essa relação, que no ambiente tradicional é gerenciada por bancos e financiadoras, no ecossistema descentralizado do DeFi (finanças descentralizadas), é gerenciada por contratos inteligentes. Isso não seria possível nas blockchains de primeira geração.

Outro exemplo são os NFTs, tokens que criam a representação da propriedade digital de algo único. Podemos ter aplicações que utilizam NFTs para ingressos com assentos numerados, acesso a cursos, plataformas online ou certificados digitais. Os NFTs são exemplos de aplicações que não seriam possíveis na blockchain 1.0.

Por fim, as DAOs(Organizações Autônomas Descentralizadas), surgiram com a blockchain. Basicamente, são contratos inteligentes que podem gerenciar a gestão de projetos.

Esses ecossistemas que citei como exemplos, gerenciados por contratos inteligentes com blockchain, são muito mais complexos do que simples transações financeiras.

Conclusão

Neste vídeo, aprendemos sobre a importância do Ethereum ao trazer programabilidade para a blockchain.

No próximo vídeo, vamos nos aprofundar no componente que possibilita isso: a máquina virtual!

Conceitos intermediários de Blockchain - Máquina Virtual Ethereum (EVM)

No vídeo anterior, entendemos o grande avanço que tivemos da blockchain 1.0 para a blockchain 2.0. Agora, vamos falar sobre o componente que traz essa evolução: a máquina virtual do Ethereum.

Quando falamos em executar um software dentro de um ambiente descentralizado, onde não temos 100% de controle, precisamos garantir que todos esses softwares sejam executados da mesma maneira e atinjam sempre os mesmos resultados. Caso contrário, teríamos um problema de incompatibilidade.

A solução para isso na blockchain é a máquina virtual Ethereum(EVM). As blockchains que possuem esse componente são chamadas de EVMs, e ele é responsável por garantir essa uniformidade. A EVM funciona como um processador mas é um processador virtualizado, não é um processador em hardware.

Esse conceito é comum em outras linguagens de programação. Existe, por exemplo, a Java Virtual Machine, que virtualiza o ambiente e garante a execução uniforme dos componentes, independentemente do sistema operacional.

Isso é crucial para a blockchain, pois, mesmo em um ambiente descentralizado, onde qualquer pessoa, de qualquer lugar do mundo, pode rodar um nó e participar da rede, conseguimos garantir que a execução dos programas será sempre idêntica e chegará ao mesmo resultado.

Máquina virtual

A máquina virtual precisa interpretar algo, mas ela não interpreta diretamente o código escrito em Solidity, a linguagem de programação usada para contratos inteligentes.

Compilamos o contrato inteligente em Solidity para bytecode, que será interpretado pela máquina virtual. É importante compreender como o software que escrevemos é transformado em bytecode, que será interpretado e executado pela máquina virtual dentro da infraestrutura da blockchain.

A nossa máquina virtual possui características diferentes de uma máquina virtual tradicional. Precisamos de isolamento e imutabilidade. Na blockchain, quando subimos um dado ou contrato, eles são imutáveis. O código não pode ser alterado, embora possamos fazer atualizações, tema que será tratado mais adiante no curso. Quando subimos um contrato, aquela versão é imutável.

Outro ponto importante é o gas(unidade de medida), que é o custo ou taxa paga para que os contratos sejam executados. Em um ambiente descentralizado, precisamos controlar os recursos computacionais utilizados na execução.

Se os servidores estivessem abertos para qualquer um submeter um programa, a tendência seria que agentes tentassem consumir mais recursos, esgotando-os e impedindo o funcionamento da blockchain. O gas atua como limitador, cobrando mais caro por transações que consumam muitos recursos.

Contrato EVM

O ciclo de vida do contrato envolve escrevê-lo localmente, compilá-lo, implantá-lo na blockchain e, através de transações, interagir com suas funções e variáveis.

A EVM, o cérebro da blockchain, possui componentes principais:

A EVM funciona como o processador da blockchain, permitindo a escrita de programas através de contratos inteligentes.

Opcodes

Vamos agora explorar os opcodes, comandos que a EVM entende e executa. No site EVM Codes, encontramos uma lista de todos os opcodes.

Esses comandos são colocados na pilha, retirados e executados, resultando na dinâmica da execução. Não é necessário decorar esses comandos, mas é importante entender que o código escrito é transformado em bytecode, que contém os opcodes.

Os opcodes têm impacto muito grande, especialmente no versionamento da máquina virtual. A versão do compilador pode alterar opcodes, exigindo atenção ao escrever contratos em novas versões. A compatibilidade entre blockchains diferentes também é afetada, pois opcodes diferentes significam que uma máquina virtual não será compatível com outra.

Próximo passo

Neste vídeo, entendemos como a blockchain permite a escrita de programas complexos e como o software em linguagem de alto nível chega à máquina virtual.

No próximo vídeo, abordaremos um dos principais componentes da blockchain: a criptografia. Veremos na prática como funcionam os principais componentes de criptografia dentro de uma blockchain!

Sobre o curso Blockchain: crie contratos inteligentes avançados

O curso Blockchain: crie contratos inteligentes avançados possui 190 minutos de vídeos, em um total de 61 atividades. Gostou? Conheça nossos outros cursos de Computação em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Computação acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas