Introdução

Se você está aqui, presumimos que você é um desenvolvedor/hacker que está intrigado com o blockchain. Você está convencido de que entende como funciona e agora está ansioso para descobrir o que o blockchain significa para você e seu conjunto de habilidades para desenvolvedores.

Se você precisar de mais de um primer, recomendamos começar com o whitepaper do bitcoin e da Ethereum.

Nosso objetivo neste post é:

  1. Explique como o desenvolvimento de blockchain difere dos paradigmas de desenvolvimento existentes
  2. Fornecer contexto para as oportunidades e desafios neste espaço
  3. Aponte para recursos que lhe darão a base para começar a desenvolver neste novo paradigma

Mudanças de Paradigma para Desenvolvedores

Os aplicativos de Internet se beneficiam dos efeitos de rede porque eles mantêm silos centralizados de informações. Construído sobre protocolos abertos compartilhados (por exemplo, TCP / IP, HTTP), empresas como Yelp, Facebook e Amazon se beneficiam de ter todos os seus usuários – e, como resultado, dados – em um só lugar. Dessa forma, eles não apenas têm uma vantagem sobre os concorrentes com menos dados, mas também um controle completo sobre a maneira como monetizam os dados. Nas palavras do investidor em criptografia Joel Monegro, o atual paradigma da Internet capta a maior parte de seu valor por meio de camadas de aplicativos, enquanto os finos protocolos de comunicação subjacentes capturam um valor mínimo.

Alternativamente, a distribuição de valor no paradigma blockchain pode ser descrita com protocolos fat e uma fina camada de aplicação. Esta mudança de paradigma é possível devido à inovação de tokens criptográficos, que são bem descritos por Albert Wenger da USV:

“Historicamente, a única maneira de ganhar dinheiro com um protocolo era criar um software que o implementasse e tentar vender esse software (ou mais recentemente para hospedá-lo)… Com tokens (criptográficos), no entanto, os criadores de um protocolo podem monetizar “É diretamente e, de fato, se beneficiará mais, à medida que os outros construírem negócios além desse protocolo.”

Anteriormente, os criadores de protocolos de comunicação abertos para a Internet, em grande parte pesquisadores da DARPA e colaboradores sem fins lucrativos, não conseguiam alinhar incentivos financeiros com o desenvolvimento de protocolos. Em contraste, hoje os criadores de protocolos podem emitir “tokens”, como Bitcoin e Ethereum, que representam o valor de seus protocolos descentralizados.

Monegro acredita que essa mudança de paradigma afeta o modo como os desenvolvedores devem pensar sobre seus aplicativos: “A combinação de dados abertos compartilhados com um sistema de incentivo que impede que os mercados “vencedores levam tudo” mudem o jogo na camada de aplicativo e cria uma nova categoria de empresas com modelos de negócios fundamentalmente diferentes na camada do protocolo.”

Ethereum

Chegamos ao entendimento de que, no paradigma blockchain, os desenvolvedores podem capturar valor por meio da inovação de protocolo. Para continuar nossa discussão, analisamos como as tecnologias blockchain evoluíram para eventualmente atender aos desenvolvedores. Oito anos atrás, o Bitcoin foi concebido como uma moeda virtual que eliminou a necessidade de sistemas financeiros centralizados. Inicialmente, os desenvolvedores realmente tentaram construir aplicações no blockchain do Bitcoin, armazenando dados no blockchain em si, mas se mostrou bastante ineficiente (como descrito em outro antigo post de Joel!). Um desses desenvolvedores, Vitalik Buterin, ficou frustrado com a cultura de imobilismo e aversão a riscos do Bitcoin por adotar novos recursos amigáveis ​​ao desenvolvedor. Então, ele construiu sua própria plataforma, Ethereum.

Enquanto o Bitcoin foi originalmente planejado para servir como um novo meio para armazenamento financeiro de valor, o Ethereum foi inventado para servir como um ambiente de desenvolvimento completo de Turing. Na Ethereum, os desenvolvedores escrevem contratos inteligentes na linguagem de programação Solidity, e esses contratos inteligentes são executados na Máquina Virtual Ethereum (EVM). Aqui, observamos uma oportunidade para os desenvolvedores de bifurcar e implementar seus próprios blockchains para servir a diferentes finalidades. Para isso, no entanto, seria necessário reacender o suporte ao desenvolvedor e os efeitos de rede que as tecnologias blockchain existentes já haviam alcançado anteriormente. Hoje, a construção de redes existentes como a Ethereum permite que os desenvolvedores se tornem interessados ​​não apenas em seus próprios aplicativos, mas também no protocolo subjacente.

Dapps, moedas de aplicativo e contratos inteligentes

Os desenvolvedores de blockchain atuais geralmente criam aplicativos descentralizados, ou dapps, além dos protocolos existentes para atender a mercados específicos e usuários finais. Ao fazer isso, os desenvolvedores podem emitir tokens, ou moedas de aplicativos, que são usados ​​para executar certas “funções” dos próprios dapps, ao contrário dos tokens Chuck E. Cheese que são usados ​​para propósitos específicos como o skee-ball. Essas “funções” são os “contratos inteligentes” que prometem serviços da dapp em troca de um ativo digital, eliminando, assim, a necessidade de um intermediário para garantir a transação. Em outras palavras, contratos inteligentes prometem que, para um token Chuck E. Cheese, você pode trocar um jogo de skee-ball.

À medida que a funcionalidade do dapp torna-se mais procurada, o número fixo de moedas de aplicativos aumentam de valor em função da oferta e da demanda. Em outras palavras, se a experiência do Chuck E. Cheese é realmente notável e altamente exigida, o suprimento fixo de fichas se torna mais valioso. Esse é o princípio subjacente que informa todas as OICs (ofertas iniciais de moedas), nas quais os desenvolvedores da dapp solicitam investimento oferecendo moedas de aplicativos em troca de capital para financiar seus projetos.

Mas espere, você pode perguntar: “Por que não usar um token existente em vez de emitir seu próprio token específico da dapp?” As moedas de aplicativo específicas do Dapp permitem economias de pequena escala que facilitam o propósito do aplicativo. Esses tokens servem como recursos escassos que podem ser regulados e controlados para se alinharem mais de perto com a funcionalidade de um dapp. É aqui que o Ethereum volta à cena, pois com o Ethereum os desenvolvedores podem facilmente criar seus próprios tokens para o uso específico de seus próprios dapps.

Oportunidades Antecipadas

Com uma compreensão dos mecanismos subjacentes do dapps, é importante pensar cuidadosamente sobre como a descentralização beneficiaria seus usuários finais. Em vez de entrar em uma lista de projetos paralelos, trocando bancos de dados relacionais por implementações blockchain, pedimos que você considere os benefícios da descentralização. Por exemplo, a Augur cria mercados de previsão confiando em participantes descentralizados para fazer previsões corretas porque eles compartilham incentivos financeiros.

Em um meta-nível, também há oportunidades para inovação na pilha de desenvolvedores. Muitos desenvolvedores de blockchain comparam a maturidade das ferramentas e estruturas blockchain às da web durante os primeiros dias da Internet. Nós falamos com Ben Yu, do Stream, que descreveu isso como uma nova oportunidade para os desenvolvedores: “Há um resultado extremamente baixo para tornar o campo mais acessível, e muita infraestrutura técnica precisa ser construída para trazer blockchain a partir de 1994, em termos da Internet, para 2017.”

Com a inovação do blockchain, muitos identificaram a oportunidade de construir uma nova pilha web descentralizada que não depende de entidades governamentais ou corporativas centralizadas. A pilha tradicional da web é composta de blocos de construção como TCP / IP, DNS, bancos de dados, servidores da Web, sistemas de autenticação e CDNs, e estamos no meio da replicação desses componentes usando plataformas como Ethereum como camada base.

Desafios da imutabilidade

Infelizmente, uma tecnologia que é comparada às primeiras iterações de JavaScript quase certamente vem com desafios, o mais aparente deles está relacionado à imutabilidade de novos protocolos. Os desenvolvedores não podem alterar o blockchain subjacente ou os contratos inteligentes de nível superior. Bibliotecas ou contratos não podem ser facilmente versionados. O recente bug de paridade que bloqueou 150 milhões de dólares em fundos, entre muitos outros incidentes semelhantes, nos lembra da necessidade urgente de construir arquiteturas “à prova do futuro”.

Brandon Millman, engenheiro da 0x, descreveu como a imutabilidade blockchain afeta a maneira como ele pensa sobre as preocupações de segurança: “Estar nesse espaço significa ser muito mais cuidadoso, especialmente porque o dinheiro das pessoas está em risco. Parte do benefício do paradigma blockchain é que, se você está segurando sua chave privada, é difícil para as pessoas tirarem dinheiro de você, mas muitas fraudes estão levando você a enviar seu dinheiro para o lugar errado, em vez de alcançar para roubar dinheiro da sua carteira.

Os desenvolvedores, especialmente aqueles acostumados ao ritmo acelerado do mundo das startups, são forçados a considerar as compensações entre velocidade e segurança. Como Ben Yu de Stream descreve, “você tem que se mover extremamente rápido, porque o espaço está indo muito rápido, mas você não pode se mover rapidamente e quebrar as coisas, que é a filosofia tradicional para o desenvolvimento que está sendo feito agora. Se você quebrar as coisas, você perderá centenas de milhões de dólares”.

Construir no blockchain requer um nível diferente de planejamento. Os desenvolvedores não podem mais aplicar hot-fixes ou patches durante a noite, porque não têm mais controle centralizado sobre sistemas inteiros. Em vez disso, a introdução de alterações no sistema geralmente envolve a bifurcação de protocolos inteiros ou, em alguns casos, o fornecimento de fontes separadas para parâmetros de protocolo que não são vinculados diretamente ao blockchain.

Limitações do Ethereum

Além dos desafios gerais de imutabilidade, o Ethereum inclui várias limitações que os desenvolvedores de blockchain podem encontrar. Por um lado, Ethereum é incapaz de acessar dados em tempo real de fora do blockchain. Os desenvolvedores precisam confiar em fornecedores confiáveis ​​de dados de terceiros, chamados oracles, para fornecer contratos inteligentes com informações externas, como clima, números aleatórios ou valores monetários.

Além disso, a especificação do Ethereum impede cálculos em tempo real. O processamento de transações em bloco leva mais de 15 segundos (o que é muito rápido comparado aos 10 minutos do Bitcoin). Como resultado, os desenvolvedores precisam escrever um código assíncrono com estruturas front-end que possam atualizar os estados adequadamente (como o React).

Com a Ethereum, você também está ligado ao pagamento de suas transações pela operação com gás que se traduz no éter da Ethereum. Como resultado, usando a versão atual do Solidity, você pode muito facilmente encontrar um limite de transação se o cálculo que você pretende executar for muito caro (como verificar o xeque-mate em um jogo de xadrez). Como resultado, cálculos on-chain, porque se tornam caros em termos de dinheiro e largura de banda de rede. Existem alternativas interessantes como o Truebit para realizar cálculos mais intensivos off-chain.

Vamos começar

Em geral, pode certamente sentir-se esmagador ao entrar neste espaço. É um campo interdisciplinar, abrangendo domínios da economia, teoria dos jogos, finanças, ciência da computação, matemática, criptografia e muito mais. No entanto, isso também significa que há muita área de superfície para contribuir.

Brandon of 0x recomenda mergulhar nas áreas em que você tem algum interesse ou experiência, em vez de tentar aprender tudo de uma só vez: “Se você já desenvolveu JS antecipadamente, há muitas bibliotecas JS para as quais você pode contribuir. Embora você definitivamente precise saber (como tudo se encaixa) eventualmente, você não precisa sentir que precisa fazer um curso inteiro inicialmente.”

No espírito da descentralização, a maior parte do código para projetos no blockchain também está disponível através do código aberto. Há uma série de bons recursos para sujar as mãos:

Os documentos oficiais do Solidity são um bom lugar para começar.

O Truffle Framework é um dos melhores frameworks de solidez.

Veja como as vendas de tokens e tokens são desenvolvidas no repositório zeppelinOS, uma das bibliotecas mais confiáveis ​​para criar dApps.

A Blockgeeks também fornece um guia token detalhado da Ethereum com amostras de código e conceitos de alto nível.

Você pode até aprender com Crypto Kitties e criar seu próprio jogo digital no blockchain.

Além disso, as comunidades de desenvolvedores são notavelmente receptivas e prestativas. Confira:

/r/ethereum

/r/ethdev

https://blockgeeks.com/

Se você aprender principalmente codificando seus próprios projetos, aqui estão algumas ideias para começar:

Construa sua própria carteira. Pode ser um aplicativo da Web, aplicativo móvel ou desktop.

Crie seu próprio token ERC-20 e implante-o na rede de teste.

Modifique os kitty crypto (cães, tanques, zumbis …) e coloque-o na rede de teste.

Ansioso?

Em seu estado atual, sim, o desenvolvimento de blockchain é confuso. Não, não há estruturas e ferramentas limpas análogas às que existem para o desenvolvimento moderno da Web. Mas por que não ver o estado nascente do blockchain como uma oportunidade para impactar uma tecnologia de mudança de paradigma?

No blockchain, você não precisa implantar nenhum servidor centralizado, o que significa que não há um único ponto de falha. Se toda a sua pilha for descentralizada, não haverá terceiros de confiança envolvidos, tornando-a resistente à censura, e seu banco de dados é publicamente verificável. Como o novo paradigma oferece a oportunidade de compartilhar dados publicamente, observamos uma vantagem suprema na descentralização de bancos de dados. Este é o futuro que estamos construindo em direção ao Blockchain, onde a informação e o poder são distribuídos sistematicamente cortando o intermediário.