net: I2P SAM v3 (--i2p-sam, --only-net=i2p) - #647
Merged
Merged
Conversation
5 tasks
rearden-grok
Bot
force-pushed
the
net/i2p-sam
branch
from
September 20, 2026 02:03
c7be790 to
b36ab5d
Compare
rearden-grok
Bot
force-pushed
the
net/i2p-sam
branch
from
September 20, 2026 05:20
b318039 to
9d05b9b
Compare
rearden-grok
Bot
force-pushed
the
net/i2p-sam
branch
from
September 20, 2026 14:17
9d05b9b to
69bc056
Compare
rearden-grok
Bot
force-pushed
the
net/i2p-sam
branch
from
September 20, 2026 14:41
e4268b6 to
85b5914
Compare
rearden-grok
Bot
force-pushed
the
net/i2p-sam
branch
from
September 20, 2026 21:15
85b5914 to
bf3d7e1
Compare
rearden-grok
Bot
force-pushed
the
net/i2p-sam
branch
from
September 20, 2026 21:37
bf3d7e1 to
83ee8da
Compare
rearden-grok
Bot
force-pushed
the
net/i2p-sam
branch
from
September 20, 2026 22:09
83ee8da to
23a32ad
Compare
Display is Core-shaped {52}.b32.i2p:port. SOCKS still refuses I2P
until SAM exists; Direct onion path is unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com>
HELLO + SESSION CREATE once per process; each STREAM CONNECT is a new SAM socket with the session id. Bad HELLO is an error. No live i2pd. Co-authored-by: Cursor <cursoragent@cursor.com>
learn_addrv2 already mapped AddrV2::I2p. Persist the .b32.i2p token so a restart still has the destination when SAM is configured later. Co-authored-by: Cursor <cursoragent@cursor.com>
Omitted SAM ADDR is 127.0.0.1:7656. only-net=i2p without --i2p-sam is a start error. Start opens one SAM session; Direct still refuses I2P dial. Co-authored-by: Cursor <cursoragent@cursor.com>
Persist {datadir}/i2p/p2p.priv from SESSION CREATE DESTINATION. --listen=0
is a Config error: overlay incoming still needs a loopback P2P listener.
Co-authored-by: Cursor <cursoragent@cursor.com>
NixOS i2p.sam / i2p.acceptIncoming are first-class. Eval pins argv. Runtime dummy i2pd.service only for After/Wants; CI does not start i2pd. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
OnceLock kept a dead session id forever. Store DESTINATION, keep the control socket on reconnect, and retry STREAM CONNECT once on INVALID_ID. Co-authored-by: Cursor <cursoragent@cursor.com>
rearden-grok
Bot
force-pushed
the
net/i2p-sam
branch
from
September 21, 2026 03:01
23a32ad to
56ce20b
Compare
reardencode
added this pull request to stack #669
September 21, 2026 03:40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Plan 04 (
docs/personal-node-plans/04-i2p.md). Stacked on #646 (net/tor-control-hs).NetAddr::I2pround-trips BIP155AddrV2::I2pas{52}.b32.i2p:port; AddrMan / peers v2 keep I2P rows.HELLO/SESSION CREATE/STREAM CONNECTagainst a fake router (no live i2pd). Direct still refuses I2P dials.--i2p-sam [HOST:PORT](omit ADDR →127.0.0.1:7656).--only-net=i2pwithout SAM is a Config error.--i2p-accept-incomingpersists{datadir}/i2p/p2p.privandSTREAM FORWARDs to the P2P bind.--listen=0is a Config error naming--listen.i2p.sam,i2p.acceptIncoming;After/Wantsi2pd.servicewhen SAM is set. Runtime dummy unit only — CI does not start i2pd.IBD
spawn_peer/follow_dial_targetsremainSocketAddr; onion/I2P--connectparse and filter but do not yet drive IBD dials (same leftover as 02).Test plan
cargo test -p rbitcoin-net --lib i2p_cargo test -p rbitcoin-node --lib i2p_nix build .#checks.x86_64-linux.nixos-module-eval --no-linkcargo clippy --workspace --all-targets -- -D warningsnixos-module-runtimeDo not merge unless asked.
Made with Cursor