BT

Experimente a nova interface visual do InfoQ! Veja o novo design do InfoQ 3.0 e nos diga o que você achou.

Revisão do livro: Construindo Projetos Blockchain

| por Ben Evans Seguir 35 Seguidores , traduzido por Camilla Albuquerque Seguir 3 Seguidores em 29 nov 2018. Tempo estimado de leitura: 6 minutos |

Pontos Principais

  • Este livro fornece um olhar introdutório à construção de contratos inteligentes Ethereum.
  • São abordados tanto a linguagem Solidity quanto a biblioteca web3.js.
  • A última parte do livro apresenta o desenvolvimento de um contrato inteligente corporativo.
  • Desenvolvedores experientes podem considerar o livro como algo para iniciantes.
  • O livro destina-se a desenvolvedores que já conheçam como programar em Javascript.

"Building Blockchain Projects", de Narayan Prusty e publicado pela Packt, é um livro introdutório destinado a desenvolvedores que têm alguma experiência com programação (especialmente em Javascript) e um interesse em criptomoedas e tecnologias relacionadas.

O livro divide-se aproximadamente em 3 partes - uma introdução inicial (compreendendo os capítulos 1 e 2) para aplicações distribuídas e seus ecossistemas de criptomoedas associados. Em seguida, uma seção dos capítulos 3 a 5, que aborda os fundamentos básicos do desenvolvimento de contratos inteligentes - incluindo a linguagem de programação Solidity e a biblioteca JavaScript web3.js que pode ser usada para controlar contratos como, por exemplo, de um aplicativo web Node.js.

Por fim, os capítulos 6 a 9 abordam tópicos como implantações, acesso a informações externas ao blockchain Ethereum e na suíte truffle (um sistema de compilação baseado em Javascript para contratos inteligentes mais complexos).

O Capítulo 1 trata da terminologia básica de aplicativos distribuídos baseados em fundamentos de criptomoeda (DApps). Mesmo no início, o livro se depara com alguns conceitos simples, incluindo uma descrição bastante confusa da distinção entre "distribuído" e "descentralizado".

A ordem em que os conceitos são introduzidos também é um pouco estranha. Em vez de começar com uma descrição de casos de uso (potencialmente mais conhecidos), como o Bitcoin e o Ethereum, o livro tenta definir DApps e DAOs (organizações descentralizadas) diretamente.

Isso leva a uma seção em que o livro fica bastante perdido em detalhes como o gerenciamento de identidade em aplicativos distribuídos e as dificuldades de concorrência. Isso é um pouco demais para o começo, especialmente sem todos os conceitos técnicos relevantes introduzidos ainda.

A partir daqui, o conceito de uma moeda digital (ou como o livro chama, uma "moeda interna") é apresentado. Apenas neste momento, são apresentados alguns exemplos de DApps, incluindo o Bitcoin e o Ethereum. A descrição do Bitcoin é muito curta e carente de nuances, com vários pontos de discussão positivos muito comuns repetidos e sem qualquer análise real sobre serem verdadeiros ou não.

Em seguida, o Ethereum é introduzido em uma pequena seção. Isso novamente parece bastante estranho, já que a construção de contratos inteligentes e projetos relacionados na plataforma Ethereum é o assunto de todo o resto do livro. Uma descrição muito mais completa do Ethereum é fornecida no capítulo seguinte, mas o efeito geral é um tanto fraco.

O livro poderia ter fluído melhor se o Ethereum fosse introduzido antes, com os conceitos de descentralização entremeados na narrativa.

O segundo capítulo é muito melhor e fornece uma introdução concentrada, de maior nível, à plataforma Ethereum e seus principais conceitos. Para o leitor que não está familiarizado com criptomoedas (ou especificamente com o Ethereum) isso pode ser uma visão geral útil. No entanto, vários aspectos conceitualmente desafiadores (por exemplo, POS e Casper) não são abordados em profundidade, deixando o leitor com pouca compreensão dessas partes da tecnologia ou por que elas são necessárias ou úteis para o Ethereum.

O Capítulo 3, "Escrevendo Contratos Inteligentes", aborda a linguagem de programação Solidity. Este é um assunto complicado de se abordar - pois o Solidity é bem diferente da maioria das outras linguagens que os desenvolvedores provavelmente já usaram. Infelizmente, a cobertura da linguagem é, às vezes, menos que clara, e falha em apontar exatamente quais aspectos da linguagem podem diferir do que é esperado pelo leitor.

Por exemplo, o uso da palavra-chave var não esclarece se ela é necessária e qual é a semântica.

No entanto, há material útil aqui, até porque a apresentação rápida e direta da linguagem elimina muitas das deficiências do Solidity e ocasionalmente as decisões bizarras de design da linguagem.

O capítulo seguinte fornece uma introdução de alto nível à interface da biblioteca web3.js para o Ethereum. Este capítulo pressupõe o conhecimento prévio de Javascript e Node. A cobertura aqui é uma introdução razoável, mas também parece bastante superficial em alguns lugares - às vezes, quase se parecendo como uma repetição dos documentos on-line.

Outro aspecto que parece desnecessário são os inline dumps do HTML que aparecem neste capítulo. Isso parece estar presente simplesmente para permitir que o leitor recorte e cole o código em um IDE a partir do ebook, mas parece forçado em um livro técnico moderno.

O Capítulo 5 trata dos fundamentos das carteiras e as introduz através do auxílio didático da construção de um serviço de carteira, usando o Node para produzir um site simples que é capaz de assinar transações off-line e gerenciar a funcionalidade básica da carteira.

A última parte do livro lida com preocupações de nível corporativo. Mesmo aqui, no entanto, a principal linguagem em uso é o Javascript, a ponto de recomendar o formulário cross-compiled do compilador Solidity.

Os tópicos abordados nesta parte incluem a criação de uma plataforma básica de implantação de contrato, acesso a serviços externos usando o Oraclize (para construir um aplicativo de apostas como um exemplo estendido) e usando a suíte truffle para criar e gerenciar implementações maiores de contratos inteligentes.

O capítulo final fornece um rápido tour através da implementação de um blockchain privado (referido como um blockchain "consórcio") baseado no Ethereum. A principal tecnologia usada é o nó de paridade, e o livro embarca em um conjunto muito rápido de etapas sobre como construir isso do zero. A paridade é escrita em Rust, uma linguagem que não foi usada anteriormente no livro, e as instruções são breves.

O resultado final é que parece que a paridade foi escolhida simplesmente porque é baseada no Ethereum, e não porque é uma maneira particularmente boa de mostrar blockchains privados ("consórcio"). Entretanto, essa tecnologia fornece um bom ponto para terminar o livro.

No geral, o livro sofre de vários problemas de produção. Por exemplo, a qualidade da edição e indexação é notavelmente abaixo da média - há numerosos exemplos de gramática e ortografia incorretas, assim como erros mais sérios (por exemplo, a página do sumário não tem links corretos para alguns capítulos, etc).

O livro também parece bastante desatualizado - não só há sinais óbvios de idade (por exemplo, nos números de versão do software), mas o livro simplesmente não cobre muitos dos principais desenvolvimentos no Ethereum e sobre a área de contrato inteligente no último ano.

Alguns dos materiais técnicos agora também estão obsoletos ou não são mais recomendados. Por exemplo, os problemas que a rede Ethereum teve com o fornecimento de testnets estáveis e a possibilidade de testar em um ambiente verdadeiramente distribuído nem sequer são mencionados.

Em resumo, o livro fornece um ponto de entrada no contrato inteligente e desenvolvimento Ethereum que alguns desenvolvedores podem achar útil. Porém, programadores experientes e aqueles que já têm algum conhecimento do Ethereum podem encontrar outros conteúdos mais adequados às suas necessidades.

Sobre o Autor

Narayan Prusty é um desenvolvedor Full-Stack e trabalha como consultor para várias startups em todo o mundo. Trabalhou em diversas tecnologias e linguagens de programação, mas é muito apaixonado por JavaScript, WordPress, Ethereum, Solr, React, Cordova, MongoDB e AWS.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
BT