引言
在傳統的中心化比特幣礦池中,營運方通常負責選擇交易、計算礦工的工作量並管理支付。去中心化的做法可以將交易選擇權轉移給礦工,而像 P2Pool 這類點對點(peer-to-peer)設計則同時分散了獎勵協調的工作。對礦工而言,實際的改變取決於哪些功能被轉移:擁有更多模板控制權並不會自動帶來更低的費用、更低的支付波動性,或非託管式支付,而且自行運行本地挖礦基礎設施還會增加營運上的責任。
因此,這種區分並非非黑即白的二元對立。本文將拆解礦池所執行的各項功能,並比較「礦工自選模板」與「點對點礦池設計」之間的差異。
礦工為何加入礦池
比特幣的開發者文件將礦池挖礦描述為一種機制,讓礦工能以較低波動性獲得金額較小、頻率較高的支付,而非單獨挖礦;這是因為礦工提交的「share」可以證明部分工作量,即使他們並未找到完整區塊。一個有效的 share 須滿足礦池自訂的 share 目標值,但未必符合比特幣網絡的區塊目標值。礦池將其 share 目標值設定為比網絡目標值更容易達成(數值上更高)的水平,目的正是讓礦工能夠足夠頻繁地產生 share,以便被計量與獲得報酬,儘管實際找到區塊的情況十分罕見。(developer.bitcoin.org)
正是這種「share 與區塊」之間的區別,構成了大多數人對礦池「控制權」產生誤解的根源。礦池並不決定某個區塊在比特幣共識規則下是否有效;它決定的是其算力所朝向工作的候選區塊內容,以及如何將所提交的 share 轉換為獎勵分配。
傳統礦池中捆綁的四項功能
典型的礦池安排會將四項各自獨立的職責整合在一起:
- 區塊模板構建(Block-template construction)——選擇哪些交易納入候選區塊,並組裝礦工進行雜湊運算所針對的區塊標頭。
- Share 驗證與獎勵計算——接收提交的 share,驗證其是否符合礦池目標值,並根據礦池的支付公式計算每位參與者的貢獻度。
- 支付管理——依照礦池的結算規則,為帳戶記入餘額並處理提現。
- 挖礦基礎設施——運行 Stratum 端點、代理伺服器、監控及容錯移轉(failover)系統,以維持算力的連接。
在傳統的 Stratum v1 礦池中,礦池通常同時掌控上述四項功能。比特幣的開發者文件指出,與 getblocktemplate RPC 不同,使用標準 Stratum 的礦工無法查看或在其所挖的區塊中加入交易——礦池提供任務(job),而礦工的硬件只是針對該任務尋找有效的 nonce。(developer.bitcoin.org)
去中心化礦池模式實際改變了什麼
有些做法將區塊模板構建去中心化,但仍將獎勵計算與支付工作交由營運方負責。另一些做法則同時分散了 share 與獎勵的協調工作。這些對礦工而言是截然不同的改變。
Stratum V2 任務聲明協議(Job Declaration Protocol,JDP)。 根據此規範,礦工或礦場可運行一個「任務聲明客戶端」(Job Declarator Client),該客戶端從「模板提供方」(Template Provider,通常是本地運行的 Bitcoin Core 節點)接收候選模板,並將該自訂任務聲明給礦池端的「任務聲明伺服器」(Job Declarator Server)。礦池仍可按照其既有的支付規則,繼續驗證 share 並分配獎勵。這種設計讓礦場層級的客戶端可以服務多台下游 ASIC 設備,而無需每台設備各自運行節點。(stratumprotocol.org)
DATUM。 此實作方式將模板構建與區塊提交工作,轉移至由礦工自行運營、並與礦工自有比特幣節點配對的網關(gateway),而支援 DATUM 的礦池仍負責協調獎勵分配。根據該項目的官方代碼庫,礦工保留交易選擇權,但其所貢獻的礦池工作仍須滿足礦池的會計要求,包括為獎勵分配所需的指定 coinbase 交易輸出。該代碼庫目前將此軟件標示為公開測試版(public beta),這對任何評估正式生產環境使用的礦工而言,都是一項值得注意的限制。(github.com)
P2Pool。 這種點對點設計超越了「礦工自選模板」的範疇。節點維護一條共享的工作量證明 share 鏈(稱為 sharechain),並驗證所提議的工作是否包含必要的支付內容。當找到一個比特幣區塊時,其 coinbase 交易會依照 sharechain 的獎勵規則,直接向參與的礦工支付報酬,而非依賴中央營運方來記帳及處理提現。運行本地 P2Pool 節點同樣需要一個比特幣節點。這不僅改變了模板構建方式,也改變了獎勵協調與支付路徑;但這並不保證支付波動性會較低。(P2Pool 項目文件,P2Pool 代碼庫)
哪些事情不會自動改變
礦工獲得對區塊模板的控制權,並不會自動獲得:
- 更低的礦池費用;
- 非託管式的支付路徑;
- 更低的支付波動性;
- 消除礦池作為獎勵記帳對手方的角色;
- 更少的營運責任。
提供支援的礦池依然可以要求特定的 coinbase 輸出、強制執行模板規則、驗證每一筆提交的 share,並一如既往地運作其結算系統。獎勵計算與支付管理,是與模板控制權各自獨立的產品決策;礦工不應假設,採用模板去中心化的連接方式,就會改變獎勵支付的方式或時間。
ViaBTC公佈的BTC派發規則正好說明了這種分離。PPS+方式對區塊獎勵部分採用PPS邏輯,對交易手續費部分採用PPLNS邏輯,兩者各自收取不同費用;PPLNS方式則對兩個部分皆採用PPLNS邏輯。根據ViaBTC的PPLNS計算方式,礦工的獎勵份額是根據過去五個難度輪次中所貢獻的share計算得出,並於礦池所挖出的區塊達到六次確認後進行結算。這些均為ViaBTC特有的政策,而非通用的協定規則,而且其中沒有任何一項說明是誰負責構建區塊模板——那是連接架構層面的問題,與所選擇的派發方式無關。(support.viabtc.com)
實務比較
P2Pool一欄描述的是透過礦工自行運作節點來參與的方式。
| 決策範疇 | 傳統礦池 | 支援礦工自選模板的礦池 | P2Pool點對點設計 |
|---|---|---|---|
| 區塊模板構建 | 由礦池端負責 | 由礦工或礦場端負責,透過本地節點或模板提供者 | 本地節點 |
| 交易選取政策 | 遵循礦池政策 | 可在礦池要求範圍內,遵循礦工自己節點的政策 | 遵循本地節點的政策,但須受限於有效的sharechain工作量 |
| Share驗證 | 礦池端 | 通常仍由礦池端負責 | 本地驗證,並由對等節點驗證sharechain share |
| 獎勵核算 | 礦池端 | 通常仍由礦池端負責 | 透過sharechain規則分配 |
| 派發管理 | 礦池記錄餘額並處理提領 | 可能仍由礦池端負責,視礦池而定 | 透過所挖出區塊的coinbase交易支付獎勵 |
| 區塊提交 | 通常由礦池端負責 | 可能透過礦工自己的節點提交 | 透過參與的節點 |
| 營運複雜度 | 對礦工而言較低 | 較高:需要節點、閘道/代理、監控及軟件相容性 | 需維護Bitcoin節點、P2Pool軟件及對等連線 |
實務上的重點在於:派發設計與模板控制權是兩項各自獨立的選擇。礦工可以根據費用結構與可承受的波動程度來選擇派發方式,同時另行評估某礦池是否支援礦工自選模板,以及運作節點、閘道並監控該連線所增加的營運負擔,對其營運而言是否值得。
礦池歸屬數據並不等於模板控制權
礦池歸屬數據描述的是已挖出的區塊是如何被歸屬到各礦池名下,但其本身並不能說明是誰在每個區塊中選擇了交易、誰擁有這些ASIC,或是誰永久掌控了所貢獻的算力。
當礦工在參與礦池獎勵系統的同時自行構建模板時,這種區別便顯得重要。舉例而言,DATUM將模板構建保留在礦工的節點端,同時仍需要礦池提供派發資訊及主要coinbase標籤。因此,一個被歸屬於某礦池的區塊,其中的交易仍可能是由礦工所選取。(DATUM Gateway文件)
若要評估模板控制權的集中程度,區塊歸屬數據還需要額外的證據,以說明這些區塊的模板究竟是如何構建的。僅憑礦池排名,無法證明這種集中程度。
如何評估一個礦池
比較不同礦池選項的礦工,或許會發現將評估拆解為幾個獨立問題較為有用,而非將「中心化對比去中心化」當作單一標籤來看待:
- 獎勵方式與費用。 該礦池採用的是PPS、PPS+、PPLNS,還是其他方式?每個獎勵組成部分各自適用什麼費用?
- 結算條件。 在share轉換為入帳餘額之前,需要滿足哪些確認數要求及回溯窗口期?
- 連接架構。 該特定礦池端點是否透過Stratum V2 Job Declaration或同等機制支援礦工自選模板?又需要哪些額外的軟件或硬件?僅僅支援Stratum V2本身,並不保證就能實現礦工自選模板:某個部署可能只使用Mining Protocol,而不涉及交易選取功能。(Stratum V2規範)
- 營運支援。 該礦池為其標準Stratum端點提供了哪些容錯路由、監控機制及正常運作時間的歷史紀錄?
- 安全控管。 該礦池提供哪些帳戶層級的保護措施——例如雙重認證、提領地址白名單、API金鑰權限——以便在不涉及模板控制權的情況下,獨立保障派發管理的安全?
以上這些問題,都無法僅憑某礦池是否自稱「去中心化」而得到解答。
結語
理解比特幣礦池去中心化的最佳方式,是將其視為把傳統礦池歷來整合在一起的各項功能予以拆分,而不是將整個礦池簡單貼上「是」或「否」的單一標籤。諸如Stratum V2 Job Declaration之類的協定,以及DATUM之類的實作方案,為礦工提供了一條有據可查的途徑,讓他們能夠自行構建區塊模板,同時仍繼續參與聯合挖礦的獎勵分配。P2Pool則更進一步,將share協調過程分散化,並將獎勵支付直接嵌入所挖出的區塊之中。這些差異無法僅憑礦池歸屬排名加以確立。模板控制權本身並不能決定礦池費用、派發波動性,或資金的託管方式;而運作本地節點與閘道,則為維持挖礦連線的穩定可靠增添了額外的責任。礦工在評估礦池時,應將模板控制權、獎勵核算、派發管理及基礎設施支援,視為四項各自獨立的決策,分別依其各自的優劣加以判斷。
常見問題
去中心化礦池是否代表我可以保管自己的比特幣?
不一定。像 Stratum V2 Job Declaration 及 DATUM 這類範本去中心化模式,通常仍依賴礦池進行份額驗證與收益結算;而派發管理方式——包括資金在提款前是否屬於託管性質——則取決於該特定礦池的規則,而非由誰來建構區塊範本所決定。
選擇由礦工自選範本的礦池,能否降低收益波動?
不能。收益波動主要取決於收益結算方式(例如 PPS+ 相對於 PPLNS)以及礦池規模,而非由誰建構候選區塊範本。這些屬於彼此獨立的設計選擇。
份額(share)是否等同於比特幣區塊?
不是。份額是針對礦池較低難度的份額目標所提供的工作量證明,用於收益結算。只有在極罕見的情況下,當該份額同時達到難度高得多的比特幣網絡目標時,它才會成為有效的網絡區塊。
使用範本去中心化的礦池模式,是否需要自行運行比特幣節點?
這視乎具體實作方式而定。DATUM 目前的文件要求礦工自行運行相容的比特幣節點及閘道(gateway)。而 Stratum V2 Job Declaration 則可於礦場層級部署,由一個工作宣告客戶端(Job Declarator Client)及範本提供者,為多台下游挖礦裝置提供服務。


