Crie sua primeira aplicação Decentralizada — parte 1
Aposto todos meus bitcoins, Litecoins, Moneycoins, Seilacoins que esse ano será o ano da palavra DAPP. DAPP (que significa Decentralised application) vem tomando o conhecimento dos desenvolvedores de Software. Para ser sincero só fui ter conhecimento dos DAPPs no começo desse ano. Mas após essa grande descoberta, foi que percebi a grandeza que isso pode se tornar em 2018. Todos os dias alguma noticia envolvendo crypto moedas é publicada na rede mundial de computadores. Pessoas cada vez mais querendo saber o que é , pra que serve, onde e como se reproduzem.
E a proposta de uma cryptocurrency é linda: facilitar a transferencia de valores de um ponto ao outro sem precisar de uma instituição financeira por trás. Hoje para você transferir dinheiro para alguém fora do seu país, primeiro é necessário que seu banco envie a quantia desejada para o banco central do seu país, só depois será enviado para o banco central do país desejado e finalmente para a conta de destino. Ou seja, um processo lento e burocrático e nem sempre eficaz. Agora pense em uma aplicação onde você pode conectar com uma carteira virtual utilizando sua crypto moeda para assinar serviços, comprar produtos ou transferir valores em questão de minutos. Sem precisar expor dados do seu cartão de crédito, ou boletos, tudo digital.
Um DAPP consiste em duas partes:
Front-End escrito em html e JavaScript e um Back-End (como o database para seu Front-End)
Ai que chegamos na parte interessante, Para que sua aplicação seja capaz de executar Smart Contracts, vamos utilizar Ethereum network para decentralizar nossa aplicação.
Ethereum é um projeto open-source, público, baseado em blockchain e que executa smart contracts. Não vou aprofundar mais sobre o Ethereum, para poder abordar o desenvolvimento da nossa aplicação.
Então vamos por a mão na massa.
Para desenvolver sua DAPP você vai precisar:
1. Node.js
2. Um browser
3. Um editor de código
Primeiro vamos precisar instalar o Ethereum client para desenvolvimento e teste do blockchain
$ npm install -g ethereumjs-testrpc
Para rodar nosso client do Ethereum, no terminal escreva:
$ testrpc
Agora você tem uma network Ethereum rodando no seu computador
Agora vamos instalar a biblioteca para interagir com o Front-End
$ npm install ethereum/web3.js
Web3 é uma biblioteca desenvolvida pelo time do Ethereum para que o Front-End consiga se comunicar com o serviço do blockchain através de HTTP ou IPC connection.
Próximo passo é codificar nosso contrato.
Vamos utilizar o Remix, Remix é uma IDE para a linguagem de programação Solidity. Que contém um debugger e ambiente de teste.
pragma solidity ^0.4.18;
contract Store {
string prodName;
uint id;
function setProduct(string _prodName, uint _id) public {
prodName = _prodName;
id = _id;
}
function getProduct() public constant returns (string, uint) {
return (prodName, id);
}
}
Esse será nosso contrato, criamos dois métodos dentro do nosso contrato chamado Store
O método setProduct() irá criar um block dentro do nosso blockchain gravando o nome do produto e seu id.
Já o método getProduct() irá retornar o último registro do nosso blockchain.
Utilizando nossa IDE no http://remix.ethereum.org/ no menu do lado esquerdo click no primeiro ícone “+” para criar um novo arquivo. Nosso arquivo precisa ter o mesmo nome do contrato, no caso Store.sol. Cole o código acima e click no botão “Start to compile” para compilar nosso contrato.
agora precisamos alterar o nosso ambiente do contrato para utilizar nossas rede do ethereum que estamos rodando localmente.
Clique na tab Run do menu superior direito da nossa IDE e em environment e mude para Web3 Provide.
A IDE perguntará se você desejar conectar a um node do Ethereum, click em OK. Um novo modal irá se abrir com o caminho desse node no localhost que por padrão será http://localhost:8545 e clique OK novamente.
Pronto se tudo tiver certo, nosso contrato está em comunicação com nossa rede Ethereum.
Encerramos por aqui o primeira parte do nosso tutorial, espero que tenham gostado até aqui. Em seguida começaremos a criar a interface da nossa aplicação.
Abraços!