aprendizagem web3: o que é Ethereum

Ethereum é "o computador do mundo", uma descrição comum para a plataforma Ethereum. O que isso significa? Vamos começar com uma descrição focada na ciência da computação e passar para uma interpretação mais prática das capacidades e propriedades do Ethereum, comparando-o com o Bitcoin e outras tecnologias de contabilidade distribuída (para simplificar, usaremos frequentemente a referência "blockchain") para comparação.

Do ponto de vista da ciência da computação, o Ethereum é uma máquina de estado determinística, mas praticamente ilimitada, com duas funções básicas, a primeira é um estado singleton globalmente acessível e a segunda é fazer alterações na máquina virtual de estado.

Em um nível mais prático, o Ethereum é uma arquitetura de computação descentralizada global de código aberto que executa programas chamados contratos inteligentes. Ele usa o blockchain para sincronizar e armazenar o estado e uma criptomoeda chamada ether para medir e restringir os custos dos recursos de execução.

A plataforma Ethereum permite que os desenvolvedores aproveitem a economia integrada para criar aplicativos descentralizados poderosos. Ele também reduz ou elimina autoridades de censura, interfaces de terceiros e risco de contraparte, garantindo tempo de atividade contínuo.

Comparação com Bitcoin

Muitas pessoas que têm alguma experiência anterior com criptomoedas se juntarão ao Ethereum, especialmente ao Bitcoin. O Ethereum compartilha muitos elementos comuns com outros blockchains abertos: uma rede peer-to-peer conectando participantes, um algoritmo de consenso para sincronização de estado (prova de trabalho), uma moeda digital (Ether) e um livro-razão global (blockchain).

Componentes da blockchain

Blockchains públicos de código aberto geralmente incluem os seguintes componentes:

  • Uma rede peer-to-peer que conecta participantes e propaga transações e blocos contendo transações verificadas, com base no protocolo padrão "fofoca".

  • Um conjunto de regras de consenso implementadas em uma máquina de estado.

  • As mensagens, representadas na forma de transações, representam transferências de estado.

  • Uma máquina de estado que processa transações de acordo com regras de consenso.

  • Banco de dados distribuído, blockchain, log de todas as transferências de estado.

  • Algoritmos de consenso (por exemplo, prova de trabalho) descentralizam o controle do blockchain, forçando os participantes a competir e restringindo-os usando regras de consenso.

  • Uma ou mais implementações de software de código aberto acima.

Todos ou a maioria desses componentes geralmente são combinados em um cliente de software. Por exemplo, em Bitcoin, a implementação de referência é desenvolvida pelo projeto de código aberto Bitcoin Core e implementada como um cliente bitcoind. No Ethereum, não há uma implementação de referência, mas uma especificação de referência , que é uma descrição matemática do sistema em [yellowpaper] . Existem muitos clientes construídos para especificações de referência.

No passado, usamos o termo "blockchain" para nos referir a todos os componentes acima, como uma abreviação para a combinação de tecnologia que engloba todas as propriedades acima. Hoje, no entanto, a palavra blockchain foi diluída por profissionais de marketing e especuladores que procuram promover seus projetos e obter avaliações irrealistas para suas startups. Na verdade, não tem sentido por si só. Precisamos de qualificadores para nos ajudar a entender as características desses blockchains, como _código aberto, público, global, descentralizado, neutro e resistente à censura_, etc., para identificar as características emergentes importantes que esses componentes fornecem aos sistemas "blockchain".

Nem todos os blockchains são criados iguais. Quando lhe dizem que algo é um blockchain, você não tem uma resposta e precisa fazer muitas perguntas para esclarecer o que significa "blockchain". Primeiro, pergunte a descrição dos componentes acima e, em seguida, pergunte se esse "blockchain" mostra características como código aberto e público.

Desenvolvimento Ethereum

Os objetivos e a construção do Ethereum diferem em muitos aspectos dos blockchains de código aberto anteriores, incluindo o Bitcoin.

O objetivo do Ethereum não é principalmente uma rede de pagamento em moeda digital. Mas a moeda digital _ether_ é integral e necessária para o funcionamento do Ethereum, e o ether também é considerado uma _moeda utilitária_ para pagar pelo uso da plataforma Ethereum.

Ao contrário do Bitcoin, que possui uma linguagem de script muito limitada, o Ethereum foi projetado como um blockchain programável de uso geral, executando uma _máquina virtual_ capaz de executar código de complexidade arbitrária e infinita. A linguagem de script do Bitcoin é intencionalmente limitada a julgamentos simples de condição de consumo verdadeiro/falso, a linguagem do Ethereum é _Turing-complete_, o que significa que é equivalente a um computador de uso geral que pode executar qualquer coisa que uma máquina de Turing teórica possa executar.

O Nascimento do Ethereum

Todas as grandes inovações resolvem problemas reais, e o Ethereum não é exceção. O Ethereum foi concebido quando as pessoas reconheceram o poder do modelo Bitcoin e buscaram ir além dos aplicativos de criptomoeda para outros projetos. Mas os desenvolvedores enfrentam um dilema: construir em cima do bitcoin ou iniciar um novo blockchain. Construir no Bitcoin significa estar dentro das restrições intencionais da rede e tentar encontrar uma maneira de contornar isso. Os tipos e tamanhos limitados de armazenamentos de dados parecem limitar os tipos de aplicativos que podem ser executados sobre eles como soluções de segundo nível. Os programadores precisam construir sistemas que usam apenas variáveis ​​limitadas, tipos de transação e conjuntos de dados. Para projetos que exigem mais liberdade e maior flexibilidade, lançar um novo blockchain é a única opção. Mas iniciar um novo blockchain significa construir todos os elementos de infraestrutura, testar, etc.

No final de 2013, o jovem programador e entusiasta do Bitcoin, Vitalik Buterin, começou a pensar em estender ainda mais a funcionalidade do Bitcoin e do Mastercoin (um protocolo de sobreposição que estende o Bitcoin para fornecer contratos inteligentes básicos). Em outubro de 2013, Vitalik propôs à equipe da Mastercoin uma abordagem mais geral que permitiria a substituição da linguagem de contrato especializada da Mastercoin por contratos flexíveis e programáveis ​​(mas não completos em Turing). Embora a equipe da Mastercoin tenha ficado impressionada, essa proposta era muito agressiva para se encaixar em seu roteiro de desenvolvimento.

Em dezembro de 2013, Vitalik começou a compartilhar um white paper descrevendo a ideia por trás do Ethereum: um blockchain programável e de uso geral completo em Turing. Dezenas de pessoas viram esse rascunho inicial e forneceram feedback a Vitalik, ajudando-o a desenvolver sua proposta.

Ambos os autores deste livro receberam um primeiro rascunho do white paper e comentaram sobre ele. Andreas M. Antonopoulos ficou intrigado com a ideia e fez muitas perguntas a Vitalik sobre o uso de um blockchain separado para implementar regras de consenso para a execução de contratos inteligentes e as implicações das linguagens completas de Turing. Andreas está muito preocupado com o progresso do Ethereum, mas ele está nos estágios iniciais de escrever o livro "Mastering Bitcoin" e não se envolve diretamente com o Ethereum até muito mais tarde. No entanto, o Dr. Gavin Wood foi um dos primeiros a abordar Vitalik e oferecer ajuda com habilidades de programação C++. Gavin se tornou o cofundador, codesigner e CTO da Ethereum.

Conforme declarado por Vitalik em sua "Pré-história Ethereum" :

O protocolo Ethereum na época era inteiramente minha própria criação. A partir daqui, no entanto, novos jogadores começam a entrar. O jogador mais proeminente na frente de negócios até agora foi Gavin Wood.

Gavin também pode ser creditado com a mudança sutil em ver o Ethereum como uma plataforma para construir dinheiro programável, contratos baseados em blockchain que podem conter ativos digitais e transferi-los para plataformas de computação de uso geral de acordo com regras predefinidas. Isso começou com uma ligeira mudança de ênfase e terminologia, e o impacto se intensificou com a crescente ênfase em um sistema "Web 3" que vê o Ethereum como parte de um conjunto de tecnologias descentralizadas. Os outros dois são Whisper e Swarm.

A partir de dezembro de 2013, Vitalik e Gavin refinaram e desenvolveram a ideia, trabalhando juntos para construir as camadas de protocolo que formam o Ethereum.

Os fundadores do ethereum estão pensando em um blockchain que não serve a um propósito específico, mas suporta uma ampla variedade de aplicações por ser _programável_. A ideia é que, ao usar um blockchain de propósito geral como o Ethereum, os desenvolvedores podem escrever seus aplicativos específicos sem ter que desenvolver os mecanismos subjacentes de redes ponto a ponto, blockchains, algoritmos de consenso, etc. A plataforma Ethereum visa abstrair esses detalhes e fornecer um ambiente de programação determinístico e seguro para aplicativos blockchain descentralizados.

Como Satoshi, Vitalik e Gavin não apenas inventaram uma nova tecnologia, eles combinaram novas invenções com a tecnologia existente de maneiras inovadoras e forneceram código de protótipo para provar sua ideia ao mundo.

Os fundadores passaram anos construindo e refinando a visão. Em 30 de julho de 2015, o primeiro bloco Ethereum foi extraído. A World Computer começa a servir o mundo...

O artigo de Vitalik Buterin "Ethereum Prehistory", publicado em setembro de 2017, fornece uma fascinante visão em primeira pessoa dos primeiros momentos do Ethereum.

Você pode lê-lo em https://vitalik.ca/general/2017/09/14/prehistory.html .

Quatro fases do desenvolvimento do Ethereum

O nascimento do Ethereum é o lançamento da primeira fase, chamada "Frontier (Frontier)". O plano de desenvolvimento da Ethereum prossegue em quatro fases, com cada nova fase introduzindo grandes mudanças. Cada estágio pode conter subversões, conhecidas como "hard forks", que alteram a funcionalidade de maneira incompatível com versões anteriores.

As quatro principais fases de desenvolvimento são chamadas de Frontier, Homestead, Metropolis e Serenity. Os hard forks no meio têm o codinome "Ice Age", "DAO", "Tangerine Whistle", "Spurious Dragon", "Byzantium" e "Constantium". Constantinopla". Eles estão listados abaixo, junto com o número do bloco onde ocorreu o hard fork:

transição anterior

Bloco #0

"Frontier" - O estágio inicial do Ethereum, que durou de 30 de julho de 2015 a março de 2016.

Bloco nº 200.000

"Era do Gelo" - Um quebra-cabeça que introduz o crescimento exponencial da dificuldade, motivando a transição para a prova de aposta.

Bloco nº 1.150.000

"Homestead" - a segunda fase do Ethereum, lançada em março de 2016.

Bloco nº 1.192.000

"DAO" - Hard fork para restaurar o contrato DAO quebrado, fazendo com que o Ethereum e o Ethereum Classic se dividam em dois sistemas concorrentes.

Bloco nº 2.463.000

"Tangerine Whistle" - Um hard fork que altera o método de cálculo de gás para certas operações intensivas de IO e limpa o estado acumulado de ataques de negação de serviço que aproveitam o baixo custo de gás dessas operações.

Bloco nº 2.675.000

"Spurious Dragon" - hard fork para lidar com mais vetores de ataque de negação de serviço e outra limpeza de estado, também inclui mecanismo de proteção contra ataque de retransmissão.

status atual

Atualmente, estamos na fase _Metropolis_, que é planejada como um hard fork de duas versões menores (consulte [hard_fork] ), com os codinomes Byzantium e Constantinople . Bizâncio entrou em vigor em outubro de 2017 e Constantinopla está prevista para meados de 2018.

Bloco nº 4.370.000

"Metropolis Byzantium" - Metropolis é a terceira fase do Ethereum, até o momento, lançada em outubro de 2017. Byzantium é o primeiro de dois hard forks para Metropolis.

planos futuros

Depois do hard fork Metropolis Byzantium, o Metropolis tem outro hard fork planejado. Metropolis é seguida pela fase final da implantação do Ethereum, codinome Serenity.

Constantinopla

- A segunda parte da fase Metropolis, prevista para meados de 2018. Espera-se que inclua uma mudança para um algoritmo de consenso híbrido proof-of-work/proof-of-stake, entre outras mudanças.

Serenidade

A quarta e última fase do Ethereum. Serenity ainda não tem uma data de lançamento planejada.

Ethereum: O Blockchain Universal

O blockchain original (blockchain do Bitcoin) rastreia o estado das unidades Bitcoin e sua propriedade. Você pode pensar no Bitcoin como uma máquina de estado , onde as transações causam _transições de estado_ globais que mudam a propriedade dos Bitcoins. As transferências de estado são regidas por regras de consenso, permitindo que todos os participantes (eventualmente) convirjam para um estado comum (consenso) do sistema após a mineração de alguns blocos.

Ethereum também é uma máquina de estado distribuída. Mas, em vez de apenas rastrear o estado da propriedade do dinheiro, o Ethereum rastreia as transições de estado em um armazenamento de dados de uso geral. Normalmente, queremos dizer quaisquer dados que possam ser representados como uma tupla_ de valor-chave. Um armazenamento de dados de valor-chave simplesmente armazena qualquer valor referenciado por uma chave. Por exemplo, armazene o valor "Mastering Ethereum" referenciado pela chave "Book Title". Em alguns aspectos, isso serve ao mesmo propósito que o modelo de armazenamento de dados _Random Access Memory (RAM) usado por computadores de uso geral. O Ethereum tem memória para armazenar código e dados e usa o blockchain Ethereum para rastrear mudanças nessa memória ao longo do tempo. Como um computador de programa armazenado de uso geral, o Ethereum pode carregar código em sua máquina de estado e executá-lo, armazenando as alterações de estado resultantes em seu blockchain. Duas diferenças importantes em relação aos computadores de uso geral são que as alterações no estado do Ethereum são regidas por regras de consenso e que o estado é distribuído globalmente por meio de um registro compartilhado. Ethereum responde à pergunta: "E se você rastrear qualquer estado e programar a máquina de estado para criar um computador global que opere sob consenso?".

Componentes do Ethereum

No Ethereum, os componentes de um sistema blockchain descritos em Componentes de um blockchain incluem:

Rede P2P

O Ethereum é executado na rede principal Ethereum, acessível via porta TCP 30303, e executa um protocolo chamado ÐΞVp2p .

Regras de consenso

As regras de consenso do Ethereum são definidas na especificação de referência, ou seja, [yellowpaper] .

Transações

As transações Ethereum (consulte [transações] ) são mensagens de rede, incluindo remetente, destinatário, valor e carga útil de dados, etc.

Máquina de estado

As transições de estado no Ethereum são tratadas pela Ethereum Virtual Machine (EVM) , uma máquina virtual baseada em pilha que executa bytecode (instruções de linguagem de máquina). Os programas EVM chamados "contratos inteligentes" são escritos em uma linguagem de alto nível, como Solidity, e compilados em bytecode para execução no EVM.

Blockchain

O blockchain da Ethereum é armazenado em cada nó como um banco de dados (geralmente o LevelDB do Google) que contém transações em uma estrutura de dados hash serializada chamada Merkle Patricia Tree

Algoritmo de Consenso

A Ethereum atualmente usa um algoritmo de prova de trabalho chamado _Ethash_, mas há planos de fazer a transição para um sistema de prova de participação chamado _Casper_ em um futuro próximo.

clientes

A Ethereum possui várias implementações de software cliente interoperáveis, sendo as mais proeminentes Go-Ethereum (Geth)_and_Parity .

Outras referências

Ethereum Yellow Paper: https://ethereum.github.io/yellowpaper/paper.pdf

"The Beige Book": "The Beige Book" reescrito em linguagem menos formal para um público mais amplo: https://github.com/chronaeon/beigepaper

Protocolo de rede ÐΞVp2p: https://github.com/ethereum/wiki/wiki/%C3%90%CE%9EVp2p-Wire-Protocol

Ethereum State Machine - Uma lista de recursos "impressionantes" https://github.com/ethereum/wiki/wiki/Ethereum-Virtual-Machine-(EVM)-Awesome-List

Banco de dados LevelDB (usado com mais frequência para armazenar uma cópia local do blockchain): http://leveldb.org

Merkle Patricia Trees: https://github.com/ethereum/wiki/wiki/Patricia-Tree

Algoritmo de consenso à prova de carga de trabalho Ethash: https://github.com/ethereum/wiki/wiki/Ethash

Casper Proof of Stake v1 Guia de implementação: https://github.com/ethereum/research/wiki/Casper-Version-1-Implementation-Guide

Cliente Go-Ethereum (Geth): https://geth.ethereum.org/

Cliente Parity Ethereum: https://parity.io/

Ethereum e Turing Completude

Assim que você começar a ler sobre o Ethereum, ouvirá imediatamente o termo "Turing complete". Ao contrário do Bitcoin, o Ethereum é "Turing complete", dizem eles. O que exatamente isso significa?

O termo "Turing completo" é nomeado após o matemático britânico Alan Turing, que é considerado o pai da ciência da computação. Em 1936, ele criou um modelo matemático de um computador que consiste em uma máquina de estado que manipula símbolos lendo e escrevendo na memória sequencial (semelhante a uma fita magnética infinitamente longa). Com esta construção, Alan Turing passa a fornecer uma base matemática para responder a questões (negativas) sobre computabilidade universal (se todos os problemas podem ser resolvidos). Ele provou que existem alguns problemas incomputáveis. Especificamente, ele prova que o Problema da Parada (tentar avaliar se um programa acabará parando) é insolúvel.

Alan Turing define ainda um sistema como _Turing Complete_ se puder ser usado para simular qualquer máquina de Turing. Tal sistema é chamado de Máquina de Turing Universal (UTM) .

A capacidade do Ethereum de executar programas armazenados em uma máquina de estado chamada Ethereum Virtual Machine, e de ler e gravar dados na memória, o torna um sistema completo de Turing e, portanto, uma máquina de Turing universal. Para armazenamento limitado, o Ethereum pode computar qualquer algoritmo que uma máquina de Turing possa computar.

A inovação revolucionária da Ethereum é combinar a arquitetura de computação de uso geral de um computador de programa armazenado com um blockchain descentralizado para criar um computador mundial distribuído de estado único (singleton). Os programas Ethereum são executados "em todos os lugares", mas produzem um estado comum (consenso) garantido pelas regras de consenso.

Turing completude é uma "propriedade"

Ao ouvir que o Ethereum é Turing completo, você pode concluir que esse é um recurso que falta em um sistema Turing-incompleto. Pelo contrário, o oposto é verdadeiro. É preciso esforço para restringir um sistema para que ele não seja Turing Complete . Mesmo a máquina de estado mais simples parecerá Turing completa. De fato, a mais simples máquina de estado Turing Complete conhecida (Rogozhin, 1996) tem 4 estados e usa 6 símbolos, e a definição de estado tem apenas 22 instruções.

Não apenas a Turing-completude pode ser alcançada nos sistemas mais simples, mas os sistemas que são intencionalmente projetados para serem restritos à Turing-incompleta são frequentemente considerados "acidentalmente Turing-completos". Os sistemas de restrição Turing-incompletos são mais difíceis de projetar e devem ser cuidadosamente mantidos para permanecerem Turing-incompletos.

Uma referência interessante sobre "acidentalmente Turing completo" pode ser encontrada aqui: http://beza1e1.tuxen.de/articles/accidentally_turing_complete.html

O fato de o Ethereum ser Turing completo significa que programas de qualquer complexidade podem ser computados no Ethereum. Mas essa flexibilidade traz alguns problemas complicados de segurança e gerenciamento de recursos.

O significado da completude de Turing

Turing provou que você não pode prever se um programa terminará simulando-o em um computador. Em suma, não podemos prever o caminho do programa. Um sistema Turing-completo pode ser executado em um "loop infinito", que é um termo usado (simplificado demais) para descrever programas que não terminam. É trivial criar um programa que executa um loop que nunca termina. Mas devido à complexa interação entre as condições iniciais e o código, loops infinitos não intencionais podem surgir sem aviso prévio. No Ethereum, isso representa um desafio: todo nó participante (cliente) deve verificar todas as transações, executando qualquer contrato inteligente que ele chamar. Mas, como Turing provou, o Ethereum não pode prever se um contrato inteligente será encerrado ou por quanto tempo será executado sem realmente ser executado (possivelmente para sempre). Um contrato inteligente pode ser criado acidentalmente, ou intencionalmente, para ser executado para sempre enquanto os nós tentam verificá-lo, efetivamente um ataque de negação de serviço. É claro que, entre programas que exigem validação de milissegundos e programas que são executados para sempre, há uma gama infinita de programas desagradáveis ​​que desperdiçam recursos, aumentam a memória e superaquecem a CPU, que apenas desperdiçam recursos. No computador mundial, os programas que abusam dos recursos abusam dos recursos mundiais. Como o Ethereum limita os recursos usados ​​por contratos inteligentes se o Ethereum não pode prever o uso de recursos?

Para enfrentar esse desafio, a Ethereum introduziu um mecanismo de medição chamado gas_gas_. À medida que o EVM executa contratos inteligentes, ele considera cuidadosamente todas as instruções (computação, acesso a dados, etc.). Cada pedido tem um custo predeterminado em gás. Quando uma transação aciona a execução de um contrato inteligente, ela deve conter uma certa quantidade de gás, que é usada para definir um limite superior nos cálculos que podem ser consumidos pela execução do contrato inteligente. Se a quantidade de gás consumida pelo cálculo exceder a quantidade de gás disponível na transação, o EVM encerrará a execução. Gas é o mecanismo que o Ethereum usa para permitir cálculos completos de Turing, limitando os recursos que qualquer programa pode usar.

Em 2015, os invasores exploraram uma instrução EVM que custou muito menos do que deveria. Isso permite que um invasor crie transações que usam muita memória e levam alguns minutos para serem verificadas. Para lidar com esse ataque, o Ethereum teve que alterar a fórmula de contabilidade do gás para obter instruções específicas em uma alteração incompatível com o futuro (hard fork). Mas mesmo com essa mudança, os clientes da Ethereum teriam que pular ou perder semanas validando essas transações.

De blockchains de uso geral a aplicativos descentralizados (DApps)

O Ethereum começou como uma forma de ser um blockchain de propósito geral que poderia ser usado para uma variedade de propósitos. Mas logo a visão da Ethereum se expandiu em uma plataforma para programar aplicativos descentralizados (DApps). DApps representam uma perspectiva mais ampla do que "contratos inteligentes". DApp é pelo menos um contrato inteligente e uma interface de usuário da web. De forma mais ampla, um DApp é um aplicativo da Web baseado em um serviço de infraestrutura ponto a ponto aberto e descentralizado.

O DApp consiste em pelo menos as seguintes partes:

  • Contratos inteligentes no Blockchain

  • Uma interface de usuário front-end da web

Além disso, muitos DApps também incluem outros componentes descentralizados, como:

  • Protocolo e plataforma de armazenamento descentralizado (P2P).

  • Protocolo e plataforma de mensagens descentralizadas (P2P).

Dica

Você pode ver DApps soletrados ÐApps. O caractere Ð é um caractere latino chamado "ETH", aludindo a Ethereum. "ETH", para exibir esse caractere, use a entidade decimal #208 em HTML e use o caractere Unicode 0xCE (UTF-8) ou 0x00D0 (UTF-16).

A evolução da World Wide Web

Em 2004, o termo "Web 2.0" ganhou destaque, descrevendo a evolução da web para conteúdo gerado pelo usuário, interfaces responsivas e interatividade. Web 2.0 não é uma especificação técnica, mas um termo que descreve o novo foco das aplicações web.

O conceito de DApps visa trazer a World Wide Web para sua próxima evolução natural, introduzindo protocolos ponto a ponto descentralizados em todos os aspectos dos aplicativos da web. O termo usado para descrever essa evolução é Web3 , que significa a terceira "versão" da web. Proposto pela primeira vez por Gavin Wood, o _web3_ representa uma nova visão e foco para aplicativos da Web: de aplicativos de propriedade e gerenciamento centralizados a aplicativos descentralizados baseados em protocolo.

Em capítulos posteriores, exploraremos a biblioteca Ethereum + web3js + JavaScript, que conecta aplicativos JavaScript executados em seu navegador com o blockchain Ethereum. A biblioteca web3.js também contém uma interface de rede de armazenamento P2P chamada Swarm e um serviço de mensagens P2P chamado Whisper . Ao incluir esses três componentes em uma biblioteca JavaScript em execução em seu navegador da Web, os desenvolvedores podem usar um kit de desenvolvimento de aplicativos completo para criar DApps web3:

Figura 1. Web3: um conjunto de componentes de aplicativos descentralizados para a próxima evolução da web

Cultura de desenvolvimento da Ethereum

Até agora, falamos sobre como os objetivos e a tecnologia do Ethereum diferem de outros blockchains, como o Bitcoin. Ethereum também tem uma cultura de desenvolvimento muito diferente.

No Bitcoin, o desenvolvimento é guiado por um princípio de conservadorismo: todas as mudanças são cuidadosamente pesquisadas para garantir que nenhum dos sistemas existentes quebre. Na maioria dos casos, as alterações são implementadas apenas para compatibilidade com versões anteriores. Os clientes existentes podem "optar por participar", mas continuarão a operar se decidirem não atualizar.

相比之下,在以太坊中,开发文化的重点是速度和创新。这个咒语是“快速行动,解决事情”。如果需要进行更改,即使这意味着使之前的假设失效,破坏兼容性或强制客户端进行更新,也会执行更改。以太坊的开发文化的特点是快速创新,快速进化和愿意参与实验。

这对开发者来说意味着什么,就是你必须保持灵活性,随着一些潜在的假设变化,准备重建你的基础设施。不要以为任何东西都是静态的或永久的。以太坊开发人员面临的一个重大挑战是将代码部署到不可变账本与仍在快速发展的开发平台之间的内在矛盾。你不能简单地“升级”你的智能合约。你必须准备部署新的,迁移用户,应用程序和资金,并重新开始。

具有讽刺意味的是,这也意味着构建具有更多自主权和更少集中控制的系统的目标是无法实现的。在接下来的几年中,自治和分权要求平台中的稳定性要比以太坊可能获得的稳定性要高一点。为了“发展”平台,你必须准备好取消并重启你的智能合约,这意味着你必须保留一定程度的控制权。

但是,在积极的一面,以太坊正在快速发展。“自行车脱落”的机会很小 - 这个表达意味着争论一些小细节,比如如何在大楼后面建造自行车棚。如果你开始骑脚踏车,你可能会突然发现其他的开发团队改变了计划,并且抛弃了自行车,转而使用自动气垫船。在以太坊有很少的神圣原则,最终标准或固定接口。

最终,以太坊核心协议的开发速度将会放慢,其接口将会变得固定。但与此同时,创新是推动原则。你最好跟上,因为没有人会为你放慢速度。

为什么学习以太坊?

区块链具有非常陡峭的学习曲线,因为它们将多个学科合并到一个领域:编程,信息安全,密码学,经济学,分布式系统,对等网络等。以太坊使得这一学习曲线不再陡峭,因此你可以很快就开始了。但就在一个看似简单的环境表面之下,还有更多。当你学习并开始更深入的观察时,总会有另一层复杂性和奇迹。

以太坊是学习区块链的绝佳平台,它构建了一个庞大的开发者社区,比任何其他区块链平台都快。相比其他区块链,以太坊是开发者为开发者开发的_开发者的区块链_。熟悉JavaScript应用程序的开发人员可以进入以太坊并开始快速生成工作代码。在以太坊的头几年,通常看到T恤衫宣布你可以用五行代码创建一个代币。当然,这是一把双刃剑。编写代码很容易,但编写_good_代码和_secure_代码非常困难。

本shu将教你什么?

这本shu深入以太坊的每一个组成部分。你将从一个简单的交易开始,分析它的工作原理,建立一个简单的合约,使其更好,并跟踪它在以太坊系统中的路径。

你将了解以太坊的工作方式,以及为什么这样设计。你将能够理解每个组成部分的工作方式,它们如何组合在一起以及为什么。

おすすめ

転載: blog.csdn.net/qq_27246521/article/details/128576261