-
Notifications
You must be signed in to change notification settings - Fork 37.7k
doc: add basic I2P documentation #22250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Concept ACK! Can be merged after FF but is needed before release. |
Why after feature freeze? I can't see why this couldn't be merged at any time. |
That it's ok if it isn't merged today. |
Missing a link to the new doc from the main file |
Concept ACK |
Concept ACK nit: Docs mention i2p 'router' is required, this can be confusing for some users. I had to use Related comments: Will test again today on POP!_OS. |
Tried on POP!_OS and had no issues except last step:
|
-netinfo displays an I2P column if you have any I2P connections; addnode any of the I2P addresses in contrib/seeds/nodes_main.txt and you will see the connection in -netinfo. |
doc/i2p.md
Outdated
- in the output of the CLI `-netinfo` peer connections dashboard | ||
|
||
To see to which I2P peers your node is connected, use `bitcoin-cli -netinfo 4` | ||
or the RPC `getpeerinfo` (e.g. `bitcoin-cli getpeerinfo`). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe mention that you can see which I2P addresses your node knows with RPC getnodeaddresses 0 i2p
and (maybe, not sure) that there are I2P seed nodes to bootstrap your I2P connections in /contrib/seeds/nodes_main.txt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added getnodeaddresses 0 i2p
, but not the seeds mention.
Actually, we use the seeds to fill addrman / establish a connection if we don't have any. But as far as I am aware we do this regardless of the network. Should we do that per-network? I.e. make sure we establish at least one connection to Tor if the user has bothered to setup a Tor proxy, using the seeds if necessary? Same for I2P.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems like a good idea. IRC discussion: https://www.erisian.com.au/bitcoin-core-dev/log-2021-06-18.html#l-289
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The few times I talked people through testing an I2P service, each time they needed an I2P address to connect to or wouldn't see one. @prayank23's review is another good example 👍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"(N being either I2P or Tor). If N is configured, make sure we have at least one connection to N (either inbound or outbound). If nobody connects to us, then try to open a connection to a peer from N (using either the seeds or addresses received via gossip)".
This will help I2P now / 22.0. But it is too late for 22.0.
For 23.0 it may not be necessary for I2P if it gains traction quickly. I am not sure if Tor needs it at all.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If demonstrated to be an issue, it may (possibly) not be too late.
ACK, modulo the comments. I was wondering if we should warn that i2pd needs to be a version more recent than 2.33.0 due to the issues Suhas experienced with it, but mentioning i2pd can be done in a follow-up, if desired. |
Was about to comment this as well, but I guess we cannot really recommend any version of i2pd at this point at all due to known crash issues? In any case, I agree it can be done later if at all. |
I have nothing more to add in review apart from my comments above. Would be helpful if someone could answer this question on SE: https://bitcoin.stackexchange.com/questions/107060/tor-and-i2p-tradeoffs-in-bitcoin-core |
|
Render: https://github.com/bitcoin/bitcoin/blob/e498c9292af233c33616dcee2fe749ecb85fa186/doc/i2p.md |
@prayank23, I added a link to the I2P glossary https://geti2p.net/en/about/glossary, I think "I2P router" in general means an I2P proxy not the specific implementation in Java. |
## Run Bitcoin Core with an I2P router (proxy) | ||
|
||
A running I2P router (proxy) with [SAM](https://geti2p.net/en/docs/api/samv3) | ||
enabled is required (there is an [official one](https://geti2p.net) and |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This official link has one 'download' button, it will open https://geti2p.net/en/download which has options for different OS. If you try installing i2p
for Ubuntu from here it won't work. Others also look like .jar files
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK with a few more comments :)
Edit: I wonder if the first sentence from doc/tor.md would be clearer: "It is possible to run Bitcoin Core as an I2P (Invisible Internet Project) service and connect to such services."
|
Yes. The previous "to connect to other bitcoin nodes through I2P" may be interpreted as to connect to other non-I2P nodes (e.g. IPv4). |
doc/i2p.md
Outdated
To see to which I2P peers your node is connected, use `bitcoin-cli -netinfo 4` | ||
or the RPC `getpeerinfo` (e.g. `bitcoin-cli getpeerinfo`). | ||
|
||
To see which I2P addresses your node knows, use the RPC |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To see which I2P addresses your node knows, use the RPC | |
To see which I2P addresses your node knows, run RPC |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"run" because getnodeaddresses 0 i2p
is not just the name of an RPC but a call with specific arguments. But definitely a pico-nit.
ACK There are a few fixups but nothing that can't be done in a follow-up before -final. Personally, I was procrastinating on writing this doc out of bikeshed avoidance, so just noting a few things here and happy to open a follow-up. |
For the next time: maybe a wiki is more appropriate, where everybody can edit and only open a PR once settled/finalized. |
ACK 78cdab1 Thanks for updating. It may be a good idea to mention the ports (0 or ignored) I2P specificity to users here once it's settled. |
ACK 78cdab1
Yes, I don't think this is a bad idea for new documentation. I'd be uncomfortable with using a wiki as main documentation source, but during the editing phase it can be less friction. |
Neat idea. Better than a StackExchange post if it is intended to go directly into Core docs and as @laanwj says less friction during editing phase than opening a PR with a first draft. |
Indeed. Just the initial/draft phase. |
78cdab1 doc: sort entries in doc/README.md#Miscellaneous alphabetically (Vasil Dimov) cad487b doc: add basic I2P documentation (Vasil Dimov) Pull request description: Add basic I2P documentation to help users to start using I2P and Bitcoin Core. ACKs for top commit: jonatack: ACK 78cdab1 laanwj: ACK 78cdab1 Tree-SHA512: 71cffc9419338a21cb9e811ee9463d6d09eef1a2a73190f766523bc1642a1f58984d5b2ab13da9b6560387ac9f431aace8bc7ae9b776585ecd3e3c1ff6af8e8d
78cdab1 doc: sort entries in doc/README.md#Miscellaneous alphabetically (Vasil Dimov) cad487b doc: add basic I2P documentation (Vasil Dimov) Pull request description: Add basic I2P documentation to help users to start using I2P and Bitcoin Core. ACKs for top commit: jonatack: ACK 78cdab1 laanwj: ACK 78cdab1 Tree-SHA512: 71cffc9419338a21cb9e811ee9463d6d09eef1a2a73190f766523bc1642a1f58984d5b2ab13da9b6560387ac9f431aace8bc7ae9b776585ecd3e3c1ff6af8e8d
78cdab1 doc: sort entries in doc/README.md#Miscellaneous alphabetically (Vasil Dimov) cad487b doc: add basic I2P documentation (Vasil Dimov) Pull request description: Add basic I2P documentation to help users to start using I2P and Bitcoin Core. ACKs for top commit: jonatack: ACK 78cdab1 laanwj: ACK 78cdab1 Tree-SHA512: 71cffc9419338a21cb9e811ee9463d6d09eef1a2a73190f766523bc1642a1f58984d5b2ab13da9b6560387ac9f431aace8bc7ae9b776585ecd3e3c1ff6af8e8d
78cdab1 doc: sort entries in doc/README.md#Miscellaneous alphabetically (Vasil Dimov) cad487b doc: add basic I2P documentation (Vasil Dimov) Pull request description: Add basic I2P documentation to help users to start using I2P and Bitcoin Core. ACKs for top commit: jonatack: ACK 78cdab1 laanwj: ACK 78cdab1 Tree-SHA512: 71cffc9419338a21cb9e811ee9463d6d09eef1a2a73190f766523bc1642a1f58984d5b2ab13da9b6560387ac9f431aace8bc7ae9b776585ecd3e3c1ff6af8e8d
78cdab1 doc: sort entries in doc/README.md#Miscellaneous alphabetically (Vasil Dimov) cad487b doc: add basic I2P documentation (Vasil Dimov) Pull request description: Add basic I2P documentation to help users to start using I2P and Bitcoin Core. ACKs for top commit: jonatack: ACK 78cdab1 laanwj: ACK 78cdab1 Tree-SHA512: 71cffc9419338a21cb9e811ee9463d6d09eef1a2a73190f766523bc1642a1f58984d5b2ab13da9b6560387ac9f431aace8bc7ae9b776585ecd3e3c1ff6af8e8d
78cdab1 doc: sort entries in doc/README.md#Miscellaneous alphabetically (Vasil Dimov) cad487b doc: add basic I2P documentation (Vasil Dimov) Pull request description: Add basic I2P documentation to help users to start using I2P and Bitcoin Core. ACKs for top commit: jonatack: ACK 78cdab1 laanwj: ACK 78cdab1 Tree-SHA512: 71cffc9419338a21cb9e811ee9463d6d09eef1a2a73190f766523bc1642a1f58984d5b2ab13da9b6560387ac9f431aace8bc7ae9b776585ecd3e3c1ff6af8e8d
78cdab1 doc: sort entries in doc/README.md#Miscellaneous alphabetically (Vasil Dimov) cad487b doc: add basic I2P documentation (Vasil Dimov) Pull request description: Add basic I2P documentation to help users to start using I2P and Bitcoin Core. ACKs for top commit: jonatack: ACK 78cdab1 laanwj: ACK 78cdab1 Tree-SHA512: 71cffc9419338a21cb9e811ee9463d6d09eef1a2a73190f766523bc1642a1f58984d5b2ab13da9b6560387ac9f431aace8bc7ae9b776585ecd3e3c1ff6af8e8d
78cdab1 doc: sort entries in doc/README.md#Miscellaneous alphabetically (Vasil Dimov) cad487b doc: add basic I2P documentation (Vasil Dimov) Pull request description: Add basic I2P documentation to help users to start using I2P and Bitcoin Core. ACKs for top commit: jonatack: ACK 78cdab1 laanwj: ACK 78cdab1 Tree-SHA512: 71cffc9419338a21cb9e811ee9463d6d09eef1a2a73190f766523bc1642a1f58984d5b2ab13da9b6560387ac9f431aace8bc7ae9b776585ecd3e3c1ff6af8e8d
Summary: This is a backport of [[bitcoin/bitcoin#22250 | core#22250]] Depends on D11037 Test Plan: proofreading and following the steps to run a node using I2P Reviewers: #bitcoin_abc, Fabien Reviewed By: #bitcoin_abc, Fabien Differential Revision: https://reviews.bitcoinabc.org/D11041
Add basic I2P documentation to help users to start using I2P and Bitcoin Core.