Apresentação sobre blockchain, executada no mestrado de ciencia da computação
1. Manoel Guilherme de Faria Moraes
Orientador(a): Rafaelli de Carvalho Coutinho
PPCIC – Programa de Pós-
graduação em Ciência da
Computação
Blockchain
3. TestNet Blockchain
Rede de teste (testnet), é uma rede segmentada da rede principal que visa permitir a capacidade dos
desenvolvedores de testar alterações de software sem tocar na rede principal.
Os benefícios diversos, porque nos permite:
• Desenvolver uma aplicação
• Testar uma funcionalidade
• Melhorar um algoritmo sem utilizar a rede principal
Dentre as redes pesquisadas destacamos as seguintes:
• Bitcoin TestNet
• Ethereum TestNet
• Hyperledger TestNet
4. Bitcoin TestNet
• Bitcoin TestNet
A rede de testes oficial do Bitcoin, tem tamanho aproximado de 24Gb, bem menor que a rede main do blockchain
que tem 272 Gb.
É necessário utilizar alguma “torneira”(faucets) de moedas de teste, as mais comuns são:
• Bitcoin Testnet Explorer (web)
• BlockCypher Testnet Explorer (Web e API)
• Bitcoin Testnet Faucet (API)
Existem dessas “torneiras” em algumas linguagens de programação, Java, Python, C.
Existem outras linguagens como C++, MathLab, dentre outras, essa lista ficaria muito
extensa.
Algumas com API Rest completas e muito robustas que o caso da BlockCypher.
https://en.bitcoin.it/wiki/Testnet
Na rede de teste os blocos são diferentes, não tem o mesmo início, modificam seu endereço de versão, o bloco Genesis também é
diferente. O consenso é o mesmo nas duas PoW.
Main Test
ADDRESSVERSION 0x00 0x6F
Cabeçalho Msg Protocolo 0xF9BEB4D9 0x0B110907
Porta de comunicação 8333 18333
Podemos dizer que a principal diferença entra a Main e a Test é que as moedas não tem
valor. Pois na rede de teste não existe um custo considerável
5. Ethereum TestNet
• Ethereum TestNet
A rede ethereum de testes, uma das redes de testes mais utilizada, tanto para trabalhos públicos como privados, isso é notável pelo
tamanho de sua rede de testes.
A rede de testes Ethereum, tem tamanho aproximado de 56 Gb, bem menor que a rede main do blockchain que tem
aproximadamente 146 Gb.
https://eth.bitaps.com/
Tem o funcionamento muito parecido com o da rede do bitcoin.
Na rede de teste os blocos são diferentes, não tem o mesmo início, modificam seu endereço de versão, o bloco Genesis também é
diferente. O consenso é o mesmo nas duas PoW.
• Ropsten Network
• Kovan network
• GanacheCLI ( que funciona junto com o truffle
para simular uma rede blockchain inteira)
Aqui podemos testar também as moedas por meio de “torneiras” ou
podemos testar outros tipos de dados, como
uma troca de arquivos, ou um contrato inteligente.
6. Hyperledger TestNet
• Hyperledger TestNet
Tem uma pegada mais comercial, focada em aplicações de mercado. Conforme seu próprio site diz:
https://www.hyperledger.org/
“Hyperledger é uma comunidade de código aberto focada no desenvolvimento de um conjunto
de estruturas estáveis, ferramentas e bibliotecas para implantações de blockchain de nível
empresarial.”
Tem grandes empresas como IBM e AWS por trás.
Existem alguns projetos nessa iniciativa, mas o que mais nos interessa é o Fabric, dai o nome Hyperledger Fabric.
O fabric também é um projeto de tecnologias blockchain que oferece a possibilidade de encaixar várias implementações para certas
funcionalidades.
• Blockchain permissiva com finalidade imediata
• Ambientes para a execução de contratos inteligentes
• Módulos de consenso PBFT, NOOPS e SIEVE
• Framework de eventos que suporta eventos predefinidos e customizados
• SDK Client e API REST Básicas e Ferramentas CLI
Em linhas gerais existe uma comunidade muito
ativa, aproximação com universidades ao redor do
mundo. Tem muitos projetos em andamento, mas
todos com a ideia incomum da blockchain.
https://wiki.hyperledger.org/
Os dois “clientes” mais utilizados são da IBM, chamado IBM BlockChain que se integra ao visual Studio e o outro é o
cliente da AWS, essa inclusive com serviço de Blockchain já comercial.
7. Blockchain SaaS
Introdução
Blockchain-as-a-Service (BaaS) é uma nova modalidade de serviço oferecida por provedores de cloud para que empresa ou instituições
de ensino possam construir, hospedar e usar seus próprios aplicativos blockchain , contratos inteligentes e funções
na infraestrutura blockchain desenvolvida por esses provedores.
Temos diversos Players (fornecedores), que oferecem esse serviço, os mais conhecidos são:
• AWS
• Microsoft
• IBM
• SalesForce
• Alibaba
• Oracle
• Google
8. Blockchain SaaS
• AWS
Existem na aws, basicamente dois serviços QLDB (aws ledger Database) e o AWS managed Blockchain
QLDB – é um banco de dados de livros contábeis gerenciado que fornece um log de transações
centralizado, imutável e Verificável em sua criptografia.
AWS MB - Serviço gerenciado que facilita a criação e o gerenciamento de
redes de blockchain escaláveis e da tecnologia de livros contáveis distribuídos.
Além de contar com diversos parceiros de MKP.
Suporte a Ethereum e Hyperledger.
Extremamente escalável.
https://aws.amazon.com/pt/blockchain/
9. Blockchain SaaS
• AWS Preços
Valores de referencia
https://aws.amazon.com/pt/blockchain/
Valor para fazer parte da rede Hyperledger Fabric
AWS managed Blockchain Test
10. BlockChain SaaS
• Microsoft Azure
Azure Blockchain Service
O Azure Blockchain Service é um serviço contábil totalmente gerenciado que permite aos usuários ampliar e operar redes de blockchain em escala no Azure. Ao fornecer controle
unificado para gerenciamento de infraestrutura e governança de rede de blockchain, o Azure Blockchain Service fornece:
• Implantação e operações de rede simples
• Gerenciamento do consórcio interno
• Desenvolva contratos inteligentes com ferramentas de desenvolvimento conhecidas
Azure Blockchain Workbench
Azure Blockchain Workbench é uma coleção de serviços e recursos do Azure desenvolvidos para implementação de aplicativos de blockchain com objetivo de compartilhar processos
empresariais e dados com outras organizações. Oferece uma escala (scaffolding) da infraestrutura para desenvolver aplicativos de blockchain, permitindo que os desenvolvedores
foquem na criação de lógica de negócios e contratos inteligentes. Ele também facilita a criação de aplicativos de blockchain integrando vários recursos e serviços do Azure para ajudar a
automatizar tarefas comuns de desenvolvimento. (Ainda está em versão Beta)
* Suporte ao ledger Ethereum Quorum usando o mecanismo de consenso IBFT
https://docs.microsoft.com/pt-br/azure/blockchain/
11. BlockChain SaaS
• Microsoft Azure Preços
Valores de referencia
• Importante salientar que os preços nas
calculadoras do azure não refletem o real valor
da cobrança
https://docs.microsoft.com/pt-br/azure/blockchain/
12. Simuladores
Um simulador de blockchain (ou rede blockchain), é necessário para que possamos testar determinadas características,
ou algoritmos específicos, apps desenvolvidos e melhorias em estruturar para blockchain.
As vantagens de um simulador permeiam
• Escala
• Capacidade de fazer testes menores de maneira controlada, antes de partir para testes maiores.
• Podemos testar especificidades de nossos experimentos.
• A relativa facilidade de implementações desses simuladores também é um ponto forte.
Uma das desvantagens que podemos observar é que muitos desses simuladores não tem documentação muito completa,
dificultando a sua utilização devido a necessidade de conhecimento e estuda da sua arquitetura.
13. Simuladores
• SimBlock
Exemplo de um artigo:
Ryunosuke Nagayama, Kazuyuki Shudo, “Simulating Ethereum Network with SimBlock”, lightning talks, Devcon 5 (by Ethereum Foundation), October 2019
https://dsg-titech.github.io/simblock/
SimBlock é um simulador de rede blockchain de código aberto, desenvolvido pelo Distributed Systems Group, Tokyo Institute of Technology.
O SimBlock é orientado por eventos e é adequado para uso em pesquisa de rede de blockchain.
O SimBlock também possui uma ferramenta de visualização, pela qual você pode ver a transição da propagação do bloco.
O SimBlock é desenvolvido em Java e multi plataforma, tendo uma documentação que é bastante completa.
Permite o uso em uma IDE como eclipse.
É possível criar uma rede própria ou testar sob uma outra rede blockchain conhecida.
Já existem alguns artigos académicos publicados utilizando essa plataforma de teste.
O projeto esta todo no github.
Permite testes em grande escala.
14. Simuladores
• BlockSim
Uma estrutura para modelar e simular um protocolo Blockchain.
Ele segue um modelo de simulação de eventos discretos. Atualmente, existem modelos para simular Bitcoin e Ethereum.
Ainda em fase beta, segundo o projeto
Tem ligação com a Universidade de Lisboa, existe um paper com as apresentações do simulador.
https://github.com/carlosfaria94/blocksim?ref=hackernoon.com
Endereço do paper
https://static.carlosfaria.pt/file/personal-assets/papers/blocksim-blockchain-simulator.pdf
Desenvolvido em Python
Permite testes em larga escala, mas com a limitação das redes.
15. Simuladores
• Bitcoin Simulator
O Simulador de Bitcoin é construído no ns3 , o popular simulador de eventos discretos. Também utiliza o rapidjson para facilitar o processo de
comunicação entre os nós.
O objetivo deste projeto é estudar como parâmetros de consenso, características de rede e modificações de protocolo afetam a escalabilidade, segurança
e eficiência de blockchains alimentados por Proof of Work.
Esse simulador foi construído pelo Dr. Arthur Gervais, professor do Imperial College of London.
https://arthurgervais.github.io/Bitcoin-Simulator/
Desenvolvido em C++
16. Simuladores
• Código todo feito em python
Analisamos um código todo implementado em python que simula toda uma blockchain.
Ele implementa todas as etapas de um processo de blockchain, desde a criação do bloco até a finalização da operação.
Esta implementado com um algoritmo de PoW, e permite teste em vários nodes físicos, virtuais ou dockerizado.
Com ajustes no código podemos modificar o PoW por outro algoritmo de consenso.
Não é um artigo acadêmico, mas o código é bem funcional.
Aparentemente o código permite testes em grande escala, mas não implementei na pratica ainda.
https://hackernoon.com/learn-blockchains-by-building-one-117428612f46?ref=hackernoon.com
17. Simuladores
• Outros
Existem outras possibilidades para o teste.
• VIBES
• BlockChain Demo
• Bitcoin Simulator
• BlockBench
https://hackernoon.com/learn-blockchains-by-building-one-117428612f46?ref=hackernoon.com
Mas nesses citados não fizemos aprofundamentos pesquisas, com uma nota de utilização em alguns
trabalhos acadêmicos do MATLAB Blockchain que é uma biblioteca do MathLab.
https://www.mathworks.com/matlabcentral/fileexchange/65419-matlab-blockchain-example