Skip to content

Conversation

everoddandeven
Copy link

The changes made in this PR enable new options for the wallet to start and manage TOR and I2P services that monerod can use to interface its connections. The current approach uses socks5, so due to likely limitations in the monero node communication protocol, blockchain synchronization happens under Clearnet if using an I2P-only setup. It is probably best to build i2p separately and modify the I2PDaemonManager code to be a simple wrapper (like DaemonManager) for the i2pd executable.

Copy link
Contributor

@nahuhh nahuhh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quick pass

main.qml Outdated
if (persistentSettings.i2pAllowIncomingConnections) {
var i2pAddress = i2pManager.getAddress();
var i2pPort = i2pManager.getP2PPort();
daemonFlags += ' --anonymous-inbound ' + i2pAddress + ":" + i2pPort + ",127.0.0.1:" + i2pPort;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
daemonFlags += ' --anonymous-inbound ' + i2pAddress + ":" + i2pPort + ",127.0.0.1:" + i2pPort;
daemonFlags += ' --anonymous-inbound ' + i2pAddress + "," + i2pPort;

main.qml Outdated
Comment on lines 818 to 885
if (persistentSettings.proxyEnabled && persistentSettings.proxyType === "I2P") {
daemonFlags += " --proxy 127.0.0.1:4447";
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

don't use outproxy or i2p for proxy

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Outproxy is never used as --proxy for monerod. If I don't set up i2p proxy in monerod it won't be able to communicate with remote bootstrap i2p nodes, or am I wrong?

Copy link
Contributor

@nahuhh nahuhh May 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bootstrap i2p and onion nodes arent possible
(the node's using --public-node have no knowledge of the onion/i2p hostname that is being fwd to the rpc port, therefore arent able to broadcast their onion/i2p hostnames to peers)

supporting onion/i2p bootstrap nodes should be out of scope for this pr.

btw, bootstrap nodes will use whatever is set to --proxy

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I remember we talked about it, but I implemented a custom bootstrap node searcher for i2p, I wanted to let @Gingeropolous try this feature, even though I know that the implementation of this feature is not very likely to be merged.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the rpc i2p/onion is not broadcasted to peers.

main.qml Outdated
if (persistentSettings.torAllowIncomingConnections) {
var torAddress = torManager.getAddress();
var torP2PPort = torManager.getP2PPort();
daemonFlags += ' --anonymous-inbound ' + torAddress + ":" + torP2PPort + ",127.0.0.1:" + torP2PPort;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
daemonFlags += ' --anonymous-inbound ' + torAddress + ":" + torP2PPort + ",127.0.0.1:" + torP2PPort;
daemonFlags += ' --anonymous-inbound ' + torAddress + ":" + torP2PPort + "," + torP2PPort;


if (persistentSettings.i2pEnabled || persistentSettings.torEnabled) {
daemonFlags += " --pad-transactions";
daemonFlags += " --rpc-restricted-bind-ip 127.0.0.1";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
daemonFlags += " --rpc-restricted-bind-ip 127.0.0.1";
daemonFlags += " --rpc-restricted-bind-ip 127.0.0.1";

should be configurable (0.0.0.0 etc)

@everoddandeven everoddandeven force-pushed the feature/anonymity-networks branch 2 times, most recently from d177711 to e1caecd Compare May 18, 2025 16:29
@everoddandeven everoddandeven force-pushed the feature/anonymity-networks branch from e1caecd to d3d8e90 Compare May 18, 2025 16:31
@everoddandeven everoddandeven marked this pull request as ready for review May 19, 2025 16:49
@nahuhh
Copy link
Contributor

nahuhh commented Aug 7, 2025

No merge commits. Rebase instead

(drop the last 2 commits, please and thanks)

@nahuhh
Copy link
Contributor

nahuhh commented Aug 7, 2025

Dropping merge commits isnt as easy as an interactive rebase.

I suggest you drop them before making further commits

@kamimoridev
Copy link

Why isn't this solution accepted yet? Are there problems other than building static binaries? If there is docker-android CI workflow, do we need to care about it? Things like p2pool only download binaries for non-android systems. Does this issue still need developers and monero bounty is available for new bountyhunters?

@everoddandeven
Copy link
Author

Dropping merge commits isnt as easy as an interactive rebase.

I suggest you drop them before making further commits

Sorry, I just saw it, I'll fix it this afternoon, thank you @nahuhh 🙏

@everoddandeven
Copy link
Author

Why isn't this solution accepted yet? Are there problems other than building static binaries? If there is docker-android CI workflow, do we need to care about it? Things like p2pool only download binaries for non-android systems. Does this issue still need developers and monero bounty is available for new bountyhunters?

I'm currently just fixing the static build for Windows and Linux. I already have the fix locally for Linux and I'm currently working on the Windows one, so I don't think I need help anymore. There are a few details to iron out in this PR, but it's pretty much complete. I think I'll upload everything needed to complete this work today, thanks @kamimoridev

@everoddandeven everoddandeven force-pushed the feature/anonymity-networks branch from 0773e33 to ab3a49a Compare August 8, 2025 13:16
@everoddandeven everoddandeven force-pushed the feature/anonymity-networks branch from ab3a49a to a064b42 Compare August 8, 2025 13:18
@everoddandeven everoddandeven reopened this Aug 8, 2025
@everoddandeven everoddandeven force-pushed the feature/anonymity-networks branch 4 times, most recently from c5cdd61 to 94211a3 Compare August 13, 2025 23:28
@everoddandeven everoddandeven force-pushed the feature/anonymity-networks branch from 94211a3 to dbbcf5f Compare August 13, 2025 23:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants