A blockchain está expandindo sua adoção rapidamente tanto entre usuário comum (varejo) quanto no mundo corporativo. A adoção de tecnologia blockchain para o novo RG (CIN), a Aduana do Mercosul e até mesmo para o novo Real Digital (DREX) mostram que até mesmo o setor público já está ativamente utilizando blockhain para resolver problemas onde ela se mostra a melhor opção. No entanto, para estas soluções corporativas e governamentais muitas vezes características comuns às blockchains públicas não são bem vindas, como por exemplo o anonimato, a imutabilidade, a ausência de um responsável central para responder legalmente, a resistência à censura, etc.
Devido a isso, muitos governos, empresas e consórcios de empresas que adotam blockchain o fazem através de redes privadas ou permissionadas, isto é, redes onde é possível administrar de forma mais centralizada, enquanto mantém-se os outros benefícios da tecnologia de livro-razão distribuído (DLT ou Distributed Ledger Technology), que é o coração das blockchains modernas.
Como grande parte das tecnologias blockchain são open-source, incluindo projetos inteiramente dedicados a esta finalidade como a HyperLedger, não é algo alienígena subir a sua própria blockchain nos servidores da sua empresa ou na nuvem. Dentre as soluções de Blockchain as a Service, isto é, que te permitem provisionar facilmente na nuvem uma infraestrutura própria de blockchain, temos a Kaleido, que exploraremos brevemente neste tutorial.
Vamos aprender a:
- criar sua rede blockchain;
- configurar uma carteira cripto para ela;
- testar a rede de duas maneiras;
Se preferir, você pode assistir ao vídeo abaixo ao invés de ler.
Vamos lá!
#1 – Configurando sua blockchain
O primeiro passo é acessar o site oficial do Kaleido em kaleido.io e criar a sua conta gratuitamente. Você pode usar qualquer conta de email e quando perguntarem seu país ou continente pode colocar os EUA sem problemas, que seria o mais próximo e pode colocar um nome fictício para sua empresa caso não tenha uma. Em dado momento o assistente de configuração vai te perguntar o plano que deseja, sendo que usarei aqui o plano Starter que é gratuito, mas obviamente com limitações, sendo as principais abaixo:
- apenas 2 nós na sua blockchain;
- suporte limitado;
- rede centralizada somente;
- somente uma região;
- deploy somente na nuvem;
Não se preocupe, mais tarde você pode fazer upgrade se quiser e não será solicitado cartão de crédito durante o uso do plano gratuito. Uma vez escolhido o plano, você precisa criar a sua rede através da opção “Create Network” que vai aparecer, definindo um nome e uma “missão” para sua blockchain. Chamei a minha de “Newchain”.
Na tela seguinte você deverá escolher a sua região. Essa informação diz respeito ao local onde os dados da sua blockchain serão armazenados, sendo que a Kaleido possui parcerias com AWS e Microsoft em vários lugares do mundo como EUA, Alemanha, Austrália, Coréia do Sul e França. Eu costumo optar por colocar meus serviços na AWS dos EUA, independente de serem blockchain ou não. Em alguns planos pagos você tem a opção de ativar a replicação da sua rede em outro datacenter, mas isso não está disponível no plano gratuito, então não se preocupe se na tela seguinte aparecer apenas a opção “Finish” e um aviso sobre isso.
Environment
Com a blockchain criada, o próximo passo é começarmos a configura-la, o que fazemos criando um novo ambiente com a opção “Create Environment” disponível no dashboard que vais e abrir. Você tem duas opções de ambiente, a Standard Blockchain e a FireFly, sendo que a segunda é específica para quem for trabalhar com FireFly, que é uma solução da HyperLedger para desenvolvimento web3. Logo, usaremos Standard Blockchain mesmo, o que vai nos trazer três tipos de blockchain standard que podemos criar:
- Ethereum: rede privada com tecnologia enterprise totalmente compatível com o protocolo Ethereum que conhecemos;
- HyperLedger Fabric: projeto open-source da Linux Foundation muito popular no meio corporativo;
- Corda: outro projeto um pouco menos popular que os ateriores, embora seja mais antigo que HyperLedger, se não estou enganado;
Nós optaremos por seguir com Ethereum por ser o padrão mais famoso do mercado blockchain em geral (varejo e corporativo), mas HyperLedger também seria uma boa opção pensando exclusivamente no mundo corporativo e podemos explorá-lo em outra oportunidade. Na penúltima tela precisamos dar um nome ao environment (vou usar Newchain Environment e a única opção de deploy que temos é na nuvem. E por fim na última tela temos a opção de cliente Ethereum que vamos utilizar como tecnologia nos nós:
- Geth: o mais famoso no mercado em geral (varejo e corporativo), criado pela Ethereum e escrito em Go;
- Quorum: projeto open-source criado em cima do Geth;
- HyperLedger Besu: cliente Ethereum da suíte HyperLedger, muito popular no meio corporativo e escrito em Java;
Dependendo da sua escolha você terá diferentes algoritmos de consenso para escolher:
- POA: Proof of Authority ou prova de Autoridade, é o que possui maior performance e onde a validação das transações é baseada em um ou mais nós chamados de “autoridades”;
- Raft: consenso baseado no modelo master-slave, onde na ausência do master um outro nó pode se candidatar e assumir a função;
- IBFT: o Istanbul Byzantine Fault Tolerance é um protocolo de consenso mais pesado mas mais resistente a fraudes, sendo o mais descentralizados dos três;
Como eu vou trabalhar com Geth, a única opção de consenso que possuo é POA, que é o que usaremos aqui. Existem outras configurações mais avançadas nesta tela, que afetam a gênese da blockchain, mas que não precisamos nos preocupar no momento então apenas clique em Finish.
Nodes
Com o environment configurado é hora de adicionarmos os nodes nele, para que a blockchain possa operar. Use a opção “Create Node” e dê um nome pra ele, sendo o meu “Newchain Master” e avançando. Avance pela tela Configurations sem mexer em nada e em “Node size” você só terá a opção “Small” pois estamos no plano free, onde cada node terá 1 GB RAM e meia CPU. Finalize e aguarde o término da criação do primeiro nó.
Quando o primeiro nó terminar de ser criado, é hora de criar o segundo. Passe o mouse sobre o nome do primeiro e aparecerá a opção. Só repetir o mesmo processo que antes.
Você pode voltar ao dashboard agora e ver que está tudo pronto e funcionando. Agora que temos nossa rede pronta, vamos usá-la!
#2 – Configurando sua carteira
Vou usar aqui a carteira MetaMask, a qual eu ensino a criar neste outro tutorial (inclui vídeo). Mas se quiser usar qualquer outra carteira compatível com padrão EVM/Ethereum, como a Brave, também podem. Com a sua MetaMask instalada e configurada, vamos adicionar nela a nossa rede blockchain. Você vai precisar de duas informações para esta configuração que nós vamos pegar no painel da Kaleido.
A primeira informação é o Chain ID. Você pega ele indo no menu esquerdo Environment > Settings, vai aparecer em um painel do lado direito da tela. No meu caso era 2066540584.
A segunda informação que precisamos é a URL JSON-RPC do nosso nó. Essa informação tem um detalhe importante: essa URL precisa ser construída junto de credenciais de acesso da sua conta, no formato http://<username>:<password>@<server>. Para ter essas credenciais você precisa acessar o seu node principal e em overview você vai ver na direita uma seção “Connect your node”, no entanto a URL que está ali está incompleta pois só funciona entre os nós na mesma rede, não funciona no acesso externo. Clique em “Connect App” e dê um nome para as credenciais que vão ser geradas. Na tela seguinte você vai ter acesso às credenciais e na direita, no painel “Connect Runtime” já vai ter a URL do JSON/RPC HTTP endpoint para você pegar (você pode achar essa tela de novo em Security > App Creds mais tarde).
Agora que temos as duas informações que precisamos vá na sua MetaMask, na opção “Add Custom Network” no canto superior esquerdo, onde lista as redes. Você deverá preencher os seguintes campos:
- Network name: nome da sua blockchain (a minha é Newchain);
- Default RPC URL: o endereço do seu nó, que geramos antes com as credenciais junto;
- Chain ID: que pegamos antes;
- Currency Symbol: ETH;
- Block Explorer URL: deixe em branco;
Com a rede configurada, deixe ela selecionada na sua carteira e vamos adicionar fundos nela. Volte ao painel do Kaleido e no menu da esquerda selecione Digital Assets e depois Dashboard. Nessa tela existe uma opção “Ether Pool” que serve para enviar Ether-fake para carteiras suas. Clique em “Fund Account”. Informe o endereço da sua carteira MetaMask, a quantia que quer enviar e clique em “Fund”. Em segundos o saldo já irá aparecer na sua carteira se ela estiver com a sua rede selecionada. Lembre-se: esse Ether é fake, não vai funcionar em outras redes que não a sua e não vale nada.
Agora vamos testar a nossa rede.
#3 – Testando a Rede
Vou propor aqui dois testes. Um bem simples e outro mais complexo, mas que vai mostrar que nossa rede é totalmente funcional.
O primeiro teste é você enviar um pouco de ETH nativo da rede para outra conta ou carteira utilizando a interface da Metamask. Você verá que funciona perfeitamente, apenas certifique-se de estar com a rede devidamente selecionada na MetaMask ou não irá ver os fundos que recebeu. Antes de partir para o segundo teste, volte no painel do Kaleido, menu esquerdo, Environment > Data Explorer > Block Explorer. Este é o explorador de blocos da sua rede, onde pode ver os blocos que são minerados, as transações, etc. Mais embaixo (ou no menu Transactions à esquerda) você consegue achar essa primeira transação de teste e todos seus detalhes.
Agora o segundo teste é um teste envolvendo programação. Abra o Remix ou outra ferramenta de desenvolvimento de smart contracts de sua preferência. Crie nela um novo smart contract chamado LuizCoin.sol e cole o conteúdo abaixo nele.
1 2 3 4 5 6 7 8 9 10 11 12 |
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; contract LuizCoin is ERC20 { constructor() ERC20("LuizCoin", "LUC") { _mint(msg.sender, 10000 * 10 ** decimals()); } } |
Como pode ver este é um contrato ERC-20, ou seja, um contrato de nova “criptomoeda” (token seria o termo mais correto) e se quiser aprender mais sobre a criação desse tipo de token, leia este tutorial. É importante que a versão do Solidity seja a 0.8.19, ok? Essa é a mais recente suportada na blockchain da Kaleido na data que eu escrevo este tutorial.
Com o contrato finalizado, você deve fazer deploy dela na rede da Kaleido usando a sua MetaMask que recebeu ETH-fake, seja pela funcionalidade de Fund ou por transferência de outra conta, não importa. Abaixo tem instruções de deploy em três ferramentas diferentes, caso use alguma delas e não saiba fazer deploy, os tutoriais abaixo vão te ensinar (lembre-se de configurar as ferramentas para a versão 0.8.19 do Solidity):
Após o deploy terminar com sucesso, você pode pegar o endereço do contrato e importar seu novo token na Metamask (opção “Tokens > Import Tokens” na primeira aba da Metamask). Faça isso na carteira que fez o deploy e você verá que agora tem 10.000 LUC (LuizCoins) na sua carteira e que pode inclusive transferi-los para outras carteiras, lembrando que elas devem estar configuradas para a sua rede a fim de que consigam ver e usar essa nova moeda que criamos.
Qualquer contrato que funcionaria na rede Ethereum padrão vai funcionar na sua nova rede e esse token ERC-20 que fizemos deploy é a prova disso. Com isso, finalizo aqui este tutorial e espero que tenha gostado.
Até a próxima!
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.