Todos os anos, o ArcTouch reúne seus funcionários para um hackathon de três dias, onde os grupos se propõem a prototipar uma ideia usando tecnologias novas e emergentes. Este ano, tivemos muitos projetos de hackathon de blockchain – e achamos que isso fala tanto do crescente interesse em blockchain por nossa equipe quanto do potencial para as empresas se beneficiarem dele.
Meu grupo optou por implementar um sistema de verificação de identidade construído no blockchain. A ideia era armazenar a prova de idade de alguém, que um bartender ou balconista poderia referenciar em vez de uma identificação física, como uma carteira de motorista. Como planejamos alavancar contratos inteligentes, optamos por uma blockchain Ethereum. No entanto, para o desenvolvimento de primeira rodada, usar o blockchain público ou mesmo o testnet nem sempre é ideal devido aos longos tempos de confirmação da transação. Em vez disso, analisamos várias opções para criar rapidamente uma blockchain privada.

De longe, a abordagem mais fácil é usar um serviço de nuvem como o Azure para hospedar uma rede blockchain privada. O Azure torna a configuração particularmente fácil fornecendo um modelo Ethereum Blockchain Consortium, que apresenta um número configurável de nós de mineração e transação. Em três etapas e cerca de 10 minutos, você pode configurar um blockchain privado totalmente funcional na nuvem (aqui está um ótimo post no Medium que detalha essa configuração).
No entanto, esse modelo específico do Azure fornece uma blockchain de prova de trabalho (PoW) que, dependendo de seus requisitos, pode não ser a melhor opção para uma blockchain privada. Por exemplo, optamos por uma blockchain de prova de autoridade (PoA) usando o mecanismo de consenso Clique da Ethereum que foi lançado no ano passado. Essa configuração de consenso funciona bem em um ambiente privado porque os nós não precisam competir entre si pelo privilégio de cunhar blocos, eliminando assim a sobrecarga de processamento e o uso de energia que vem com a mineração de blocos PoW e o algoritmo ethhash.
Para criar nossa rede PoA no Azure, configuramos uma instância de servidor usando o modelo Ubuntu Server 16.04 LTS para atuar como nosso nó de autoridade. Como as autoridades não exigem recursos de computação pesados, pudemos usar um tamanho de máquina virtual menor (um B1S) com as opções padrão.


Name:  Capturar 1.PNG
Views: 13
Size:  147.6 KB


Depois que a máquina virtual foi provisionada, configuramos nosso nó de autoridade usando as seguintes etapas:




Passo 1: Instale Ethereum e geth
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
Etapa 2: gerar a conta de autoridade e a conta de transação
Você gerará duas contas – a primeira será a conta de autoridade e a segunda será uma conta pré-financiada que pode ser usada para enviar transações para a rede:
geth --datadir .ethereum/ conta nova
> Endereço: {6203bb870bfb79438b827de3d6b0070d4d2a5f7b}
geth --datadir .ethereum/ conta nova
> Endereço: {1808adc011f6e970943d3f28f4d285053d9140ac}
Certifique-se de manter o controle da senha usada para criar cada conta!
Etapa 3: criar o bloco de gênese
Usando pupeth, uma ferramenta CLI lançada com geth 1.6, crie e exporte a definição para seu bloco genesis:
fantoche
...
Especifique um nome de rede para administrar (sem espaços, por favor)
> clique
...

O que você gostaria de fazer? (padrão = estatísticas)
1. Mostrar estatísticas da rede
2. Configurar nova gênese
3. Acompanhe o novo servidor remoto
4. Implante componentes de rede
> 2

Qual mecanismo de consenso usar? (padrão = clique)
1. Ethash - prova de trabalho
2. Clique - prova de autoridade
> 2

Quantos segundos os blocos devem levar? (padrão = 15)
> 15

Quais contas podem ser lacradas? (obrigatório pelo menos um)
> 0x6203bb870bfb79438b827de3d6b0070d4d2a5f7b
> 0x

Quais contas devem ser pré-financiadas? (aconselhável pelo menos um)
> 0x1808adc011f6e970943d3f28f4d285053d9140ac
> 0x

Especifique seu ID de cadeia/rede se quiser um explícito (padrão = aleatório)
> 42
INFO [02-15|18:24:03] Novo bloco de gênese configurado
O que você gostaria de fazer? (padrão = estatísticas)
1. Mostrar estatísticas da rede
2. Gerenciar a gênese existente
3. Acompanhe o novo servidor remoto
4. Implante componentes de rede
> 2

1. Modifique as regras de bifurcação existentes
2. Configuração da gênese de exportação
3. Remova a configuração do genesis
> 2

Em qual arquivo salvar a gênese? (padrão = clique.json)
> gênese.json
Bloco de gênese existente exportado
Use a primeira conta gerada, a autoridade, como a conta “sealer”, e a segunda conta como a conta pré-financiada. Para o ID de rede/cadeia, recomendo escolher um valor abaixo de 1.000. O valor 1337 é usado por cadeias de desenvolvimento e descobrimos que valores mais altos (como aqueles gerados ao escolher "aleatório") podem levar a problemas mais tarde.
Etapa 4: inicie sua instância privada do Ethereum
Inicialize e inicie sua instância geth de autoridade:
geth --datadir .ethereum/init genesis.json

geth --nodiscover --networkid 42 --datadir .ethereum/ --unlock 0x6203bb870bfb79438b827de3d6b0070d4d2a5f7b --mine --rpc --rpcapi eth,net,web3 --rpcaddr
Passe o endereço da autoridade para o parâmetro de desbloqueio e, para rpcaddr, use o endereço IP privado de sua máquina virtual conforme exibido nas configurações de rede do console do Azure.

Name:  Capturar 2.PNG
Views: 31
Size:  88.5 KB

Certifique-se de criar uma regra de segurança de entrada para a porta 8545 em seu grupo de segurança de rede para permitir que você se conecte ao seu nó de autoridade usando a biblioteca padrão web3.js ou, em nosso caso, Nethereum para uso com Xamarin.

Name:  Capturar 3.PNG
Views: 27
Size:  98.4 KB


Resultado: Um blockchain funcional do Ethereum
O processo acima leva cerca de 20 minutos e resulta em uma blockchain PoA Ethereum privada totalmente funcional na nuvem. Esse ambiente é ideal para o desenvolvimento de prova de conceito de aplicativo descentralizado (DApp) e fornece transações rápidas e gratuitas.
Você pode incluir facilmente outras máquinas virtuais na configuração para atuar como nós de transação dedicados ou nós de autoridade adicionais para uma rede mais representativa. Mas desenvolver uma prova de conceito é apenas um passo para desenvolver uma solução blockchain comercial completa. A segurança do DApp é um tópico notoriamente complexo, e a implantação em uma rede de teste pública para testar cenários do mundo real e verificar a operação correta é fundamental.
Integrar seu back-end baseado em blockchain com um front-end de aplicativo móvel também requer uma estratégia sólida. O Blockchain apresenta um desafio único de experiência do usuário, pois as transações podem levar muitos minutos para serem confirmadas, dependendo do preço do gás que você está disposto a pagar.
Aqui na ArcTouch, estamos entusiasmados por ser uma empresa de desenvolvimento de DApp e acreditamos que o blockchain será um componente importante dos aplicativos de amanhã para empresas e consumidores.
________________________________________
Quer saber como o blockchain pode ajudar o seu negócio?
O desenvolvimento de blockchain BlockFirst da ArcTouch ajuda as empresas a transformar seus processos de negócios por meio de aplicativos descentralizados e tecnologia de contabilidade