Etapa 1: enviando seu primeiro portal de desenvolvedor de transação

    Primeiros passos

    Se você tem experiência como desenvolvedor web, muito do que você já sabe se aplica ao desenvolvimento de blockchain. O objetivo deste guia é apresentar a você o que é diferente para que você possa começar a explorar e construir.

    Nenhuma surpresa aqui: a maior diferença é o uso de blockchain e, para este guia, faremos referência principalmente ao blockchain Ethereum, pois ele tem a maior comunidade de desenvolvedores. Por que você deseja incorporar o desenvolvimento de blockchain em sua pilha? Há uma série de coisas fascinantes que os blockchains permitem que você faça, que realmente desafiam as suposições que temos sobre como as pessoas interagem na e com a Internet.

    O que você pode fazer com o Blockchain (e nunca poderia antes)

    Bens digitais comercializáveis ​​de propriedade do usuário

    Com um blockchain, você pode (facilmente) criar ativos tokenizados que os usuários podem manter e negociar fora do seu site. Por exemplo, Gods Unchained é um jogo de cartas colecionáveis ​​no estilo Magic-the-Meeting onde os usuários podem possuir fisicamente suas cartas e negociá-las fora da plataforma. O que interessa nisso é que os cartões individuais têm uma identidade e podem ser usados ​​em outro lugar ou negociados em mercados de terceiros. Você pode, por exemplo, fazer com que um cartão que foi usado em uma partida de campeonato seja vendido como colecionável, da mesma forma que uma bola de home run de um campeonato da MLB..

    Pagamentos e transferência de valor

    Por causa da integração fundamental de criptomoedas, aceitar pagamentos e facilitar transações de valor é simplificado: transferências bancárias, cartões de crédito, paypal, todos requerem um esforço substancial por parte dos desenvolvedores para integração. Esses benefícios são particularmente verdadeiros para comunidades com acesso reduzido a serviços bancários e de crédito: temos um estudo de caso sobre o uso de Ethereum para facilitar a transferência de valor e desembolso de ajuda em campos de refugiados na Jordânia.

    Identidade do usuário e privacidade de dados

    Existem características únicas em como um usuário estabelece sua identidade por meio de uma rede blockchain. Usando um software como o Metamask, os usuários podem fazer logon único em toda a Internet. Você pode não precisar lidar com senhas ou login em seu site, o que significa menos solicitações de senha perdidas. A privacidade dos dados pode ser aprimorada dando ao usuário o controle sobre quem tem acesso às suas informações e dando-lhe a oportunidade de assinar transações. Quando um usuário sai de um site, os operadores do site não podem mais acessar seus dados diretamente.

    Estado global e persistente da Internet

    A internet de hoje é construída com muitas tecnologias, mas não existe uma autoridade central sobre o que é verdade. Gigantes da Internet como o Facebook podem ter as chaves de seus respectivos reinos com vastas redes e bancos de dados que funcionam um pouco como um estado persistente; no entanto, eles são privados e seu escopo é geralmente limitado a suas próprias organizações. Uma blockchain, como uma rede que contém dados imutáveis ​​ao longo do tempo, altamente segura e resistente a adulteração, e sem um único proprietário, pode servir como uma fonte de verdade para os participantes da comunidade.

    Escassez digital

    Os tokens negociáveis ​​e as criptomoedas contam com blockchains para fornecer a infraestrutura para ativos digitais escassos. Onde ativos digitais no passado eram infinitamente copiáveis ​​ou protegidos por esquemas DRM complexos, uma fonte de verdade única de estado persistente como um blockchain permite a criação de ativos digitais exclusivos que podem ser possuídos, mas não copiados, o que significa essas coisas pode possuir valor real.

    Web2 vs. Web3 Blockchain Stack

    Existem diferentes blockchains, cada um com suas próprias redes, suas próprias regras e suas próprias comunidades de participantes. Uma determinada plataforma de blockchain – como Ethereum – pode ter várias redes diferentes que você pode conectar a cada uma com todos os seus próprios dados. Você pode iniciar sua própria rede, algo que faremos posteriormente neste guia.

    Cada rede é composta por nós individuais, que estão executando instâncias do software de nó blockchain. Em vez de um modelo cliente-servidor padrão, os blockchains usam protocolos descentralizados ponto a ponto para se comunicarem uns com os outros e chegarem a um consenso sobre o estado da rede.

    Em uma pilha de desenvolvimento web típica, você pode construir um front-end usando html, CSS, javascript e uma estrutura como react. Esse front-end se comunica com um back-end que inclui armazenamento de arquivos, um ambiente de execução e um banco de dados. Os componentes de armazenamento, execução e banco de dados podem residir em um único servidor ou fazer parte de um sistema de nuvem ou rede de distribuição de conteúdo.

    A única diferença ao criar um aplicativo blockchain (muitas vezes chamado de aplicativo distribuído ou dapp) é que alguma parte da funcionalidade do seu aplicativo é entregue por um blockchain ou outro mecanismo distribuído. A conexão a um blockchain como o Ethereum normalmente é feito incluindo uma biblioteca javascript como web3.js ou ethers.js em associação com o software do nó ou API do blockchain. Bibliotecas Web3 estão disponíveis em uma ampla variedade de idiomas.

    Armazenamento de arquivos, funcionalidade de banco de dados e execução podem ocorrer em uma cadeia de blocos, embora atualmente as cadeias de blocos não sejam otimizadas para grandes volumes de dados ou execução complicada.

    Como exemplo, você pode construir um aplicativo que usa uma pilha de web típica, mas criar um contrato inteligente que reside no blockchain para realizar computação distribuída e interagir com tokens ou criptomoeda. Falaremos mais sobre contratos inteligentes mais tarde.

    Você também pode criar um aplicativo típico, mas a verificação do usuário é feita por meio de um software como o Metamask, que é, entre outras coisas, uma carteira digital e gerenciador de identidade.

    Enviando sua primeira transação

    Vamos enviar sua primeira transação em um blockchain como um usuário. Para fazer isso, você precisa de uma carteira.

    Instalando MetaMask

    MetaMask é um produto ConsenSys e inclui uma carteira e oferece um conjunto robusto de ferramentas para interagir com blockchains Ethereum. De interesse dos desenvolvedores, ele injeta uma API global em qualquer site visitado, acessível via javascript em window.ethereum; para todos os detalhes, veja a documentação completa do desenvolvedor para MetaMask em seu site. Para começar, instale a extensão do navegador Chrome MetaMask ou use o aplicativo MetaMask Mobile disponível na Apple App store ou Google Play store.

    Depois de instalado, passe pelo processo de criação da conta. Existem algumas coisas que você pode notar: uma, é que você não precisa inserir nenhum endereço de e-mail ou qualquer outra informação pessoal. A segunda coisa é que muita coisa é feita sobre como escrever ou armazenar sua “frase-semente”; isso é importante porque é a única maneira de acessar ou recuperar sua conta. Mais sobre isso mais tarde.

    Assim que o Metamask estiver em execução, você verá o saldo da sua conta (0 ETH) e, no canto superior direito, verá a rede à qual está conectado no momento. Expanda o menu de seleção de rede para revelar uma lista de redes. Selecione a Rede de Teste Ropsten.

    Mainnet e testnets

    Cada uma dessas redes é composta por conjuntos de computadores que executam software de nó. A maioria dos nós está na Mainnet, que é a rede primária de retenção de valor da Ethereum. No momento em que este livro foi escrito, havia pouco mais de 8.000 nós constituindo a rede Ethereum principal. Você pode explorar os nós de rede em Ethernodes ou Etherscan.

    As redes de teste compreendem muito menos nós (a rede Ropsten tem 3 nós) e neles a eth não tem valor. Essas redes são usadas principalmente por desenvolvedores para testar seus dapps e contratos inteligentes antes de serem lançados na rede principal. Você também notará que o MetaMask oferece opções para se conectar ao host local ou a um RPC personalizado. Ao desenvolver aplicativos Ethereum, você pode usar metamask para se conectar e interagir com o software de nó em execução em seu próprio sistema ou qualquer outra rede.

    Obtendo éter de teste

    No MetaMask, copie o seu endereço público para a área de transferência clicando no nome da sua conta:

    Seu endereço público identifica sua conta e pode ser compartilhado: é o que outra pessoa usaria para enviar tokens para você. É algo como o número de uma conta bancária ou um endereço de e-mail, em que você possui e controla o que está associado a esse endereço. Você prova que possui este endereço assinando transações com sua chave privada (que pode ser gerada a partir de sua frase semente), e é por isso que você deve mantê-las privadas. Da perspectiva do blockchain, qualquer pessoa que conheça uma determinada chave privada é o proprietário de quaisquer ativos atribuídos aos endereços públicos associados à chave privada. Seu endereço público será mais ou menos assim:

    0xDa4A488d8c58D57F4046CAbAc73DA0DB778DC930

    Você pode usar uma torneira para enviar Ether de teste para sua conta. Tente usar o Torneira Ropsten: cole seu endereço público no campo da conta e clique em “Send me test Ether”. Em breve, você verá que sua conta está preenchida com 1 ETH.

    O que aconteceu aqui? Você enviou seu endereço público para o Torneira Ethereum. O Faucet executou uma transação, enviando 1 ETH de propriedade de seu próprio contrato inteligente para o endereço que você forneceu. Você poderia ter fornecido qualquer endereço e a transação seria executada. Os nós da rede pegaram a transação e a incluíram em um bloco extraído, que foi gravado no blockchain e espalhado por toda a rede. O MetaMask então leu de um nó no blockchain e relatou a transação e seu saldo atual. Não há comunicação direta entre a torneira e a MetaMask.

    Existe outra maneira de obter o Ether de teste. Vá para a torneira MetaMask; observe que este site não carregaria se você não tivesse o MetaMask (ou outra interface web3) instalado. Este processo demonstra um fluxo de usuário diferente.

    Aqui você pode ver que as propriedades do usuário são indefinidas. Com esta implementação, você não precisa copiar e colar seu endereço do MetaMask. Ao clicar no botão “solicitar 1 éter”, a MetaMask irá perguntar se você deseja se conectar ao site. Aceitar esta conexão compartilhará seu endereço público com o site, mostrará seu saldo na página e a transação ocorrerá:

    Conectar-se dessa maneira é semelhante a fazer login em um site; no entanto, nenhum processo de registro foi necessário. O login por meio do MetaMask oferece possibilidades de login único, pois os sites podem se personalizar com base na conta conectada. Nesse caso, o seguinte JavaScript é usado para se conectar à conta de um usuário, usando o objeto ethereum injetado pela MetaMask:

    ethereum.request ({método: ‘eth_requestAccounts’});

    Assim que a transação for concluída, você deve ter 2 ETH em sua carteira na rede Ropsten.

    Enviando éter de teste

    Agora, de volta à caixa MetaMask Ether Faucet User, clique no botão laranja 1 ether para doar 1 ETH de volta para a torneira. Uma nova notificação aparecerá:

    A MetaMask está solicitando a aprovação desta transação; quando você confirmar, MetaMask irá assinar a transação usando sua chave privada, conforme necessário para a validação por nós do blockchain. Observe que existem algumas outras opções de transação: clique no botão “editar” no canto superior esquerdo para ver mais alguns detalhes. As taxas de gás compensam os nós e mineradores pelos custos associados à realização de uma transação. Cada transação no Ethereum tem taxas associadas à computação envolvida em manter a rede funcionando. Neste caso, 0,000021 ETH.

    Como qualquer transação deve passar pelo processo competitivo de ser assumida por nós e incluída em um bloco antes de ser incluída no blockchain, você pode garantir que sua transação aconteça mais rapidamente aumentando a recompensa de gás dada aos mineradores por incluir sua transação em seus próxima quadra.

    Clique próximo e confirme. Sua transação será listada como pendente e, em alguns minutos, sua transação fará parte do blockchain e você verá o saldo atualizado de sua conta no MetaMask.

    Próximos passos

    Nesta etapa introdutória, apresentamos alguns dos princípios básicos de transação e interação com um blockchain, principalmente a partir de uma perspectiva de usuário usando MetaMask. Na etapa 2 deste guia, você criará sua própria rede blockchain, interagirá com ela localmente e explorará um contrato no Remix. Na etapa 3, você ganhará mais familiaridade com o desenvolvimento local, usará o Infura, conectará tudo com o React e se conectará a uma rede de teste Ethereum.

      Integração do desenvolvedor: etapa 2Etapa 2 de integração do desenvolvedor

      Integração do desenvolvedor: etapa 2

      Integração do desenvolvedor: etapa 3Etapa 3 de integração do desenvolvedor

      Integração do desenvolvedor: etapa 3

      Orientação Ethereum de 10 minutosOrientação Ethereum de 10 Minutos

      Orientação Ethereum de 10 minutos