Orientação Ethereum de 10 minutos
O objetivo deste guia é fazer com que você mergulhe na Web3 o mais rápido possível para que você tenha o contexto e o conhecimento básico necessários para começar a aprender e desenvolver.
Por que Blockchain?
Se você é novo no espaço, pode não estar claro o que uma “Internet descentralizada” oferece a um desenvolvedor. Pense em um blockchain público como o Ethereum como definindo um “estado” claro – e fonte de verdade – para todos que participam dele, acessível por qualquer pessoa conectado à Internet, um sistema que usa a força do protocolo de código aberto e a redundância de rede ponto a ponto para permanecer confiável e seguro. Em vez de exigir que cada desenvolvedor de aplicativo crie e mantenha todo o estado de seu aplicativo em servidores privados, muito pode ser armazenado e recuperado do blockchain público. Um back-end comum, confiável e seguro.
A razão pela qual isso é possível é por causa das características exclusivas de um banco de dados blockchain. É somente gravação: onde um banco de dados típico pode adicionar e remover registros, os dados do blockchain existem para sempre e não podem ser removidos. A rede de nós mantém esse banco de dados como um “livro-razão distribuído” e tem protocolos rígidos sobre quem tem permissão para escrever em um determinado momento. Um dos aspectos interessantes da tecnologia é como as permissões de gravação são distribuídas entre os nós que podem não exigir nenhuma permissão especial para ingressar. Se você criar seu próprio nó Ethereum público, você terá acesso de gravação a toda a rede: desde que você tenha concluído a “prova de trabalho” necessária para lhe dar o privilégio de escrever um nó antes de qualquer outro nó.
Um exemplo típico e principal de tecnologia blockchain em ação é a facilidade de envio e recebimento de criptomoedas. O livro razão Ethereum público permite que um desenvolvedor implemente gateways de pagamento sem bancos, contas ou outros intermediários.
Um desenvolvedor pode criar seu próprio token Ethereum sem ter que criar a infraestrutura necessária para que os usuários os negociem. Uma plataforma de jogos online pode tokenizar itens no jogo, e os usuários podem comprar esses tokens e negociá-los fora da plataforma e possuí-los separadamente da própria plataforma de jogos. Além de trocar itens para uso no jogo, os colecionáveis digitais têm um potencial futuro enorme. À medida que os e-sports crescem em popularidade, você pode ter um equivalente digitalmente tokenizado de uma “bola home run”.
Com cada usuário tendo seu próprio par de chave pública / privada, a autenticação do usuário é muito mais simples, pois os aplicativos precisam apenas verificar se um usuário pode assinar transações com sua chave privada.
Contratos inteligentes podem ser usados para criar dinheiro programável. Considere o uso básico de um contrato inteligente programável para resolver a situação em que dois proprietários de um apartamento desejam dividir os pagamentos do aluguel de um inquilino em 50/50. Normalmente, o locatário teria que pagar a cada proprietário separadamente, ou pagaria a um proprietário ou agente, e o proprietário ou agente desembolsaria o dinheiro. Embora esta situação não seja particularmente problemática, considere a confiança implícita exigida de um indivíduo para dar ao outro sua parte. Compare isso com um contrato inteligente simples que divide programaticamente todos os fundos recebidos e os envia para o endereço de cada proprietário. O locatário precisa apenas enviar o aluguel para aquele endereço e cada proprietário receberá sua parte imediatamente. Devido à segurança e imutabilidade de um blockchain como o Ethereum, cada proprietário pode ter certeza de que o contrato inteligente funcionará conforme desejado e pode auditar seu código.
Assim que tivermos o backbone digital de confiança fornecido pelo blockchain, também podemos aplicar os benefícios da programação a problemas sociais importantes. Podemos fornecer um serviço bancário em algumas linhas de código. Podemos confirmar a identidade com alguns cliques. Tudo com um protocolo que pode ser executado em quase qualquer computador em qualquer lugar do mundo.
Como o espaço é novo e em desenvolvimento, existe uma grande oportunidade para os desenvolvedores criarem novos tipos de ferramentas, aplicativos e sistemas e apresentarem novos casos de uso para esta tecnologia.
Uma solução em busca de um problema?
Um refrão comum nas críticas à tecnologia de blockchain é que ela é uma solução em busca de um problema. Pode-se argumentar que a moeda digital foi o primeiro aplicativo destruidor de blockchain, e Distributed Finance, ou DeFi, está se preparando para ser o próximo. A extensão total de como essa tecnologia pode ser aplicada é atualmente desconhecida e é um dos principais motivos pelos quais os desenvolvedores no espaço, acho emocionante fazer parte. Por mais de uma década, a tecnologia laser não teve uso aparente, até que pesquisadores, experimentadores e empresários foram capazes de aplicá-la de maneiras totalmente inesperadas. Embora o mesmo argumento possa ser usado para qualquer nova tecnologia, a adoção massiva e generalizada de moeda digital e os mais de US $ 350 bilhões atualmente contidos em blockchains descentralizados, não gerenciados e distribuídos, é bastante notável.
Estrutura Básica de Aplicativo Distribuído
Um aplicativo distribuído é, em geral, aquele que se conecta a um blockchain em algum lugar de sua pilha e, provavelmente, de alguma forma fundamental para sua operação. Aplicativos distribuídos são uma mistura dos sistemas frontais e back-end usuais que você encontraria em um aplicativo da web, mas usarão uma biblioteca como web3.js para se conectar à rede Ethereum. Alguns aplicativos distribuídos são completamente distribuídos: vivendo inteiramente em redes distribuídas.
No final do usuário, MetaMask é um plugin popular que gerencia a carteira Ethereum dos usuários. MetaMask fornece uma interface para um usuário assinar transações e provar sua “identidade”.
Um determinado aplicativo distribuído pode se conectar ao blockchain Ethereum e também à carteira MetaMask do usuário (ou outra carteira) para autenticação.
Interface com Ethereum
Normalmente, para interagir com o Ethereum, você precisa operar um nó. Um nó é uma parte fundamental da estrutura de uma blockchain, o par que se conecta a outros pares para formar a estrutura descentralizada. O protocolo é rei na rede pública principal: não há servidor central, nem autoridade, nem limites sobre quem pode operar um nó. Existe apenas um protocolo comum para todos os nós participantes.
Muitos desenvolvedores de aplicativos preferem não executar seu próprio nó Ethereum, então serviços como Infura existem para fornecer um gateway e API para Ethereum que os desenvolvedores podem usar em seu lugar.
Contratos Inteligentes
Embora a rede Bitcoin seja um dos blockchains mais conhecidos, o Ethereum tem um conjunto de recursos que é mais interessante para os desenvolvedores, pois inclui uma máquina virtual completa de Turing que pode executar pequenos programas chamados contratos inteligentes. Como resultado, Ethereum tem a comunidade de desenvolvedores mais forte e ativa entre todos os ecossistemas de blockchain.
Contratos inteligentes são executados em nós e usam transações para sua entrada e saída. Os contratos inteligentes residem em endereços no blockchain, da mesma forma que o endereço da conta de um usuário. Para interagir com um contrato inteligente, você só precisa enviar uma transação para ele junto com os dados de entrada.
Gás
Executar um contrato inteligente requer gás, um pequeno custo que compensa os operadores de nó pelo serviço de execução do contrato inteligente, ao mesmo tempo que reduz a incidência de spam (tornando o spam caro) e evita que contratos inteligentes mal codificados tenham um loop infinito e obstruam a rede.
Mainnet, Testnets, Outras Redes
Uma mainnet, no jargão do blockchain, refere-se à rede ativa primária para um determinado protocolo. No caso do Ethereum, mainnet é onde o valor real é trocado e é considerada a fonte da verdade. Mas qualquer grupo de nós pode formar sua própria rede. Testnets atendem à comunidade de desenvolvedores, oferecendo redes muito menores onde Eth e gás são gratuitos, para que os desenvolvedores possam testar seus projetos e códigos sem risco. As redes de teste Ethereum são nomeadas Ropsten, Kovan, Rinkeby e Görli.
As redes Ethereum também são usadas para aplicativos corporativos: redes personalizadas que operam com permissão (versus mainnet e testnets sem permissão) para facilitar transações e outras operações entre um pequeno grupo de organizações (por exemplo). Essas redes têm muito menos nós e geralmente atendem a um propósito específico. Grandes bancos, por exemplo, podem usar um blockchain para liquidação interbancária.
Desenvolvimento em Ethereum
O desenvolvimento no Ethereum geralmente ocorre primeiro em blockchains caseiros locais. Os desenvolvedores podem usar algo como geth, software de linha de comando que permite criar redes Ethereum. Mas isso é como programar em uma linguagem de baixo nível: tornando as coisas mais fáceis, o pacote Truffle atende a muitas necessidades do desenvolvedor. O Ganache, parte do pacote, torna muito mais fácil para os desenvolvedores iniciarem uma rede blockchain local para testar seus aplicativos, oferecendo um “blockchain de um clique” para fins de desenvolvimento, junto com ferramentas de linha de comando. Drizzle ajuda no desenvolvimento de front-end e o próprio Truffle é uma estrutura para tornar mais fácil o desenvolvimento e implantação de contratos inteligentes.
Interagir com o blockchain em si requer o uso de uma API (como web3.js) e acesso a um nó; em vez de operar seus próprios nós, muitos desenvolvedores usarão um serviço como Infura como uma API Ethereum.
Linguagens de contrato inteligente
Atualmente, a linguagem mais popular para codificar contratos inteligentes é Solidez. Esta linguagem semelhante ao javascript é bastante fácil de aprender para novos desenvolvedores, especialmente aqueles com experiência em codificação da web. Remix é um IDE online que permite aos desenvolvedores experimentar a criação de contratos inteligentes. Há muitos detalhes importantes para aprender para programadores de contrato inteligentes, já que contratos inteligentes na rede principal operam com valor real e são imutáveis uma vez implantados (embora existam metodologias de programação que ajudam nisso).
The Full Stack
Como em todo desenvolvimento web moderno, há muitas opções de componentes a serem usados em vários níveis da pilha. Você pode obter mais detalhes na pilha de blockchain sempre atualizada.
Uma pilha simples de projetos
Aqui está um conjunto típico de ferramentas de desenvolvimento que você pode usar em um projeto simples:
NPM
Node package manager, parte do node.js
The Truffle Framework
Um conjunto de ferramentas para tornar o desenvolvimento mais fácil
ganache
Do framework Truffle, usado para lançar um blockchain privado em sua própria máquina
MetaMask
Uma interface de usuário blockchain e gateway para Ethereum; é um plug-in de navegador e aplicativo móvel que seu aplicativo pode se conectar, permitindo que os usuários assinem transações e realizem outras tarefas.
Solidez
Uma linguagem de programação popular para contratos inteligentes
HTML / CSS / JS
Para o seu front-end
Web3.js
Uma biblioteca da API Ethereum permitindo que você se conecte e interaja com a rede Ethereum
Infura
Um serviço de API Ethereum que dá aos desenvolvedores acesso à rede Ethereum sem ter que executar seu próprio nó
Se você está pronto para começar, nosso guia de 3 etapas entrará em mais detalhes para ajudá-lo a começar a trabalhar no blockchain rapidamente com um passo a passo.
- Integração do desenvolvedor: etapa 1
Integração do desenvolvedor: etapa 1
Integração do desenvolvedor: etapa 2
Integração do desenvolvedor: etapa 2
Integração do desenvolvedor: etapa 3