wowlet: broadcast txs over Tor via wownerod --tx-proxy (gated on HAS_TOR_BIN; Config::broadcastOverTor default on) — hides tx origin IP, complements embedded-node receive privacy; activates when Tor is bundled (depends build)

This commit is contained in:
jwinterm
2026-06-18 20:34:14 -04:00
parent bf2d4e39bf
commit feeafbfdce
3 changed files with 16 additions and 0 deletions
+14
View File
@@ -77,6 +77,20 @@ void DaemonManager::start() {
if (conf()->get(Config::pruneBlockchain).toBool())
arguments << "--prune-blockchain";
// wowlet: broadcast our OWN txs through Tor — hides the originating IP (the embedded node already
// gives us scan/receive privacy; this closes the send side). Sync stays on clearnet for speed.
// wownerod queues local txs until the proxy is reachable, so it tolerates Tor still bootstrapping.
// Only when Tor is actually bundled (HAS_TOR_BIN) — --tx-proxy is exclusive, so without a running
// Tor it would silently stall broadcasts. Builds without embedded Tor fall back to clearnet relay.
#if defined(HAS_TOR_BIN)
if (conf()->get(Config::broadcastOverTor).toBool()) {
quint16 torPort = conf()->get(Config::useLocalTor).toBool()
? conf()->get(Config::socks5Port).toString().toUShort()
: conf()->get(Config::torManagedPort).toString().toUShort();
arguments << "--tx-proxy" << QString("tor,127.0.0.1:%1,16").arg(torPort);
}
#endif
qDebug() << QString("Starting wownerod: %1 %2").arg(this->daemonPath, arguments.join(" "));
m_process->start(this->daemonPath, arguments);
+1
View File
@@ -68,6 +68,7 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = {
{Config::runLocalNode,{QS("runLocalNode"), true}}, // wowlet: run own node by default
{Config::pruneBlockchain,{QS("pruneBlockchain"), false}}, // full archival by default
{Config::wownerodPath,{QS("wownerodPath"), ""}}, // optional override; bundled by default
{Config::broadcastOverTor,{QS("broadcastOverTor"), true}},// wowlet: --tx-proxy our txs through Tor (hide originating IP)
{Config::amountPrecision, {QS("amountPrecision"), 12}},
{Config::dateFormat, {QS("dateFormat"), "yyyy-MM-dd"}},
{Config::timeFormat, {QS("timeFormat"), "HH:mm"}},
+1
View File
@@ -76,6 +76,7 @@ public:
runLocalNode,
pruneBlockchain,
wownerodPath,
broadcastOverTor,
// Network -> Proxy
proxy,