Alura > Cursos de Programação > Cursos de Computação > Conteúdos de Computação > Primeiras aulas do curso Blockchain e Solidity: criando Smart Contracts e Tokens

Blockchain e Solidity: criando Smart Contracts e Tokens

Primeiros contatos com Solidity - Apresentação

Boas-vindas ao curso de Solidity: Criando Smart Contracts e Tokens. Meu nome é Vinícius Chagas e serei seu instrutor ao longo deste curso, em que daremos os primeiros passos com a Blockchain e a linguagem de programação Solidity.

Audiodescrição: Vinícius é uma pessoa de pele clara, cabelos escuros, curtos e cacheados e barba cheia. Usa óculos de grau de armação redonda e metálica. Está de camisa polo preta e casaco preto. À sua frente, um microfone apoiado num braço articulado. Ao fundo, um ambiente com iluminação degradê do roxo ao verde.

O que aprenderemos?

Neste curso, aprenderemos primeiramente o que é a tecnologia Blockchain e o que são os ativos digitais que podem ser criados utilizando a Blockchain.

Além disso, conheceremos a linguagem de programação por trás da maioria dos ativos digitais, chamada Solidity, e aprenderemos a trabalhar com essa ferramenta.

Também entenderemos o que são Smart Contracts, programas escritos em Solidity e executados na Blockchain.

Neste curso, também teremos a oportunidade de criar o nosso primeiro token e publicá-lo na Blockchain, além de conhecer os principais tipos de token, para que servem e qual é a diferença entre eles.

E, como sempre precisamos testar nosso código, aprenderemos a escrever testes unitários para o token antes de publicá-lo na blockchain.

Por fim, entenderemos o que são as carteiras digitais (wallets), uma ferramenta muito importante neste ecossistema.

Utilizaremos todos esses conhecimentos para construir um projeto prático, que pode funcionar como seu primeiro portfólio no campo da Blockchain. Este projeto será um marketplace de programa de fidelidade, em que tokenizaremos os pontos de fidelidade, que poderão ser trocados por produtos e serviços do marketplace.

Ou seja, realizaremos integrações com Front-End e aprenderemos boas práticas de segurança com Smart Contracts.

Pré-requisitos

Para aproveitar este curso ao máximo, é necessário dominar lógica de programação e ter familiaridade com Node.js e Next.js para compreender tanto as ferramentas que utilizaremos quanto o nosso projeto prático.

Se algum desses pré-requisitos não lhe parecer tão confortável, convidamos você a buscar formações sobre esses assuntos aqui mesmo na plataforma da Alura. Com esses estudos completos, você poderá voltar para este curso e aproveitá-lo melhor.

Para quem é este curso?

Se você não é uma pessoa desenvolvedora, mas tem interesse em aprender mais sobre Blockchain, tokens e sobre como esse ecossistema funciona por baixo dos panos, este curso é para você!

E se você é uma pessoa desenvolvedora de qualquer outra linguagem, seja no nível básico, intermediário ou avançado, e quer entender um pouco mais sobre Solidity e como usar essa linguagem para construir Smart Contracts, este curso também é para você.

Vamos iniciar essa jornada? Esperamos você na primeira aula!

Primeiros contatos com Solidity - Blockchain e ativos digitais

Olá, pessoa desenvolvedora! Vamos começar nossa jornada pelo mundo da blockchain, dos tokens e dos ativos digitais. Ao final desta aula, teremos uma compreensão muito clara de qual problema os tokens resolveram.

Vidas Digitalizadas

Nas últimas duas décadas, você já refletiu sobre como nossas vidas se digitalizaram? Atualmente, realizamos praticamente todas as nossas atividades por meio de celulares ou computadores.

Nossos diplomas, ingressos para eventos esportivos e documentos importantes, como a CLT ou CNH, estão todos armazenados em formatos digitais acessíveis por aplicativos específicos.

Os ativos financeiros, nosso mercado financeiro é baseado atualmente em custódia de ativos digitais. Provavelmente, você não transaciona mais o Real com uma nota de R$50 ou R$100. É mais comum fazer um Pix, portanto, nosso dinheiro também foi digitalizado.

Quem nunca leu um ebook ou consumiu um PDF de um livro? Antigamente, os livros estavam limitados ao mundo físico, mas hoje podemos acessar o mesmo conteúdo no ambiente digital.

Da mesma forma, assistimos filmes por meio de plataformas de streaming, como esta aula que estamos tendo agora, que acontece completamente em um ambiente digital.

Passamos por um processo de digitalização que traz diversos benefícios, mas também apresenta alguns desafios. Quais seriam esses desafios?

Novos Desafios

O primeiro desafio, especialmente para os produtores de conteúdo, são as cópias infinitas idênticas e sem custo.

Cópias Infinitas

Enquanto no mundo físico copiar um livro demanda trabalho, custo e não resulta em uma cópia idêntica ao original, no mundo digital basta um "Ctrl + C" e um "Ctrl + V" de um PDF para replicar exatamente o mesmo conteúdo sem perda de qualidade.

Isso para produtoras e produtores de conteúdo, como produtoras e produtores de filmes, artigos jornalísticos, livros, fotógrafas e fotógrafos, é um desafio muito grande, porque viram seus ativos que produzem perdendo valor ao longo dessa década.

Dificuldades de controlar a propriedade

Além das cópias, enfrentamos outro desafio: o controle de propriedade no mundo digital. Por exemplo, se eu copio um PDF de um livro e o envio para outra pessoa, como podemos determinar quem é o verdadeiro proprietário?

Dependência de sistemas intermediários

Além disso, há a dependência de sistemas intermediários que controlam a propriedade e a organização desses ativos no ambiente digital.

Vamos considerar, por exemplo, a emissão de um documento como a CNH. O Detran é a entidade responsável por emitir a CNH. Mesmo que ela esteja digitalizada, ainda dependemos do Detran e do seu sistema para verificar a validade da CNH, se ela expirou e se é autêntica. Assim, enfrentamos esses três novos desafios com o processo de digitalização das nossas vidas.

Vamos explorar um pouco esse exemplo da vida digitalizada que acabei de trazer, pensando na situação de uma pessoa fotógrafa.

Exemplificando com uma pessoa fotógrafa

Imagine que você é um pessoa fotógrafa contratada para fazer um book de fotos de um casamento. Você vai lá, tira as fotos, revela e entrega o álbum para o cliente.

Agora, imagine que você entregou essas fotos no mundo físico. A pessoa que as recebeu pode até fazer cópias das fotos, mas essas cópias nunca serão idênticas às originais. No entanto, ao entregá-las, você perde o controle e o acesso às fotos, pois agora estão com o cliente. No mundo físico, o valor das fotos, dos livros e de outros itens é frequentemente atribuído às suas propriedades físicas específicas.

Quando entramos no mundo digital, isso se perde um pouco e o valor tende a diminuir. Então, se você é um fotógrafo e no final do dia entrega para o seu cliente um arquivo, uma foto em formato jpeg ou png, ao longo dos anos houve uma certa banalização dessa obra, desse ativo criado pela pessoa artista, apesar de ser apenas o meio de entrega e consumo que mudou.

Isso é resultado dos desafios que discutimos anteriormente.

A mesma coisa com pessoas escritoras. Então pensa para produzir um livro antes da digitalização. As cópias existiam sim, mas era muito mais difícil copiar uma obra do que hoje em dia com os PDFs, com os ebooks. E isso também afetou, por exemplo, as pessoas escritoras.

Com o grande número de pessoas que produzem esses ativos — que antes estavam ligados a formatos físicos como papel ou fotografias — agora migrados para o mundo digital, o consumo tornou-se totalmente digital. Isso resultou em um declínio no valor percebido desses itens.

Dinheiro Digital

Diante de todos esses desafios que mencionei, como poderíamos considerar a digitalização do nosso dinheiro?

Imagine poder realizar transferências sem depender dos sistemas intermediários mencionados, operando completamente no mundo digital. Seria como enviar dinheiro da mesma forma que enviamos uma foto por e-mail. Esse desafio tem sido discutido há bastante tempo.

Aqui está um trecho do livro "Os Inovadores" para vocês. Marc Andreessen, um empreendedor desde os primórdios da internet nos anos 90, foi o criador do primeiro navegador, o programa que usamos para acessar a internet.

"Se eu tivesse uma máquina do tempo e pudesse voltar a 93, uma coisa que eu sem dúvida faria seria introduzir o bitcoin ou alguma forma similar de criptomoeda."

Ele afirmava que se tivesse uma máquina do tempo e pudesse voltar ao início de sua carreira empreendedora no mundo digital, ele teria introduzido o Bitcoin, sobre o qual vamos discutir mais adiante. Se tivesse a oportunidade naquela época, ele o teria feito.

Por que não digitalizar o dinheiro quando já estamos digitalizando nossas relações e tudo o mais ao nosso redor? Quando falo em digitalizar o dinheiro, não me refiro apenas a usar Pix ou fazer transferências eletrônicas, mas sim transformar o dinheiro em um arquivo digital que pode ser trocado diretamente entre pessoas, 100% no mundo digital através da internet. Essa é a essência do Bitcoin.

Inovação trazida pelo Blockchain

Então, chegamos à blockchain. O que a blockchain resolve? Qual é a inovação que ela trouxe para nós? Primeiramente, possibilitou que qualquer pessoa, em qualquer lugar do mundo, conseguisse transferir dinheiro no ambiente digital da forma que acabei de descrever.

Assim, completamente digital e sem equivalente no mundo físico, sem a necessidade de sistemas intermediários controlando as transações, conseguimos realizar isso com a blockchain. Essa é a infraestrutura tecnológica que nos possibilita esse feito.

Essa infraestrutura tecnológica também assegura a autenticidade para nós, o que significa que podemos verificar se algo, mesmo no mundo digital, é original, e evita a cópia.

Não podemos simplesmente copiar e colar um dinheiro digital, como o Bitcoin, emitido na blockchain, e enviar para outra pessoa, duplicando o saldo, por exemplo. Isso era um dos maiores problemas antes da blockchain surgir, e ela resolveu exatamente essa questão.

Tokens: os containers da Blockchain

Imagine que os tokens na blockchain são como containers digitais

O que são os tokens? Podemos considerá-los como um tipo de container dentro da blockchain.

Se conseguirmos criar algo dentro dessa blockchain que seja não replicável e não copiável, e que possa ser transferido de pessoa para pessoa, por que não utilizar esse recurso para representar a propriedade de outros ativos? Isso poderia facilitar significativamente a emissão, transferência e liquidação desses ativos.

Então, utilizar essa ferramenta para representar a propriedade de ativos do mundo real ou digitais, como se fosse um container, que pode ser transferido de pessoa para pessoa pela internet, onde quem possui o container é o proprietário do ativo.

Cada container pode armazenar diversos tipos de itens, como moedas digitais, certificados, ingressos, ou qualquer outro tipo de ativo digital.

Agora com esses problemas resolvidos pela blockchain, conseguimos ter um meio de troca 100% digital, o que vai facilitar muito a gestão dos nossos ativos.

Esses containers são transferidos de uma pessoa para outra facilmente, facilitando a troca e o comércio de ativos digitais.

Esses containers são transferidos de uma pessoa para outra de maneira muito simples nesta nova infraestrutura tecnológica chamada blockchain, como mencionei.

Agora vamos considerar o caso da pessoa fotógrafa novamente. Com a blockchain, se antes ela enfrentava todos os problemas mencionados, agora ela pode criar um token para representar a propriedade de suas fotos digitais, por exemplo.

Agora, a pessoa que possui o token, que representa a propriedade da foto, é a verdadeira proprietária da foto original registrada. Dessa forma, podemos recuperar o controle sobre as fotos e a produção dessa pessoa fotógrafa.

Na época de 2020 e 2021, os NFTs, um tipo específico de token, começaram a ser vendidos por valores extremamente elevados.

Assim, o mercado começou a perceber que esses ativos totalmente digitais poderiam novamente atribuir valor, como uma obra de arte no mundo físico. Eles trouxeram o elemento de escassez, autenticidade e originalidade da obra física para o ambiente digital.

Sem dúvida, essa foi uma das inovações mais significativas que vimos, e captou muito a atenção do mercado.

Tem o caso de uma obra vendida por milhões que possuo a foto, a arte que foi vendida pelo valor que acabei de mencionar, e você pode estar se perguntando se eu apenas copiei e coloquei no slide.

Tenho uma cópia dessa foto, mas o original e a verdadeira proprietária ou proprietário desse ativo estão registrados no token que representa essa foto na blockchain.

Próximos Passos

Agora, vamos refletir sobre como criamos esses tokens. Como gerenciamos e armazenamos esses ativos? Esse será o tema da nossa próxima aula, então fique atento para aprender como criar o seu primeiro token.

Primeiros contatos com Solidity - Ferramentas do ecossistema

Como acabamos de ver, a blockchain resolveu alguns problemas relacionados à digitalização e serve muito bem para criar ativos digitais, como moedas que serão trocadas entre as pessoas.

Além de servir como um cartório digital onde podemos registrar esses ativos, também para hospedar e criar nossos próprios programas.

Esses programas são chamados de apps descentralizados(DApp), pois não dependem de um servidor central para funcionar. Eles operam na infraestrutura da blockchain, que é descentralizada e distribuída.

Vamos pensar em um exemplo prático:

Se tivéssemos que criar uma aplicação que vai receber uma moeda A e retornar ao usuário uma moeda B, em um meio tradicional de desenvolvimento, precisaríamos de um servidor central para ter nosso banco de dados, uma API para controlar essas operações e um front-end.

Com a blockchain, funciona de maneira diferente.

Não teremos esse servidor central, vamos escrever programas que são chamados de smart contracts (contratos inteligentes) ou também conhecidos como "contratos digitais".

Esses programas serão implantados na blockchain. Quando a aplicação que vai consumir nosso serviço for integrar com esse sistema, isso será feito através da integração com esses smart contracts. Eles são escritos em uma linguagem de programação chamada Solidity.

Ecossistema

Para escrever esses programas, essas aplicações descentralizadas, vamos entrar em um novo ecossistema.

Antes de chegarmos ao Token, precisamos entender quais ferramentas vamos utilizar. Temos uma nova linguagem de programação e um ambiente de execução que é um pouco diferente.

Também teremos novas ferramentas e bibliotecas que vamos utilizar para fazer essa integração, para fazer a implantação, o deploy dos nossos contratos, para fazer a leitura de dados e nossos programas criados serão também um pouco diferentes dos programas tradicionais.

Se você programa em Java, PHP, Python, JavaScript, vai perceber que há uma certa diferença, mas também muitas semelhanças.

Principais ferramentas de desenvolvimento

As principais ferramentas de desenvolvimento que utilizamos quando estamos desenvolvendo em blockchain, quando estamos desenvolvendo nossos contratos digitais, nossos smart contracts com Solidity, são o Hardhat e o Foundry. Neste curso, vamos focar no Foundry, mas as duas ferramentas têm o mesmo propósito.

Vamos deixar toda a documentação do Hardhat na atividade "Para Saber Mais" para você conhecer mais sobre ele e experimentar em seus projetos.

Bibliotecas de integração

Em relação à biblioteca de integração, temos duas dentro do ecossistema do JavaScript:

Existem outras para outras linguagens, mas neste curso vamos focar no Ethers.js. O propósito delas é o mesmo, é fazer a integração entre o seu sistema, seja o seu front-end ou seu back-end, com a blockchain.

O que são tokens?

Antes de criarmos nosso primeiro token e implantá-lo na blockchain, vamos pensar novamente no que são os tokens, mas agora com uma definição mais técnica.

O token é um padrão de contrato. É uma forma padronizada de escrever esse programa que escrevemos em Solidity. Vamos utilizá-lo como nossa ferramenta para criar esses meios de trocas digitais.

Eles vão representar a propriedade de ativos e são utilizados para facilitar a emissão e a negociação desses ativos. Quando criarmos o primeiro, ficará ainda mais claro.

Neste curso, vamos criar nosso primeiro token e utilizar essas ferramentas que acabamos de ver para publicá-lo na blockchain.

Sobre o curso Blockchain e Solidity: criando Smart Contracts e Tokens

O curso Blockchain e Solidity: criando Smart Contracts e Tokens possui 190 minutos de vídeos, em um total de 62 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