Ecossistema Ethereum simplificado: o que são Smart Contracts, DAPP’s e EVM?

Heavens Gates Opening

Ha cerca de um mês atrás escrevi um artigo sobre o ecossistema bitcoin: miners, nodes, fees e transações para todos perceberem.

Umas semanas antes, tinha escrito sobre a evolução da tecnologia blockchain e como hoje vivíamos já aquilo a que podemos chamar de blockchain 2.0.

Se o protocolo Bitcoin é o expoente máximo do que consideramos a versão 1.0 dos protocolos blockchain, o protocolo Ethereum é o ex-libris da sua evolução.

Não obstante, claro, o surgimento de outros protocolos que entretanto se têm destacado e que poderão eventualmente vir a ganhar maior notoriedade.

Mas o que são então os protocolos blockchain da segunda geração, nomeadamente Ethereum?

Pensemos nos dias iniciais da internet. Os primeiros websites eram estáticos. Simples repositórios de informação onde navegávamos de link em link em busca de nova informação.

Até surgir JavaScript. Uma linguagem de programação, que permitiu adicionar lógica e uma espécie de guiões aos websites, tornando-os interactivos e dinâmicos.

Se quisermos, podemos pensar na evolução da tecnologia blockchain da mesma forma.

A tecnologia blockchain introduzida pelo protocolo Bitcoin é relativamente estática. É possível a transferência de dinheiro de forma descentralizada, sem interferência de intermediários – o que por si só é já bastante revolucionário – mas não é possível adicionar outras lógicas ou codificar novas soluções.

O protocolo Ethereum trás programação para dentro dos protocolos blockchain. Passa a ser possível escrever código e desenvolver aplicações em cima dos protocolos.

Estas aplicações não “vivem” mais num servidor único como acontece hoje em dia com as soluções centralizadas. São antes distribuídas, de forma descentralizada, pelos vários computadores da rede.

Para quem não domina ainda o conceito de soluções descentralizadas, sugiro a leitura do meu artigo: “Afinal porque é o protocolo blockchain descentralizado e porque devo interessar-me?

Importa contudo esclarecer alguns pontos sobre o protocolo Bitcoin primeiro.

Na verdade, o protocolo Bitcoin tem uma linguagem de programação chamada Script, que permite programação e o desenvolvimento de código dentro do protocolo.

No entanto, esta linguagem é muito limitada. Ela não é Touring Complete.

De forma simplificada, porque não é este o tema principal do artigo, uma linguagem Touring Complete permite a resolução de qualquer problema ou cálculo matemático/computacional. Pelo menos em teoria.

Para resolver estes problemas, a linguagem de programação faz uso daquilo a que chamamos de Loops.

Loops são uma funcionalidade que ordena que um computador faça algo múltiplas vezes. Por exemplo, através de um Loop, a minha linguagem de programação pode ordenar que um computador repita as Instruções 1, 2 e 3, um milhão de vezes, se eu quiser.

A linguagem Script do protocolo Bitcoin não permite Loops. Não porque os desenvolvedores Bitcoin não o sabiam implementar, mas porque Loops poderiam aumentar o risco de spam da rede.

E assim, decidiram que tal funcionalidade não era necessária para aquilo que eram os objetivos do protocolo Bitcoin: ser uma moeda digital descentralizada para transações entre pessoas.

O protocolo Ethereum nasce em Julho de 2015, fundado por Vitalik Buterin – como provavelmente sabem.

O que talvez não saibam é que, antes de desenvolver o protocolo Ethereum, Vitalik era também ele desenvolvedor do protocolo Bitcoin e propôs a introdução de uma linguagem Touring Complete no protocolo.

Após a sua ideia ser rejeitada pela Comunidade, Vitalik decidiu lançar o seu próprio protocolo e introduzir então uma linguagem Touring Complete a que chamou de Solidity. Nascia assim o protocolo Ethereum.

Uma vez que a linguagem Solidity é Touring Complete, ela pode em teoria, resolver qualquer problema computacional. Passa a ser possível desenvolver soluções ou aplicações no protocolo blockchain. E esta é a grande inovação do protocolo Ethereum, face ao protocolo Bitcoin.

Vamos aprofundar. O que significa exatamente desenvolver aplicações num protocolo blockchain?

SMART CONTRACTS

Muito provavelmente já ouviram falar de Smart Contracts – contratos inteligentes, em português.

Smart Contracts não mais são do que programas desenvolvidos em cima do protocolo blockchain que “correm” de forma descentralizada em vários computadores.

Para desenvolver Smart Contracts no protocolo Ethereum é necessário dominar a linguagem Solidity, da mesma forma que para desenvolver softwares que “correm” no nosso computador ou websites, é preciso dominar outras linguagens de programação.

Smart Contracts podem manter, bloquear ou movimentar dinheiro – o que até então não era possível (de forma descentralizada).

Se bem nos lembramos, o protocolo Bitcoin também permite transações monetárias mas, uma vez que a sua linguagem Script não é Touring Complete, ele não permite a adição de lógica e regras a estas mesmas transações. Esta é a grande evolução do protocolo Ethereum e de outros protocolos blockchain 2.0.

Continuando.

Uma vez financiado, um Smart Contract seguirá a lógica que nele foi codificada. É impossível, mudar as regras a meio do jogo. Smart Contracts são imparáveis pois uma vez codificados e adicionados à blockchain é impossível serem removidos ou desfeitos.

Podemos no entanto, codificar um novo Smart Contract que reponha a situação inicial, mas nunca podemos eliminar ou alterar um Smart Contract existente na rede.

Com Smart Contracts temos então programas autónomos que podem guardar ou bloquear dinheiro e decidir o que fazer com esse dinheiro sem necessidade de um intermediário – o que é extremamente significativo para uma série de industrias.

DAPP’s

Vamos continuar a explorar e completar o puzzle com o conceito de Decentralized Applications, ou DAPP’s (em português aplicações descentralizadas).

Não é fácil definir exatamente o que são DAPP’s. Vejamos a imagem abaixo.

Screen Shot 2018-03-12 at 18.12.22

Imaginemos que os pontos cor-de-rosa são usuários que utilizam os seus browsers de internet ou os seus telemóveis como interface.

No lado direito da imagem temos Smart Contracts e a rede blockchain. Recordemos que Smart Contracts são pequenas e concisas linhas de código apenas.

DAPP’s, na minha opinião, são a infraestrutura que permite a usuários comunicar e interagir com a rede blockchain e com a informação nela disponível, fazendo uso da lógica dos Smart Contracts.

Um exemplo de uma DAPP é o Steemit que é a primeira rede social desenvolvida em blockchain.

Quando usamos o Steemit, conectamos a um servidor central que por sua vez está conectado à blockchain – onde verdadeiramente estão guardados os nossos dados, os nossos posts e toda a nossa informação.

Se amanhã o Steemit deixar de existir, é possível desenvolver um novo interface, que poderá, da mesma forma, utilizar a informação guardada na blockchain para proporcionar o mesmo serviço.

Neste contexto, o Steemit não é dono dos nossos dados, como acontece com o Facebook, Twitter ou outras redes sociais que depois vendem e monetizam esses dados. Já para não falar do uso abusivo dos mesmos.

Resumindo, uma DAPP pode fazer uso de vários Smart Contracts com propósitos diferentes e oferece ao usuário uma interface para interagir com a rede blockchain. No fundo, proporciona a experiência completa, end-to-end.

Finalmente, o ultimo tópico que queria abordar neste texto é o conceito de EVM.

Acompanhando a linguagem Solidity do protocolo Ethereum vem o conceito de EVM, ou Ethereum Virtual Machine – em português, Máquina Virtual Ethereum.

Como vimos, o protocolo Ethereum permite agora executar código em cima do protocolo blockchain.

Na prática, isso significa que os miners do protocolo têm agora que executar Smart Contracts e estar de acordo com o estado de cada um.

Sendo o Smart Contract um conjunto de regras, ele pode assumir vários estados, consoante a sua lógica. Por exemplo, num contrato ultra simples os estados poderão ser “em incumprimento”, “pago” e “dentro do prazo”. Contratos mais complexos terão naturalmente outros estados.

O fato de cada miner ter que executar Smart Contracts no protocolo Ethereum levanta, naturalmente, muitas preocupações.

E se o código do Smart Contract for um virus? E se o Smart Contract conseguir aceder à harddrive do computador e roubar dados pessoais, passwords, etc?

Afinal os nodes estarão a executar código aleatório introduzido na rede por alguém que não conhecem.

Para fazer face a este problema foi criado o conceito de EVM.

Explicando de forma simplificada, a solução passou pela a criação de um Sandbox Environment – traduzindo literalmente para português significa ambiente caixa-de-areia.

Como diz o nome, o que esta solução faz é atribuir a cada node um ambiente independente, uma espécie de caixa de areia, com a qual todos os nodes concordam antes de entrar na rede.

Esta “caixa de areia” é um programa que corre o código dos Smart Contracts de forma isolada e restringida, por forma a evitar a interação do código do contrato com o sistema operativo do node.

Desta forma é evitada a propagação de virus ou de ataques e, uma vez executado o código neste ambiente isolado, o node apenas tem que verificar o estado do contrato e divulgá-lo na rede.

Esta foi a solução encontrada para fazer face aos riscos acima identificados. Existe no entanto um outro aspeto na solução EVM que importa ficar a conhecer dado a sua relevância.

Como vimos os Smart Contracts são escritos em linguagem Solidity. Contudo EVM apenas “lê” machine language (linguagem de máquina) – ela “não sabe ler” Solidity.

Assim, existe no protocolo Ethereum um componente chamado Solidity Compiler que transforma a linguagem Solidity em machine code (código de máquina) que pode então “ser lido” pela Ethereum Virtual Machine (EVM).

Porquê? Perguntam-se vocês e bem.

A resposta é flexibilidade e é mais inteligente do que à partida parece. Vejamos o quadro abaixo.

Screen Shot 2018-03-12 at 20.11.10

Com esta solução, é possível desenvolver em Ethereum usando também outras linguagens computacionais.

Se daqui a amanhã se verificar que Solidity não é a melhor linguagem para desenvolver em Ethereum, podemos simplesmente desenvolver uma nova linguagem.

Basta depois desenvolver um novo Compiler, que transforme os Smart Contracts escritos nessa nova linguagem em machine code.

Lembremos que EVM apenas precisa de machine code. Ela não quer saber da linguagem original desse mesmo código.

 

2 opiniões sobre “Ecossistema Ethereum simplificado: o que são Smart Contracts, DAPP’s e EVM?

  1. I see you don’t monetize your site, don’t waste your traffic, you can earn additional cash every month.
    You can use the best adsense alternative for any type of website
    (they approve all websites), for more details simply search in gooogle: boorfe’s tips monetize your website

    Gostar

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão /  Alterar )

Google photo

Está a comentar usando a sua conta Google Terminar Sessão /  Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão /  Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão /  Alterar )

Connecting to %s

search previous next tag category expand menu location phone mail time cart zoom edit close