mirror of
https://github.com/ChristopherA/Learning-Bitcoin-from-the-Command-Line.git
synced 2025-06-07 07:56:31 +00:00
consistent usage of I2P
This commit is contained in:
parent
faac3f6cc6
commit
4a44502eca
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
> :information_source: **NOTE:** This section has been recently added to the course and is an early draft that may still be awaiting review. Caveat reader.
|
> :information_source: **NOTE:** This section has been recently added to the course and is an early draft that may still be awaiting review. Caveat reader.
|
||||||
|
|
||||||
Rather than using the proxy-based Tor service to ensure the privacy of your Bitcoin communications, you may instead wish to use i2p, which is designed to act as a private network within the internet, rather than simply offering private acecss to internet services.
|
Rather than using the proxy-based Tor service to ensure the privacy of your Bitcoin communications, you may instead wish to use I2P, which is designed to act as a private network within the internet, rather than simply offering private acecss to internet services.
|
||||||
|
|
||||||
## Understand the Differences
|
## Understand the Differences
|
||||||
|
|
||||||
Tor and i2p both offer private access to online services, but with different routing and databases, and with different architectures for relays. Since hidden services (such as Bitcoin access) are core to the design of i2p, they have also been better optimized:
|
Tor and I2P both offer private access to online services, but with different routing and databases, and with different architectures for relays. Since hidden services (such as Bitcoin access) are core to the design of I2P, they have also been better optimized:
|
||||||
|
|
||||||
| | Tor | i2p |
|
| | Tor | I2P |
|
||||||
| :--- | :---: | ---: |
|
| :--- | :---: | ---: |
|
||||||
| Routing | [Onion](https://www.onion-router.net/) | [Garlic](https://geti2p.net/en/docs/how/garlic-routing) |
|
| Routing | [Onion](https://www.onion-router.net/) | [Garlic](https://geti2p.net/en/docs/how/garlic-routing) |
|
||||||
| Network Database | Trusted [Directory Servers](https://blog.torproject.org/possible-upcoming-attempts-disable-tor-network) | [Distributed network database](https://geti2p.net/en/docs/how/network-database) |
|
| Network Database | Trusted [Directory Servers](https://blog.torproject.org/possible-upcoming-attempts-disable-tor-network) | [Distributed network database](https://geti2p.net/en/docs/how/network-database) |
|
||||||
@ -19,27 +19,27 @@ A more detailed comparison may be found at [geti2p.net](https://geti2p.net/en/co
|
|||||||
|
|
||||||
### Understand Tradeoffs for Limiting Outgoing Connections
|
### Understand Tradeoffs for Limiting Outgoing Connections
|
||||||
|
|
||||||
There are [tradeoffs](https://bitcoin.stackexchange.com/questions/107060/tor-and-i2p-tradeoffs-in-bitcoin-core) if you choose to support only i2p, only Tor, or both. These configurations, which limit outgoing clearnet connections, are made in Bitcoin Core using the `onlynet` argument in your `bitcoin.conf`.
|
There are [tradeoffs](https://bitcoin.stackexchange.com/questions/107060/tor-and-i2p-tradeoffs-in-bitcoin-core) if you choose to support only I2P, only Tor, or both. These configurations, which limit outgoing clearnet connections, are made in Bitcoin Core using the `onlynet` argument in your `bitcoin.conf`.
|
||||||
|
|
||||||
* `onlynet=onion`, which limits outgoing connections to Tor, can expose a node to Sybil attacks and can create network partitioning, because of limited connections between Tornet and the clearnet.
|
* `onlynet=onion`, which limits outgoing connections to Tor, can expose a node to Sybil attacks and can create network partitioning, because of limited connections between Tornet and the clearnet.
|
||||||
* `onlynet=onion` and `onlynet=i2p` in conjunction, which runs Onion service with i2p service is experimental for now.
|
* `onlynet=onion` and `onlynet=i2p` in conjunction, which runs Onion service with I2P service is experimental for now.
|
||||||
|
|
||||||
## Install i2p
|
## Install I2P
|
||||||
|
|
||||||
To install i2p, you should make sure your ports are correctly set up and then you can continue with your setup process.
|
To install I2P, you should make sure your ports are correctly set up and then you can continue with your setup process.
|
||||||
|
|
||||||
### Prepare Ports
|
### Prepare Ports
|
||||||
|
|
||||||
To use i2p, you will need to open the following ports, which are required by i2p:
|
To use I2P, you will need to open the following ports, which are required by I2P:
|
||||||
|
|
||||||
1. **Outbound (Internet facing):** a random port between 9000 and 31000 is selected. It is best if all these ports are open for outbound connections, which doesn't affect your security.
|
1. **Outbound (Internet facing):** a random port between 9000 and 31000 is selected. It is best if all these ports are open for outbound connections, which doesn't affect your security.
|
||||||
- You can check firewall status using `sudo ufw status verbose`, which shouldn't deny outgoing connections by default.
|
- You can check firewall status using `sudo ufw status verbose`, which shouldn't deny outgoing connections by default.
|
||||||
2. Inbound (Internet facing): optional. A variety of inbound ports are listed in the [i2p docs](https://geti2p.net/en/faq#ports).
|
2. Inbound (Internet facing): optional. A variety of inbound ports are listed in the [I2P docs](https://geti2p.net/en/faq#ports).
|
||||||
- For maximum privacy, it is preferable to disable accepting incoming connections.
|
- For maximum privacy, it is preferable to disable accepting incoming connections.
|
||||||
|
|
||||||
### Run i2p
|
### Run I2P
|
||||||
|
|
||||||
The following will run Bitcoin Core i2p services:
|
The following will run Bitcoin Core I2P services:
|
||||||
|
|
||||||
1. Install `i2pd` on Ubuntu:
|
1. Install `i2pd` on Ubuntu:
|
||||||
|
|
||||||
@ -51,13 +51,13 @@ The following will run Bitcoin Core i2p services:
|
|||||||
|
|
||||||
For installing on other OSes, see [these docs](https://i2pd.readthedocs.io/en/latest/user-guide/install/)
|
For installing on other OSes, see [these docs](https://i2pd.readthedocs.io/en/latest/user-guide/install/)
|
||||||
|
|
||||||
2. [Run](https://i2pd.readthedocs.io/en/latest/user-guide/run/) the i2p service:
|
2. [Run](https://i2pd.readthedocs.io/en/latest/user-guide/run/) the I2P service:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ sudo systemctl start i2pd.service
|
$ sudo systemctl start i2pd.service
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Check that i2p is running. You should see it on port 7656:
|
3. Check that I2P is running. You should see it on port 7656:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ss -nlt
|
$ ss -nlt
|
||||||
@ -73,7 +73,7 @@ The following will run Bitcoin Core i2p services:
|
|||||||
i2psam=127.0.0.1:7656
|
i2psam=127.0.0.1:7656
|
||||||
debug=i2p
|
debug=i2p
|
||||||
```
|
```
|
||||||
The logging option, `debug=i2p`, is used to record additional information in the debug log about your i2p configuration and connections. The default location for this debugging file on Linux is: `~/.bitcoin/bitcoin.conf`:
|
The logging option, `debug=i2p`, is used to record additional information in the debug log about your I2P configuration and connections. The default location for this debugging file on Linux is: `~/.bitcoin/bitcoin.conf`:
|
||||||
|
|
||||||
5. Restart `bitcoind`
|
5. Restart `bitcoind`
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ The following will run Bitcoin Core i2p services:
|
|||||||
$ bitcoind
|
$ bitcoind
|
||||||
```
|
```
|
||||||
|
|
||||||
6. Check `debug.log` to see if i2p was setup correctly, or if any errors appeared in the logs.
|
6. Check `debug.log` to see if I2P was setup correctly, or if any errors appeared in the logs.
|
||||||
```
|
```
|
||||||
2021-06-15T20:36:16Z i2paccept thread start
|
2021-06-15T20:36:16Z i2paccept thread start
|
||||||
2021-06-15T20:36:16Z I2P: Creating SAM session with 127.0.0.1:7656
|
2021-06-15T20:36:16Z I2P: Creating SAM session with 127.0.0.1:7656
|
||||||
@ -90,9 +90,9 @@ The following will run Bitcoin Core i2p services:
|
|||||||
2021-06-15T20:36:56Z AddLocal(bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333,4)
|
2021-06-15T20:36:56Z AddLocal(bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333,4)
|
||||||
```
|
```
|
||||||
|
|
||||||
The i2p address is mentioned in the logs, ending with _b32.i2p_. For example `bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333`.
|
The I2P address is mentioned in the logs, ending with _b32.i2p_. For example `bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333`.
|
||||||
|
|
||||||
7. Confirm `i2p_private_key` was created in the Bitcoin Core data directory. The first time Bitcoin Core connects to the i2p router, its i2p address (and corresponding private key) will be automatically generated and saved in a file named *i2p_private_key*:
|
7. Confirm `i2p_private_key` was created in the Bitcoin Core data directory. The first time Bitcoin Core connects to the I2P router, its I2P address (and corresponding private key) will be automatically generated and saved in a file named *i2p_private_key*:
|
||||||
```
|
```
|
||||||
~/.bitcoin/testnet3$ ls
|
~/.bitcoin/testnet3$ ls
|
||||||
|
|
||||||
@ -101,14 +101,14 @@ The following will run Bitcoin Core i2p services:
|
|||||||
blocks fee_estimates.dat peers.dat
|
blocks fee_estimates.dat peers.dat
|
||||||
```
|
```
|
||||||
|
|
||||||
8. Check that `bitcoin-cli -netinfo` or `bitcoin-cli getnetworkinfo`returns the i2p address:
|
8. Check that `bitcoin-cli -netinfo` or `bitcoin-cli getnetworkinfo`returns the I2P address:
|
||||||
|
|
||||||
```
|
```
|
||||||
Local addresses
|
Local addresses
|
||||||
bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p port 18333 score 4
|
bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p port 18333 score 4
|
||||||
```
|
```
|
||||||
|
|
||||||
You now have your Bitcoin server accessible through the i2p network at your new local address.
|
You now have your Bitcoin server accessible through the I2P network at your new local address.
|
||||||
|
|
||||||
## Summary: Bitcoin Core as an I2P (Invisible Internet Project) service
|
## Summary: Bitcoin Core as an I2P (Invisible Internet Project) service
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user