DevSecOps

3 abr, 2018

O que é Ethereum?

Publicidade

Ethereum é uma plataforma descentralizada para rodar contratos inteligentes. Em outras palavras, é um software que utiliza um protocolo peer to peer e blockchain para registrar suas transações. Ao usar o blockchain, ele garante que as transações são únicas, imutáveis e que vão estar em uma rede de servidores distribuídos.

Cada servidor pode ser o seu computador, é como se aquela sua aplicação que armazena os dados em um banco de dados SQL agora estivesse guardando os dados em máquinas distribuídas pelo mundo todo na máquina de várias pessoas.

Vamos dar um passo atrás. Você já deve ter ouvido de Bitcoin, certo? O Bitcoin é conhecido como uma moeda virtual, mas também é uma arquitetura de software peer to peer. Sua arquitetura é complexa e incrível, mas vou tentar explicar de maneira simples para facilitar as coisas. Imagine que ao instalar o software do Bitcoin ele vai buscar na Internet outra instalação para que ele possa atualizar os dados.

Esses dados são os registros que foram realizados, e a isso chamamos de livro registro ou cadeia de blocos (Blockchain). Então, assim que ele encontra outra instalação confiável, ele começa a fazer o download dos blocos para o local da instalação – nesse caso, sua máquina.

Mas o que são esses dados no Blockchain? São transações únicas e imutáveis realizadas entre endereços na Internet, e essas transações, no caso do Bitcoin, têm a representação de uma moeda – pelo menos foi isto que os criadores desejaram ser na sua criação: uma plataforma para envio de dinheiro sem intermediadores, ou seja, descentralizada.

E desde a sua criação, o Bitcoin vem se mostrando como uma aplicação à prova de fraudes, não existe nenhum registro de violação dos dados armazenados no Blockchain. No white paper a seguir, isso fica mais claro, já que a forma como sua arquitetura foi desenhada dificulta que os dados sejam violados.

E durante a evolução do Bitcoin, surgiu o Ethereum, uma plataforma com a arquitetura base do Bitcoin, mas com algumas funcionalidades extras, e a principal delas é a capacidade de interpretar regras de negócios e transformá-las em transações no Blockchain.

Essas regras de negócios são escritas em uma linguagem de programação e interpretadas por uma EVM (Ethereum Virtual Machine) simplificada. Você cria uma classe com regras de negócios (Smart Contracts), e essas classes são interpretadas pela EVM e registradas como transações no Blockchain.

Dessa forma, criamos classes com regras definidas em uma base que não pode ser alterada em uma rede distribuída. Ou seja, aquilo que foi escrito não pode ser mais alterado uma vez armazenado. Podemos criar soluções nas quais não existe a intermediação de humanos. Sendo assim, o Ethereum possibilitou a tokenização de outros ativos além de uma moeda. Pensem que agora podemos digitalizar em uma rede distribuída e garantir a unicidade de uma música, imóvel, ações de uma empresa, contratos, livros, etc.

Como funciona o Blockchain do Ethereum e quais as diferenças e vantagens em relação ao Bitcoin?

Ficou clara a diferença entre Bitcoin e Ethereum? Ambos são plataformas que rodam um protocolo peer to peer e também armazenam os dados em um Blockchain. A principal diferença é que o Ethereum utiliza a EVM, possibilitando a criação de transações baseadas em regras de negócios, que chamamos de Smart Contracts. Enquanto o Bitcoin foi criado para ser uma moeda, o Ethereum foi criado para poder digitalizar qualquer ativo, como um automóvel, casa, empresa, um contrato de prestação de serviços etc.

Para começar a criar projetos descentralizados em uma arquitetura Blockchain, existem muitos conteúdos na Internet e, inclusive, o próprio site da Ethereum. Mas vou dar umas dicas aqui para vocês conseguirem criar o primeiro Smart Contracts de Hello World.

Montar ambiente:

Em seguida, adicione o endereço do executável nas variáveis de ambiente do seu computador, para que você possa executá-lo no seu terminal.

O Geth é o software do Ethereum desenvolvido em GoLang que vai possibilitar que seu computador seja um nó da rede. Assim, você vai poder participar de uma rede Blockchain Ethereum e criar soluções distribuidas e descentralizadas.

Após instalar o GETH e adicioná-lo em suas variáveis de ambiente, você pode testar o comando no terminal: geth help para visualizar os comandos.

Exemplo:

Se você digitar geth, ele vai se conectar à rede principal e baixar os blocos para sua máquina. E caso você queira apenas desenvolver, você pode só digitar geth –dev para simular uma rede em modo privado.

geth (ambiente mainnet e existe custo para rodar seus contratos)
geth –testnet (ambiente homologação de testnet, sem custo)
geth –dev –rpc –rpcapi ‘web3, personal, admin, eth’ (ambiente de desenvolvimento, sem custo)

Uma vez baixado o geth, você agora pode baixar o Mist, que é uma ferramenta web para acessar seu nó e executar comandos, ele facilita muito a compilação de contratos e testes.

Você deve abrir o Mist apontado para sua rede privada. Para simplificar, imagine que você terá seu servidor rodando (GETH) e agora você precisa acessá-lo utilizando o Mist.

Para isso, adicione no caminho –rpc http://localhost:8545 o endereço do executável do seu Mist. Ex: mist.exe –rpc http://localhost:8545

O Mist vai abrir e acessar seu nó que está rodando em modo de desenvolvimento. Note que você pode criar novas usuários e fazer transferência de tokens, que no nosso caso é Ether (fictício).

Ah, não falamos do Ether, certo? O Ether é o token que roda na rede Ethereum. Tudo que é executado na rede é pago através de Ether, e o nome que foi dado a essa taxa é Gas. É através desse gas que mantemos a rede rodando, e é isso que incentiva que outras pessoas possam processar nossas transações em suas máquinas para que elas se tornem válidas no Blockchain.

Voltando, agora com o geth rodando e o mist aberto, podemos compilar nosso Smart Contract. Vamos utilizar um contrato desenvolvido na linguagem Solidity, que é a principal utilizada em Ethereum.

Copiem o código Greeter do site da Ethereum: https://www.ethereum.org/greeter

Nota: Alterei o contrato, pois a versão do site não está compilando na versão 1.8 do Solidity.

pragma solidity ^0.4.18;

contract mortal {
    /* Define variable owner of the type address */
    address owner;

    /* This function is executed at initialization and sets the owner of the contract */
    function mortal() public { owner = msg.sender; }

    /* Function to recover the funds on the contract */
    function kill() public { if (msg.sender == owner) selfdestruct(owner); }
}

contract greeter is mortal {
    /* Define variable greeting of the type string */
    string greeting;
   
    /* This runs when the contract is executed */
    function greeter(string _greeting) public {
        greeting = _greeting;
    }

    /* Main function */
    function greet() public view returns (string) {
        return greeting;
    }
}

Dentro do Mist em Contratos > Subir Novo Contrato.

Exemplo:

Após compilar seu contrato, você pode testá-lo pelo próprio MIST, exemplo:

Assim, realizamos o deploy do nosso Smart Contract de hello world no Blockchain do Ethereum. Digamos que isso é apenas a “pontinha do iceberg” e existe muito trabalho pela frente.

Mostrei para vocês de uma forma simplificada o potencial do Blockchain e acredito que estamos em um momento novo da Internet no qual podemos criar soluções transparentes e descentralizadas. Isso não é simples, é complexo, envolve vários fatores externos à tecnologia.

Anos atrás, o próprio Bitcoin era visto como uma moeda para meios ilegais, e hoje percebemos a quantidade de benefícios que não só ele, mas a tecnologia pode nos fornecer. Nosso papel agora é pensar em aplicações nas quais todos possam ganhar de forma justa e transparente, em um novo mundo mais horizontal e com menos corrupção, no qual os poderes possam ser descentralizados.

Por outro lado, é um novo momento para criar as mesmas ferramentas existentes, mas em uma arquitetura Blockchain. Exemplos disso são o arcade.city, que é o “Uber”, e também a paratii.video, que é novo “YouTube” – ambos são aplicações descentralizadas.

Por que não criar seguros, bancos, companhias de músicas, reservas de hospedagens, doações, logísticas, registro de imóveis, músicas, livros etc.? Ou seja, estamos presenciando uma nova oportunidade de criar novos produtos em uma nova Internet de valor que é o Blockchain.

Boa sorte a todos nós! #goblockchain!

Grupos com eventos

Fontes

***

Artigo publicado na revista iMasters, edição #25: https://issuu.com/imasters/docs/25