Introdução ao desenvolvimento com Ethereum
Autor: Blog do JavaBraz | Publicado: 2017-01-31T10:34:00-08:00

Nesta série de posts sobre o desenvolvimento com Ethereum, pretendo mostrar da teoria à prática como iniciar o desenvolvimento, com esta promissora plataforma de aplicações inteligentes.

No final desta série de 3 artigos, você criará seu primeiro smart contract, utilizando a linguagem de programação solidity.

O que é Ethereum?
Ethereum é uma plataforma decentralizada que executa contratos inteligentes, foi iniciado através de um pré-sale em agosto de 2014, e é mantido pela&nbsp;Ethereum Foundation. Estes aplicativos são executados em uma rede blockchain personalizado construido em uma infra-estrutura distríbuida, compartilhada, e muito poderosa em termos de processamento.
O foco do Ethereum é a execução de contratos inteligentes, ou seja, você é capaz de programar funcionalidades que serão executadas em uma rede blockchain.

O que compõe o Ethereum ?
A rede Ethereum, é composta por uma série de computadores, executando um software específico, a união entre o hardware e o software específico, chamamos de nó.
Cada nó na rede tem um papel, existem os mineradores, nós que processam as transações em troca de serem recompensados com taxas, e os nós que apenas compõe a rede como validadores de transações, apenas fazem leitura e replicando as transações processadas pela rede.
Também compóe o Ethereum uma linguagem de script 'turing-complete', muito poderosa, onde todos os esforços possam compartilhar um conjunto comum de APIs, de forma confiável.

Arquitetura Ethereum
Segundo os criadores, em resumo os principios fundamentais da arquitetura Ethereum são:

Simplicidade: O programador médio deve ser capaz de seguir e implementar toda a especificação.
Universalidade: O Ethereum não tem características, ele espera que cada aplicação trate das suas características particulares, dessa forma espera-se poder criar uma infinidade de aplicações.
Modularidade: Espera-se que seja possível reutilizar pequenas partes como bibliotecas.
Não discriminação: O protocolo não deve tentar restringir categorias especificas de utilização.
Agilidade: Caso haja reais beneficios na adoção de alguma funcionalidade, ou no processo de desenvolvimento, a equipe do Ethereum irá adotá-las.

Estes são os principios fundamentais do protocolo, alguns pontos são realmente discutíveis do ponto de vista do processo de desenvolvimento de software, e ao longo dos últimos meses tem gerado alguns ruídos na comunidade de desenvolvedores, o fato é que o Ethereum está no caminho de um amadurecimento, que já existe na rede de BlockChain utilizada pelo Bitcoin.
Também é inegável que o Ethereum é promissor, e tem atraído a atenção de desenvolvedores e grandes empresas do mundo todo.

Iniciando no desenvolvimento do Ethereum
Para fazer o setup do ambiente, vou utilizar como nó, o Parity que atualmente está na versão 1.5, e para fazer as operações com o nó, consultar blocos, fazer deploy de contratos inteligentes, efetuar a chamada de contratos inteligentes irei utilizar NPM com NodeJS juntamente com a API javascript web3js.

No final deste post, estão os links para download de todos estes softwares.

Os principais clientes Ethereum
Eth : Versão do client escrito em C++.
Geth: Versão do client em GO.
EthereumJ: Versão do client feito em Java.
Parity:Versão do client feito em Rust.

Eu comecei com Ethereum utilizando o Eth, também tive boas experiências com o Geth, mas escolhi o Parity, por ter no momento, uma boa performance, uma boa documentação, além de termos utilizado ele bastante em nossos últimos labs aqui na A Star.

Para o próximo post desta semana, espero que você tenha instalado:
- Parity 1.5
- NodeJS
- NPM

Pacotes do Parity:
Link para download:&nbsp;https://github.com/ethcore/parity/releases
Iremos instalar a versão 1.5 Nativity



Instalando o Parity 1.5 no windows:












A seguir você deverá configurar o nó.





Instalando o Parity 1.5 no Linux (Ubuntu):



sudo dpkg -i pacote_baixado.deb





Configurando o nó:







Agora você terá que configurar seu nó,&nbsp;













Preencha os campos, nome da conta, dica de senha e a senha, para este lab crie uma senha de fácil memorização, pois iremos utilizá-la quando fizermos a integração com o nó.





Em seguida, é apresentado o endereço da sua conta, que acaba de ser criado pelo seu nó. Este endereço, será utilizado nas transações que iremos criar.










Parabéns seu nó está instalado e minimamente configurado.








Links úteis e referências:

Ethereum Foundation
https://www.ethereum.org/

Ethereum Builders Guide
https://ethereumbuilders.gitbooks.io/guide/content/en/what_is_ethereum.html

Eth:
https://www.ethereum.org/cli#install-on-linux
http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/building-from-source/windows.html
https://ethereumbuilders.gitbooks.io/guide/content/en/win_cpp_build.html

EthereumJ:
https://github.com/ethereum/ethereumj
http://ethereumj.io/
https://github.com/ether-camp/ethereum-harmony

Geth:
https://geth.ethereum.org/downloads/

Parity:
https://ethcore.io/parity.html
https://github.com/ethcore/parity/wiki

Visualizar estatísticas sobre a rede Ethereum:
https://ethstats.net/

GitHub Ethereum:
https://github.com/ethereum

Sobre Eth e Geth
https://www.ethereum.org/cli

NodeJS:
https://nodejs.org/en/

Web3JS:
https://github.com/ethereum/wiki/wiki/JavaScript-API

NPM:
https://www.npmjs.com/

GO Lang:
https://golang.org/doc/install

Rust:
https://www.rust-lang.org/en-US/