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
I2P Integration #1111
Comments
The corresponding upstream issue is bitcoin/bitcoin#2091. |
Several years ago, upstream Bitcoin was forked and extended with native I2P support: https://github.com/VirtualDestructor/bitcoin-qt-i2p We may be able to leverage some of this - certainly the I2P-specific components like the C++ SAM library. The network integration may want to be made more generic, particularly if we want to pre-emptively add support for other longer addresses like Tor's next-gen onion services (mentioned in #917). |
Note: this ticket emerged from discussion in zcash #917 |
@str4d You are welcome to get inspiration from our I2P integration reworked by GroundRod on Anoncoin. |
I have extracted the I2P SAM library from Anoncoin (complete with history back to giv's original work on bitcoin-qt-i2p) into https://github.com/i2p/i2psam. Next step is to examine the I2P wrapper and get my head around how it is integrated into the network subsystem, so I can try and distill it into a design document. |
I think Kovri can really help with this. It's being developed for Monero, but it should (in my understanding) also work with Zcash. Here is the GitHub repository: https://github.com/monero-project/kovri And their website: Now, Kovri is nearing an alpha release in a few weeks (the main developer says it is 99% ready), so it still has some work to be done. On top of this, the alpha only brings basic I2P router functionality. The client and core are still being developed, which would allow integration with Monero and really any other project that wants to use it: monero-project/kovri#350 (libcore) I think this is the best project for your requirements going forward. |
[I2P developer hat on] Kovri as-is would be one of the easiest means to integrate I2P, as all functionality would be included and nothing unnecessary would be present (and it is also being written with cryptocurrency in mind). However, monero-project/kovri#351 would necessarily require using Kovri as the router, because AFAICT that client library will only interface with Kovri's core API. If we want users to be able to optionally leverage their existing non-Kovri router, we'd need to use a different client library (like i2psam above) that speaks a common API (Java I2P and i2pd have SAM, and Kovri could have it added later). Note also that the decision of how to interface with I2P (i2psam vs Kovri vs other options) is only a small part of this ticket. The majority of the design and engineering work will be on designing and implementing the Zcash network protocol extensions, which will not depend on the I2P interface (and in fact can be shared with upstream Bitcoin). |
Let's consider how to integrate and use I2P, leveraging the work upstream might be doing in this area.
The text was updated successfully, but these errors were encountered: