加密貨幣(去中心化帳本)

從 Nanopool 到 P2Pool:XMR 挖礦裡還沒熄滅的密碼龐克火種

字體大小

我其實從 2017 年以來就算是 XMR 礦工。這句話聽起來好像很硬派,但實際上沒有那麼困難,因為我長期使用的方式就是 Nanopool。原因也很樸素:當年帶我入門挖礦的前輩就是用 Nanopool,早期主要是挖 ETH,後來我也就延續那套習慣,接上礦池、看 dashboard、等累積到門檻後出金。

對一般礦工來說,這是很合理的選擇。Nanopool 這類中心化礦池有清楚的監控頁面、worker 狀態、收益統計、相對平滑的收入曲線,也不太需要理解挖礦背後那些複雜到有點煩人的細節。代價也明顯:出金門檻高(0.1 XMR)、礦池掌握帳本、礦工其實是在相信一個中心化服務會誠實記帳並定期支付。

Monero P2Pool 去中心化挖礦、側鏈與密碼龐克火種的首圖

以前我對這件事沒有太多執念。畢竟如果只是一兩台機器小挖一下,人生還有很多更重要的事情要煩惱,沒有必要每個地方都把密碼龐克精神拉滿。不過最近我開始更頻繁地使用 Codex。很多以前覺得麻煩的事情,例如跑 XMR 主網節點、跑 FCMP++ 測試節點、調 monerod 參數、看 log、接 RPC/ZMQ,突然都變成可以一步步摸索的工作台。

於是問題自然浮現:既然我都願意跑自己的 Monero 節點了,那有沒有可能也用比較去中心化的方式挖礦?

Monero 社群很常談隱私、自我託管、抗審查和節點自主,但現實世界中的多數礦工仍然使用傳統礦池。Solo mining 當然最純粹,但對小礦工來說基本上就是抽樂透——理論上你完全自主,實務上可能很久很久都沒有任何回報。於是我就掉進了 P2Pool 這個兔子洞。

P2Pool:古老理想的 Monero 版本

P2Pool 的概念源自 Bitcoin。2011 年 6 月,Forrest Voight(forrestv)提出了這個設計,目標是用 peer-to-peer sharechain 取代中心化礦池的記帳伺服器。傳統礦池是「礦工把 share 交給中心化 pool,pool 內部記帳,pool 挖到 block 後再付錢」;P2Pool 則讓礦工在一條低難度側鏈上記錄彼此的工作量,等礦池找到主鏈區塊時,直接按照最近一段時間的貢獻,把 payout 寫進主鏈區塊的 coinbase transaction。

這裡的設計美感很強。傳統礦池的邏輯是:請相信我,我會記帳,我會累積你的 pending balance,我會在你達到出金門檻後付款。P2Pool 則直接去掉了這層信任:沒有中心化營運商帳本,大家的貢獻被寫在 sharechain 裡,真正挖到 Monero block 時,獎勵直接從區塊本身支付到礦工的 XMR 地址。

所以 P2Pool 可以做到極低的 payout 門檻。它不從某個 pool wallet 提款給你,而是 block reward 本身就直接分配給 PPLNS window 裡的礦工。沒有 pool custody,沒有帳戶系統,沒有 pending balance,也沒有「請相信我們稍後會付款」這回事。

有趣的是,時至今日,Bitcoin 挖礦的去中心化努力已經走向其他方向——Stratum V2 job negotiation、DATUM、OCEAN、Braidpool 等新架構。反而是 Monero 這條相對小眾、隱私導向、CPU-friendly RandomX 的鏈,讓 P2Pool 仍然維持著相當有感的採用率。

一條主鏈、一條側鏈,再加一個 XMRig

實作上,P2Pool 的美感是有代價的。中心化礦池只要下載 miner,填 pool URL,填錢包地址,開始挖礦,然後看漂亮 dashboard。P2Pool 則更像一個小型基礎設施練習。

我最後跑起來的結構是:

monerod -> p2pool --mini -> xmrig

monerod 負責同步 Monero 主鏈,並透過 RPC/ZMQ 提供資料;p2pool --mini 連到本地 Monero node,加入 P2Pool mini 側鏈,並開一個本地 Stratum endpoint;xmrig 則負責真正做 RandomX hash,把工作交給本地 P2Pool。白話的資料流就是:

XMRig -> local P2Pool -> local monerod -> Monero network

這和 Nanopool 的體感完全不同。Nanopool 像使用 SaaS 服務,P2Pool 像自己在家裡架一小段金融基礎設施。你需要理解節點、ZMQ、P2Pool sidechain、XMRig、PPLNS、share window 和 variance。中心化礦池把複雜性收進後台,P2Pool 則把它們攤在你面前。

理想是要付 UX 成本的。這句話在自託管錢包、自己跑節點、自己備份 seed phrase 上成立,在 P2Pool 上同樣成立。

六小時窗口:公平、延遲與樂透感之間的取捨

P2Pool 最關鍵的概念是 PPLNS——Pay Per Last N Shares。它不看你總共在線多久,也不看某個中心化帳本裡累積了多少 pending balance。在找到主鏈 block 的那一刻,它往回看:誰在最近的 N 個 shares 裡有貢獻?各自權重多少?然後按比例把 block reward 分掉。

在 Monero P2Pool 的設計中,sidechain block target 約 10 秒,PPLNS window 為 2160 shares:

2160 × 10 seconds = 21,600 seconds ≈ 6 hours

所以時間窗口大約是六小時。這是一種設計取捨:窗口太短,小礦工更容易因為剛好錯過 block 而顆粒無收;窗口太長,payout 會被攤得太細,鏈上資料負擔也會增加。Monero 官方資料提到每個礦工 payout 在鏈上只需要 38 bytes,這個細節很能看出工程設計上的節制。

不過要注意,PPLNS window 的實際長度會因 hashrate 等因素動態調整(auto-adjustable)。以我查 p2pool.io API 的時間點(2026-05-14)為例,P2Pool main 顯示的 pplnsWindowSize 約 497,而 mini 仍為 2160。所以比較精確的說法是:mini 常見窗口約六小時,main 側鏈會因實際狀態改變。

對小礦工來說,這裡的心理體感很微妙。你可能看到 XMRig 顯示 accepted shares,但那只是 miner 把低難度工作交給本地 P2Pool Stratum server,不代表你已經找到 payout-eligible 的 P2Pool sidechain share。真正要看的是 P2Pool status 裡的 Your sharesP2Pool shares foundBlock reward share

如果這些還是 0,代表機器確實在算,但你還沒有進入那個會分錢的窗口。中心化礦池把 variance 平滑成 dashboard 上的一條線,P2Pool 則讓你看見:你其實是在和時間窗口、全網 hashrate、sidechain difficulty,以及自己的小小 CPU 算力賽跑。

Mini vs Main:小礦工別硬上主鏈側鏈

P2Pool 有 main sidechain,也有 mini sidechain。對我這種 MacBook Pro 等級的小 CPU miner 來說,mini 通常比較合理。

P2Pool main 總算力較高,找到 Monero block 的頻率較高;但正因如此,小礦工要在 main 上找到自己的 sidechain share 也更難。Mini 則反過來:share 較容易找到,但整條 mini sidechain 找到 Monero block 的頻率較低,payout 也較小。

這是很典型的 variance tradeoff:main 是比較難拿到入場券,但入場後比較常開獎、金額較大;mini 是比較容易拿到入場券,但開獎頻率較低、金額較小。對 1–5 kH/s 這種等級的小礦工,mini 才是能真的看到系統運作的選擇。

從投資報酬率來看,用 MacBook Pro 挖 XMR 可能不值得大書特書;但從理解 Monero 的角度來看,自己跑 monerod、跑 P2Pool mini、再接 XMRig,會讓你突然看懂很多以前只停留在口號層面的東西。

約 6% hashrate 的意義

我查 p2pool.io 即時 API 時(2026-05-14),Monero 主鏈難度約換算成 5.97 GH/s 的全網 hashrate,P2Pool main 約 328.7 MH/s,mini 約 26.7 MH/s,兩者合計約 355.4 MH/s,也就是約 5.96% 的全網算力。

6% 不是多數,但也絕對不是玩具。

在許多 PoW 鏈上,P2Pool 這類去中心化礦池早就淡出主流,甚至基本上都是低於 1%,接近被歷史保存起來的技術遺跡。Bitcoin 的 P2Pool 是這個概念的源頭,但今日 Bitcoin 挖礦已經高度產業化——大礦工、大礦場、FPPS/PPS 礦池、專業化託管、ASIC 供應鏈和電力資源主導一切。

Monero 卻不太一樣。RandomX 讓 CPU 挖礦仍有意義,隱私文化讓「不要相信中心化服務」不只是口號,而 P2Pool 則剛好提供了一條介於 solo mining 和中心化礦池之間的路。你不用像 solo mining 那樣完全抽樂透,也不必把記帳和 payout 交給中心化礦池;你可以用一條 sharechain,把小礦工的貢獻組織起來,由區塊本身完成分配。

它比較難用,收益比較不平滑,也不適合只想打開 dashboard 看數字的人。但它活著,而且不是象徵性地活著。超過 5% 的 hashrate 在那裡,就像一個頑固但仍在燃燒的火種,提醒大家 Monero 和很多鏈確實不太一樣。

Nanopool 的舒適,與 P2Pool 的粗糙

我不想把 Nanopool 這類傳統礦池講成邪惡勢力。那太簡化了。

傳統礦池確實有產品優點:監控清楚、收入平滑、設定簡單、worker 管理方便,對小礦工尤其友善。你不用理解 sharechain,不用擔心自己找到 share 後六小時內 pool 有沒有出 block,也不用在 terminal 裡看 Your shares = 0 然後懷疑人生。

但舒適通常有代價。你用中心化礦池換到的,是把記帳、監控、出金和部分風險交給池子。你相信 pool 不作惡、不被關掉、不亂改 payout、不被監管壓力影響、不因政策或營運問題讓你卡住。畢竟我是真挖過關閉的 XMR 中心化礦池,最終投入算力都成空。

P2Pool 反過來。它給你的是透明與最小化信任。沒有漂亮帳戶系統,沒有中心化 pending balance,也沒有一個 pool wallet 在那裡幫大家保管收入。它把複雜性還給使用者,也把權力還給使用者。

密碼龐克世界裡反覆出現的老問題就是這個:你要方便,還是要自主?你要平滑體驗,還是要少一個中介?正常人當然多半會選前者,這我完全理解。畢竟人生已經夠累了,不是每個人都想和 monerod、ZMQ、P2Pool、XMRig 奮戰。但總要有一群人願意選後者,否則「去中心化」就會慢慢變成交易所頁面上的一個行銷詞。

從 2017 礦工到重新理解 Monero

回頭看,這次 P2Pool 探索有一種奇妙的時間感。

2017 年我開始接觸 XMR 挖礦,那時候更多是沿用前輩的路線,挖礦像是一種進入加密世界的入口。Nanopool 給了我較低的入門門檻,讓我知道算力如何變成小額 XMR,也讓我在很早期就和 Monero 產生實際連結。(當時就是挖 ETH 和 XMR,後來 ETH 變成 PoS 就是後話了)

多年後,我已經不只是把 XMR 當成一個可以挖的幣,而是把它放在隱私、抗審查、數位現金、量子時代安全性、FCMP++ 和主權個人這些更大的框架裡理解。這時候重新回到挖礦,感覺已經不只是「能不能多賺一點 XMR」,而是「我能不能真的把自己接到這個網路的底層」。

今年 Codex 的進步也幫了不少忙。以前看到一串 command 和 log,我可能會想算了先用熟悉的方式;現在則更敢把手伸進機器裡,一步步拆解問題。

結語:舊火種還沒熄滅

P2Pool 最迷人的地方,不在於它能讓小礦工賺多少錢。以 MacBook Pro 等級的小算力來看,短期收益本來就不會多漂亮,variance 還很大。

真正迷人的地方是:它讓挖礦這件事重新接回密碼龐克精神。

Payout 直接進入 Monero block,而不是等 pool 之後付款。Sidechain 記錄最近的工作量,而不是靠中心化帳本平滑一切。使用者要跑主鏈節點、跑 P2Pool sidechain、跑 XMRig,承擔粗糙與不方便——decentralization 在這裡是一個動詞,不是網站首頁的形容詞。

這種東西不會成為最大眾的 UX,甚至也不應該假裝它很輕鬆。但它的存在很重要。每一個願意跑 P2Pool 的礦工,都在用一點點算力證明:挖礦不必只走向中心化 SaaS,隱私幣不必只停留在交易與持有,Monero 的網路底層仍然有人願意用自己的節點和 CPU 接住它。

所以我看著那約 6% 的 hashrate,感覺不只是數字。這是 XMR 和許多 PoW 鏈不同的地方,也是密碼龐克精神的傳承。更準確地說,這大概是 2011 年從 Bitcoin P2Pool 年代點起來的火,繞了一圈之後,在 Monero 這裡仍然沒有熄滅。

值得紀錄。

參考與查核