It is possible to run Bitcoin Core as an I2P (Invisible Internet Project) service and connect to such services.
This glossary may be useful to get started with I2P terminology.
A running I2P router (proxy) with SAM
enabled is required (there is an official one and
a few alternatives). Notice the IP
address and port the SAM proxy is listening to; usually, it is
127.0.0.1:7656
. Once it is up and running with SAM enabled, use the following
Bitcoin Core options:
-i2psam=<ip:port>
I2P SAM proxy to reach I2P peers and accept I2P connections (default:
none)
-i2pacceptincoming
If set and -i2psam is also set then incoming I2P connections are
accepted via the SAM proxy. If this is not set but -i2psam is set
then only outgoing connections will be made to the I2P network.
Ignored if -i2psam is not set. Listening for incoming I2P
connections is done through the SAM proxy, not by binding to a
local address and port (default: 1)
In a typical situation, this suffices:
bitcoind -i2psam=127.0.0.1:7656
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
in the Bitcoin Core data directory.
You may set the debug=i2p
config logging option to have additional
information in the debug log about your I2P configuration and connections. Run
bitcoin-cli help logging
for more information.
It is possible to restrict outgoing connections in the usual way with
onlynet=i2p
. I2P support was added to Bitcoin Core in version 22.0 (mid 2021)
and there may be fewer I2P peers than Tor or IP ones. Therefore, using
onlynet=i2p
alone (without other onlynet=
) may make a node more susceptible
to Sybil attacks. Use
bitcoin-cli -addrinfo
to see the number of I2P addresses known to your node.
There are several ways to see your I2P address in Bitcoin Core:
- in the debug log (grep for
AddLocal
, the I2P address ends in.b32.i2p
) - in the output of the
getnetworkinfo
RPC in the "localaddresses" section - in the output of
bitcoin-cli -netinfo
peer connections dashboard
To see which I2P peers your node is connected to, use bitcoin-cli -netinfo 4
or the getpeerinfo
RPC (e.g. bitcoin-cli getpeerinfo
).
To see which I2P addresses your node knows, use the getnodeaddresses 0 i2p
RPC.
Bitcoin Core uses the SAM v3.1 protocol to connect to the I2P network. Any I2P router that supports it can be used.