Codex changes: delegate hidden service management to the actual Tor
backend instead of generating keys the wallet never served. The new
AttachToBackendService() reads the hostname Tor creates, and the
torrc/process plumbing properly gates HiddenService directives behind
the -torhiddenservice flag.
Additional fixes:
- Back up hs_ed25519_secret_key (96 bytes) to wallet.dat so the onion
identity survives deletion of tor_data/
- Restore the key before Tor starts so the same .onion address is
regenerated automatically
- Add ThreadTorMaintenance: checks Tor health every 30s, auto-restarts
with exponential backoff on crash, re-attaches the hidden service
and re-registers the onion address with AddLocal()
- Seeder maintenance: every 30 min re-announces to peers and refreshes
known seeder lists (when -torseeder is enabled)
- Clean up ScheduleSeederReannouncement() stub (real work now in thread)
- Respect -torsocks port in onion proxy registration
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds CTorProcess which finds and launches an external Tor binary as a
subprocess, providing a SOCKS5 proxy on port 19099 and a v3 hidden
service on port 24112. The wallet auto-detects Tor from common install
locations or the app directory. Falls back gracefully to clearnet-only
if Tor is not found. Also fixes Tor-only network restriction that
blocked IPv4/IPv6, and bumps version to 5.1.7.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>