Skip links

Como Executar Várias Instâncias do Geth em um Blockchain Ethereum Privado

26 de novembro de 2015 / 17 de abril de 2019

Autor: Pablo Yabo

Uma blockchain privada ethereum com várias instâncias do Geth pode ser executada em uma rede ou no mesmo computador. Explicaremos como fazer ambos e também como resolver alguns problemas comuns.

Conteúdo

  • Configurando genesis.json
  • Iniciando Geth
  • Windows
  • Conectando Geth Nodes uns aos outros
  • Recursos extras

Configurando genesis.json

Precisamos criar um arquivo JSON que representará o bloco genesis de nossa blockchain privado. Este arquivo que chamaremos de “genesis.json” será usado por todos os nossos nodes e é, de fato o que determina em qual cadeia estamos.

{
"nonce": "0xdeadbeefdeadbeef",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x686f727365",
"gasLimit": "0x8000000",
"difficulty": "0x0400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {
}
}

O gas Limit nos permite executar contratos e, definindo a dificuldade de mineração muito baixa, podemos criar facilmente nossos próprios ethers. Se você tiver vários computadores em uma rede, copie este arquivo para que todos tenham o mesmo genesis.json.

Iniciando o Geth

Cada instância do Geth deve ser executada com os seguintes parâmetros:

geth –genesis <path to genesis.json> –networkid 321 –nodiscover –datadir <path to empty folder> –port 30304 console

O que todas as instâncias terão em comum é o caminho genesis e a identificação da rede. Os nodes apenas tentarão se conectar a outros nodes com a mesma identificação de rede, mas também estamos adicionando um sinalizador –nodiscover para evitar a conexão acidental a nodes fora de nossa rede.

Cada node terá um diretório de dados diferente onde os dados dos blocos são armazenados e, se rodando no mesmo computador, também uma porta diferente. portanto, se você planeja iniciar várias instâncias no mesmo computador, precisará de uma pasta vazia para ser usada para cada um dos nodes.

Windows

Se você estiver executando várias instâncias do Geth em um computador Windows, adicione o sinalizador –ipcdisable, para evitar “Error String IPC: Access is denied”. Se você não quiser desabilitar o IPC, escolha um caminho de IPC diferente para cada node com o sinalizador –ipcpath <path>. O caminho padrão é “\\. \ Pipe \ geth.ipc”, então dê outro nome ao segundo node (por exemplo, “\\. \ Pipe \ geth2.ipc”).

Conectando nodes Geth uns aos outros

Para conectar explicitamente um node Geth a outro, precisamos de sua URL. Para obtê-lo, digite o seguinte em um console Geth em execução:

admin.nodeInfo.NodeUrl admin.nodeInfo.enode

Ele retornará algo como:

“enode://702de1918184581815e1a00e63d849524cb4126b9b5886090eabd4d4b5dc6f24c4198249775df30f835b1bfbc9a9733c014b27a99008043f3274c22e49db6fca@[::]:30304?discport=0”

O URL do node inclui uma chave pública, um IP e uma porta.

Se você estiver no Windows, pode ser necessário substituir a parte do IP do enode URL (após @), pelo seu IP. Se ambas as instâncias estiverem em execução no mesmo computador, o IP será 127.0.0.1 e o URL será:

“Enode: //702de1918184581815e1a00e63d849524cb4126b9b5886090eabd4d4b5dc6f24c4198249775df30f835b1bfbc9a9733c014b27a99008043f3274c22e49db4.0fca?”

Agora, em um console de instância do Geth diferente, digite:

admin.addPeer (<enode do primeiro geth>)

Para verificar se os nodes estão realmente conectados uns aos outros, digite web3.net.peerCount em qualquer um deles. Você deve obter “1” como resultado.

Você pode conectar quantos nodes desejar. Bom teste!

Recursos Extras

Confira o capítulo Testing contracts and transactions, sobre criação de contas e mineração no livro Ethereum Frontier Guide, e verifique o guia de Adrian Duke sobre gerar contas pre-seed usando alocação.

Compartilhar

Postagens Relacionadas

We describe a geth source code change which enables faster block mining. We hope this…

We are compiling a list of recent technologies developments in the blockchain sector. Our focus…

In the blockchain development industry lot of new technologies had arisen in the latest months. Unfortunately,…