|
| 1 | +# 15.1: Bitcoin Core como um Serviço I2P (Projeto Internet Invisível) |
| 2 | + |
| 3 | +> :information_source: **NOTA:** Esta seção foi adicionada recentemente ao curso e ainda é um rascunho inicial que pode estar aguardando revisão. Proceda com cuidado, leitor. |
| 4 | +
|
| 5 | +Ao invés de utilizarmos o serviço baseado em proxy do Tor para garantir a privacidade das nossas comunicações no Bitcoin, podemos querer utilizar o I2P, que é projetado para agir como uma rede privada dentro da internet, ao invés de simplesmente oferecer acesso privado a serviços de internet. |
| 6 | + |
| 7 | +## Compreendendo as Diferenças |
| 8 | + |
| 9 | +Tanto o Tor quanto o I2P oferecem acesso privado a serviços online, mas com roteamentos, bancos de dados e arquiteturas para retransmissões diferentes. Como serviços ocultos (como acesso ao Bitcoin) são centrais ao design do I2P, eles também foram otimizados: |
| 10 | + |
| 11 | +| | Tor | I2P | |
| 12 | +| ---------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | |
| 13 | +| Roteamento | [Onion](https://www.onion-router.net/) | [Garlic](https://geti2p.net/en/docs/how/garlic-routing) | |
| 14 | +| Banco de Dados da Rede | [Servidores de Diretório](https://blog.torproject.org/possible-upcoming-attempts-disable-tor-network) Confiados | [Banco de Dados de Rede Distribuído](https://geti2p.net/en/docs/how/network-database) | |
| 15 | +| Retransmissão | Conexões criptografadas de **mão-dupla** entre cada Retransmissor | Conexões de **mão-única** entre todo servidor em seus túneis | |
| 16 | +| Serviços Ocultos | Devagar | Rápido | |
| 17 | + |
| 18 | +Podemos encontrar uma comparação mais detalhada em [geti2p.net](https://geti2p.net/pt-br/comparison/tor). |
| 19 | + |
| 20 | +### Compreenda os Tradeoffs para Limitar Conexões de Saída |
| 21 | + |
| 22 | +Existem [tradeoffs](https://bitcoin.stackexchange.com/questions/107060/tor-and-i2p-tradeoffs-in-bitcoin-core) caso escolhamos suportar apenas o I2P, apenas o Tor, ou ambos. Essas configurações, que limitam conexões de saída de clearnet, são feitas no Bitcoin Core usando o argumento `onlynet` em `bitcoin.conf`. |
| 23 | + |
| 24 | +* `onlynet=onion`, que limita conexões de saída ao Tor, pode expor um node a ataques "Sybil" e criar partições na rede, devido às conexões limitadas entre Tornet e clearnet. |
| 25 | +* `onlynet=onion` e `onlynet=i2p`, juntas, que executa serviço Onion com serviço I2P, é experimental por enquanto. |
| 26 | + |
| 27 | +## Instalando o I2P |
| 28 | + |
| 29 | +Para instalar o I2P, devemos nos certificar de que configuramos as portas devidamente e apenas então continuar com o processo. |
| 30 | + |
| 31 | +### Preparando as Portas |
| 32 | + |
| 33 | +Para usar o I2P, devemos abrir as seguintes portas, necessárias para o I2P: |
| 34 | + |
| 35 | +1. **De saída (olhando para a internet):** uma porta aleatória entre 9000 e 31000 é selecionada. É melhor se todas essas portas estiverem abertas para conexões de saída, o que não afeta nossa segurança. |
| 36 | + - Podemos checar o status do nosso firewall usando `sudo ufw status verbose`, o que não deve negar conexões de saída por padrão |
| 37 | +2. De entrada (olhando para a internet): opcional. A variedade de portas de entrada são listadas na [documentação do I2P](https://geti2p.net/pt-br/faq#ports) |
| 38 | + - Para maximizarmos privacidade, é preferível desabilitarmos conexões de entrada. |
| 39 | + |
| 40 | +### Executando o I2P |
| 41 | + |
| 42 | +O seguinte irá executar serviços I2P no Bitcoin Core: |
| 43 | + |
| 44 | +1. Instalando `i2pd` no Ubuntu: |
| 45 | + |
| 46 | + ``` |
| 47 | + sudo add-apt-repository ppa:purplei2p/i2pd |
| 48 | + sudo apt-get update |
| 49 | + sudo apt-get install i2pd |
| 50 | + ``` |
| 51 | + |
| 52 | + Para instalarmos em outros sistemas operacionais, podemos ver [estes documentos](https://i2pd.readthedocs.io/en/latest/user-guide/install/). |
| 53 | + |
| 54 | +2. [Executando](https://i2pd.readthedocs.io/en/latest/user-guide/run/) o serviço I2P: |
| 55 | + |
| 56 | + ``` |
| 57 | + $ sudo systemctl start i2pd.service |
| 58 | + ``` |
| 59 | + |
| 60 | +3. Verificando se o I2P está em execução, devemos vê-lo na porta 7656: |
| 61 | + |
| 62 | + ``` |
| 63 | + $ ss -nlt |
| 64 | + |
| 65 | + State Recv-Q Send-Q Local Address:Port Peer Address:Port Process |
| 66 | + |
| 67 | + LISTEN 0 4096 127.0.0.1:7656 0.0.0.0:* |
| 68 | + ``` |
| 69 | + |
| 70 | +4. Devemos adicionar as seguintes linhas em `bitcoin.conf`: |
| 71 | + |
| 72 | + ``` |
| 73 | + i2psam=127.0.0.1:7656 |
| 74 | + debug=i2p |
| 75 | + ``` |
| 76 | + |
| 77 | + A opção para os logs, `debug=i2p`, é utilizada para recordarmos informações adicionais no debug log sobre nossas configurações e conexões I2P. O lugar padrão para esse arquivo de debug no Linux é: `~/.bitcoin/debug.log` |
| 78 | + |
| 79 | +5. Reiniciando o `bitcoind` |
| 80 | + |
| 81 | + ``` |
| 82 | + $ bitcoind |
| 83 | + ``` |
| 84 | + |
| 85 | +6. Devemos verificar se o I2P foi configurado corretamente olhando o `debug.log`, ou se algum erro apareceu nos logs. |
| 86 | + |
| 87 | + ``` |
| 88 | + 2021-06-15T20:36:16Z i2paccept thread start |
| 89 | + 2021-06-15T20:36:16Z I2P: Creating SAM session with 127.0.0.1:7656 |
| 90 | + |
| 91 | + 2021-06-15T20:36:56Z I2P: SAM session created: session id=3e0f35228b, my address=bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333 |
| 92 | + 2021-06-15T20:36:56Z AddLocal(bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333,4) |
| 93 | + ``` |
| 94 | + |
| 95 | + O nosso endereço I2P é mencionado nos logs, e termina com _b32.i2p_. Por exemplo `bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333`. |
| 96 | + |
| 97 | +7. Devemos confirmar que `i2p_private_key` foi criado no diretório do Bitcoin Core. A primeira vez que o Bitcoin Core conectar ao roteador I2P, o endereço I2P (e a chave privada correspondente) será automaticamente gerado e salvado em um arquivo chamado *i2p_private_key*: |
| 98 | + |
| 99 | + ``` |
| 100 | + ~/.bitcoin/testnet3$ ls |
| 101 | + |
| 102 | + anchors.dat chainstate i2p_private_key settings.json |
| 103 | + banlist.dat debug.log mempool.dat wallets |
| 104 | + blocks fee_estimates.dat peers.dat |
| 105 | + ``` |
| 106 | + |
| 107 | +8. Devemos verificar que `bitcoin-cli -netinfo` ou `bitcoin-cli getnetworkinfo` retorna o endereço I2P: |
| 108 | + |
| 109 | + ``` |
| 110 | + Local addresses |
| 111 | + bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p port 18333 score 4 |
| 112 | + ``` |
| 113 | + |
| 114 | + Agora temos um servidor do Bitcoin acessível através da rede I2P no nosso novo endereço local. |
| 115 | + |
| 116 | +## Resumo: Bitcoin Core como um Serviço I2P (Projeto Internet Invisível) |
| 117 | + |
| 118 | +É sempre positivo termos alternativas para privacidade e não dependermos exclusivamente do Tor para executarmos o Bitcoin Core como um serviço oculto. Como I2P foi adicionado recentemente ao Bitcoin Core, poucas pessoas o utilizam. Podemos experimentar com ele e reportar bugs se encontrarmos algum problema. |
| 119 | + |
| 120 | +> :information_source: **NOTA:** Para a implementação oficial do I2P em Java, podemos visitar a [página de download do I2P](https://geti2p.net/en/download) e seguirmos as instruções para nosso Sistema Operacional. Após instalado, podemos abrir uma janela do Terminal e escrever `i2prouter start`. Em seguida, podemos visitar o endereço `127.0.0.1:76571` em um navegador e permitirmos o SAM. Para fazermos isso, selecionamos: "Configure Homepage", então "Clients", e finalmente selecionar o "Play Button" ao lado da Bridge de aplicativo SAM. No lado esquerdo da página, devemos ver uma luz verde próximo a "Shared Clients". |
| 121 | +
|
| 122 | +Siga em frente para "Programando com RPC" no [Capítulo Dezesseis: Conversando com o Bitcoind com C](16_0_Talking_to_Bitcoind.md). |
| 123 | + |
| 124 | +Ou, se não formos programadores, podemos pular para o [Capítulo Dezenove: Compreendendo Sua Configuração Lightning](https://github.com/namcios/Learning-Bitcoin-from-the-Command-Line/blob/portuguese-translation/pt/18_0_Understanding_Your_Lightning_Setup.md) para continuarmos nosso aprendizado da linha de comando com a rede Lightning. |
0 commit comments