Skip to content

Commit 1015338

Browse files
authored
Update 15_1_i2p_service.md
1 parent 8a87dd5 commit 1015338

File tree

1 file changed

+51
-15
lines changed

1 file changed

+51
-15
lines changed

15_1_i2p_service.md

Lines changed: 51 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,63 @@
11
# 15.1: Bitcoin Core as an I2P (Invisible Internet Project) service
22

3-
Users should consider different trade-offs involved in using i2p with other networks in Bitcoin Core for better privacy:
3+
> :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.
44
5-
- Sybil Attacks and Network Partitioning is possible with `onlynet=i2p`
6-
- Running Onion service with i2p service is experimental for now.
5+
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.
6+
7+
## Understand the Differences
8+
9+
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:
10+
11+
| | Tor | i2p |
12+
| :--- | :---: | ---: |
13+
| Routing | [Onion](https://www.onion-router.net/) | [Garlic](https://geti2p.net/en/docs/how/garlic-routing) |
14+
| 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) |
15+
| Relay | **Two-way** encrypted connections between each Relay | **One-way** connections between every server in its tunnels |
16+
| Hidden services | Slow | Fast |
17+
18+
A more detailed comparison may be found at [geti2p.net](https://geti2p.net/en/comparison/tor).
19+
20+
### Understand Tradeoffs for Limiting Outgoing Connections
21+
22+
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`.
23+
24+
* `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.
25+
* `onlynet=onion` and `onlynet=i2p` in conjunction, which runs Onion service with i2p service is experimental for now.
26+
27+
## Install i2p
28+
29+
To install i2p, you should make sure your ports are correctly set up and then you can continue with your setup process.
30+
31+
### Prepare Ports
32+
33+
To use i2p, you will need to open the following ports, which are required by i2p:
34+
35+
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.
36+
- You can check firewall status using `sudo ufw status verbose`, which shouldn't deny outgoing connections by default.
37+
2. Inbound (Internet facing): optional. A variety of inbound ports are listed in the [i2p docs](https://geti2p.net/en/faq#ports).
738
- For maximum privacy, it is preferable to disable accepting incoming connections.
839

9-
Read more: https://bitcoin.stackexchange.com/questions/107060/tor-and-i2p-tradeoffs-in-bitcoin-core
40+
### Run i2p
1041

11-
Follow the below steps to run Bitcoin Core i2p service:
42+
The following will run Bitcoin Core i2p services:
1243

13-
1. You can install `i2pd` on Ubuntu with below commands:
44+
1. Install `i2pd` on Ubuntu:
1445

1546
```
1647
sudo add-apt-repository ppa:purplei2p/i2pd
1748
sudo apt-get update
1849
sudo apt-get install i2pd
1950
```
2051

21-
For installing on other OS: https://i2pd.readthedocs.io/en/latest/user-guide/install/
52+
For installing on other OSes, see [these docs](https://i2pd.readthedocs.io/en/latest/user-guide/install/)
2253

23-
2. Then [run](https://i2pd.readthedocs.io/en/latest/user-guide/run/) it and check if its running:
54+
2. [Run](https://i2pd.readthedocs.io/en/latest/user-guide/run/) the i2p service:
2455

2556
```
2657
$ sudo systemctl start i2pd.service
2758
```
2859

29-
You should see it running on port 7656:
60+
3. Check that i2p is running. You should see it on port 7656:
3061

3162
```
3263
$ ss -nlt
@@ -36,29 +67,32 @@ Follow the below steps to run Bitcoin Core i2p service:
3667
LISTEN 0 4096 127.0.0.1:7656 0.0.0.0:*
3768
```
3869

39-
3. Add the following lines in `bitcoin.conf`. Config logging option `debug=i2p` is used to have additional information in the debug log about your I2P configuration and connections (Default location on Linux: ~/.bitcoin/bitcoin.conf):
70+
4. Add the following lines in `bitcoin.conf`:
4071

4172
```
4273
i2psam=127.0.0.1:7656
4374
debug=i2p
4475
```
76+
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`:
4577

4678
5. Restart `bitcoind`
4779

4880
```
4981
$ bitcoind
5082
```
5183

52-
6. Check `debug.log`if i2p was setup correctly or any errors printed in logs. I2P address is mentioned in the logs and ends with _b32.i2p_:
84+
6. Check `debug.log` to see if i2p was setup correctly, or if any errors appeared in the logs.
5385
```
5486
2021-06-15T20:36:16Z i2paccept thread start
5587
2021-06-15T20:36:16Z I2P: Creating SAM session with 127.0.0.1:7656
5688
5789
2021-06-15T20:36:56Z I2P: SAM session created: session id=3e0f35228b, my address=bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333
5890
2021-06-15T20:36:56Z AddLocal(bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333,4)
5991
```
92+
93+
The i2p address is mentioned in the logs, ending with _b32.i2p_. For example `bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p:18333`.
6094

61-
7. Confirm `i2p_private_key` was created in 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*:
95+
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*:
6296
```
6397
~/.bitcoin/testnet3$ ls
6498
@@ -67,18 +101,20 @@ Follow the below steps to run Bitcoin Core i2p service:
67101
blocks fee_estimates.dat peers.dat
68102
```
69103

70-
8. `bitcoin-cli -netinfo` or `bitcoin-cli getnetworkinfo`returns i2p address:
104+
8. Check that `bitcoin-cli -netinfo` or `bitcoin-cli getnetworkinfo`returns the i2p address:
71105

72106
```
73107
Local addresses
74108
bmwyyuzyqdc5dcx27s4baltbu6zw7rbqfl2nmclt45i7ng3ul4pa.b32.i2p port 18333 score 4
75109
```
110+
111+
You now have your Bitcoin server accessible through the i2p network at your new local address.
76112

77113
## Summary: Bitcoin Core as an I2P (Invisible Internet Project) service
78114

79-
It is always good to have alternatives for privacy and not depend only on Tor to run Bitcoin Core as hidden service. Since i2p was recently added in Bitcoin Core, not many people use it. Experiment with it and report bugs if you find any issues.
115+
It is always good to have alternatives for privacy and not depend solely on Tor for running Bitcoin Core as a hidden service. Since i2p was recently added in Bitcoin Core, not many people use it. Experiment with it and report bugs if you find any issues.
80116

81-
> :information_source: **NOTE:** For the official i2prouter implementation in Java, visit [download](https://geti2p.net/en/download) page and follow the instructions for your Operating System. Once installed, open a terminal window and type `i2prouter start`. Then visit `127.0.0.1:7657` in your browser to enable SAM. To do so, select: "Configure Homepage", then "Clients", and finally select the "Play Button" next to SAM application Bridge. On the left side of the page, there should be a green light next to "Shared Clients".
117+
> :information_source: **NOTE:** For the official i2prouter implementation in Java, visit the [i2p download page](https://geti2p.net/en/download) and follow the instructions for your Operating System. Once installed, open a terminal window and type `i2prouter start`. Then visit `127.0.0.1:7657` in your browser to enable SAM. To do so, select: "Configure Homepage", then "Clients", and finally select the "Play Button" next to SAM application Bridge. On the left side of the page, there should be a green light next to "Shared Clients".
82118
83119
Move on to "Programming with RPC" with [Chapter Sixteen: Talking to Bitcoind with C](16_0_Talking_to_Bitcoind.md).
84120

0 commit comments

Comments
 (0)