發生什麼:家用節點連不進來,開發者想讓它們互相打洞
比特幣開發者論壇 Delving Bitcoin 上,研究者 0xB10C(b10c)在 2026 年 5 月 11 日開了討論串,問能否用 TCP 打洞(hole punching)讓兩個躲在家用路由器 NAT 後方、平常無法被連入的比特幣節點直接互連。他在首帖就說明,這不取代一般的連入/連出連線,也不取代自動埠映射,而是「盡力而為」的額外連線;距離標準化提案或實作都還很遠。
這個討論串在 10 月 13 日(UTC)後重新熱起來。0xB10C 表示正著手撰寫規格與在 Bitcoin Core 上的實驗性實作,並把先前討論過的做法整理成四種:第三方協調節點、用自己的 Tor 隱藏服務收請求、配對池,以及「滿載時把被踢掉的連入節點互相介紹」。10 月 16 日他再提出第六種「無協調者」方案。截至 10 月 22 日(UTC),討論仍在進行,最新一則是 ajtowns 回應位址轉發機制不適合這種用途。
原始證據:預設開啟 NAT-PMP 一年,住宅可連入節點幾乎沒增加
背景是 Bitcoin Core v30.0 的一項改動。PR #33004 於 2025 年 7 月 23 日合併、列入 30.0,把 -natpmp 預設改為開啟,讓支援 PCP 或 NAT-PMP 的家用路由器能自動開埠,期望更多家用節點可被連入。0xB10C 在 2026 年 4 月 28 日於比特幣網路營運社群 BNOC 發表分析:他用 bitnodes.io 從 2025-07-10 到 2026-04-27 共 36,310 份網路快照,手動挑出 58 個住宅 ISP 的自治系統號碼(ASN),以 v30.0 發布日 2025-10-10 為基準比較。
結果是這些住宅 ISP 內可連入節點總數只增加約 100 個;其中 v30.0 以上版本增加約 800 個、v29 以下或其他實作減少約 700 個,代表多半是升級換版而非新節點。他另指出 8 月到 v30.0 發布前就已增加約 200 個,結論是預設開啟 -natpmp 並未帶來住宅節點增加。他也提醒 IPv4 與 IPv6 位址分開計算,數字可能偏高。
另一份 BNOC 數據提供了問題的另一面。0xB10C 在 2026 年 6 月 18 日分析自家觀測節點的連出成功率:每個節點每小時約嘗試 57 次連出,IPv4 成功率自 2026 年 4 月起低於 20%、約 15%,Tor 約 65%。討論串中 jonhbit 據此主張,誠實節點比攻擊者節點更難被連到,會讓攻擊者在搶佔連出槽位時佔便宜,所以打洞值得做。
新方案怎麼運作:用下一個區塊決定誰連誰
TCP 打洞的原理是兩端幾乎同時向對方的公開 IP 與埠送出 SYN,讓各自的 NAT 建立放行規則,最後完成 TCP 的「同時開啟」。它只在 RFC 4787 所說的端點無關映射(EIM)NAT 下可行;對稱型 NAT、電信級 NAT 與多數行動網路則不行。討論串中多位開發者用 0xB10C 的檢測工具回報家中網路類型,家用光纖、有線多屬 EIM,校園網路與部分 Docker 環境則是對稱型。
0xB10C 的第六種方案把打洞需要的兩件事拆開:時間由區塊決定,位址由「公告板」轉交。想參與的節點產生一把短期公鑰,連到幾個可被連入、自願當公告板的一般節點,報上自己的 IP 與埠;公告板只核對報上的位址是否與實際連線來源一致,再轉給其他來訪者,不替人配對、不決定時間。每出一個新區塊,每個節點把雙方的 ECDH 共享祕密與區塊雜湊一起算雜湊值,挑數值最小的幾個對象同時發起連線;因為雙方算出的值相同,會在同一輪選中彼此。用尚未產生的區塊當鹽,是為了防止有人事先刷金鑰,讓自己永遠排在第一。
相關草案放在 0xB10C 個人的 BIP 分支,最新提交為 2026 年 10 月 17 日(UTC)的 Draft 0.4.6,作者欄為 TBD,提交紀錄標示與 Claude 協作撰寫;0xB10C 在論壇上說這份 LLM 撰寫的規格「還不適合人類閱讀」。它沒有 BIP 編號,也不是 Bitcoin Core 程式碼。
反對聲音:攻擊者可能更容易接近家用節點
主要質疑來自 Bitcoin Core 開發者 ajtowns。他在 10 月 17 日估算,若要對 10 萬個節點各維持 8 條連線約需 100 萬個活躍埠,但光是在位址交換階段,攻擊者只要同時掛出約 1 萬個位址就能在配對中排前面;在他的假設下,約 85% 的誠實節點前兩名配對都會是攻擊者。0xB10C 承認這是面對面討論時就提到的主要缺點,公告板只能要求攻擊者擁有大量真實 IP 或控制多個不同網段的公告板,提高成本而非消除風險;IPv6 位址便宜,還需另訂規則。
ajtowns 更根本的問題是:對沒有刻意設定公開 IP 的家用節點來說,接受陌生連入是否真是好事?他認為打洞可能讓攻擊者更容易直接連上誠實節點,增加被監看、阻斷服務或針對性攻擊的機會;家用網路被入侵的代價也比雲端主機高。他也指出現行位址轉發是為長期有效的位址設計,打洞資訊只在短時間有效,不適合沿用。這些都是他的論證與估算,並非實測結果。
AI 觀點分析與推論
AI 觀點:真正的問題不是能不能打洞,而是誰該被連到
我傾向認為,這個討論短期內最有價值的產出不是功能,而是逼開發者回答「家用節點該不該被陌生人連入」。BNOC 數據顯示自動開埠沒改變住宅節點的可連入性,代表靠路由器協定這條路大致走到盡頭;若社群仍想讓網路少依賴 Hetzner、AWS 這類資料中心節點,打洞是少數還沒試過的方向。但 ajtowns 的估算點出,任何讓陌生人更容易連上你的機制,對攻擊者也一樣方便,而目前所有方案的防禦都是「提高成本」,不是「排除攻擊者」。
受益最大的會是已在家裡跑節點、又無法或不願開埠的使用者,他們能多貢獻幾條連線;受影響的則是同一群人,他們的節點會多出新的被接觸面。我認為比較可能先落地的是 0xB10C 提的「選項 5」:用 RPC 指定與自己認識的節點打洞,不涉及陌生配對,風險邊界最清楚。若後續有人以模擬或實測證明公告板在大量真實 IP 攻擊下仍能讓多數誠實節點配到誠實對象,或 Bitcoin Core 出現可測試的 PR,我會調高對陌生配對方案的評估;在那之前,它比較像研究題目而不是路線圖。
下一步看什麼
目前一般節點使用者不需要做任何設定變更;這項技術既未發布,也沒有預設行為改變。
- 0xB10C 是否公開在 Bitcoin Core 上的實驗性實作或 PR,以及草案是否送進正式 BIP 流程。
- 公告板方案在大量真實 IP 攻擊下的模擬結果,尤其 IPv6 的限制規則。
- BNOC 是否在 v30.0 發布滿一年後重跑住宅節點統計;原文留言者曾建議 10 月再檢視。
- 連線類型如何定義:打洞連線算連入還是連出,會影響交易轉發與驅逐規則。




