实验2026年1月9日

Moonshot Miner

用 CPU 慢慢挖比特幣的桌面程式。機率渺茫如登月,所以叫 Moonshot。這輩子大概挖不到,但通知跳出來的那天一定很爽。

维护中ElectronNode.jsJavaScriptStratum ProtocolBitcoin

為什麼做這個?

對挖礦一直有好奇:它到底是怎麼運作的?Stratum 協議長什麼樣子?hash rate 和難度的關係是什麼?

比起看文章,直接做一個能跑的程式更能搞清楚。CPU 挖礦的效率當然完全沒有競爭力——現代 GPU 挖礦的算力是 CPU 的幾千倍——但這不重要,目的是理解。

然後就順手做成一個真的能跑在系統列的桌面程式,取名 Moonshot:連續中兩次樂透頭獎的機率,大概就是這樣。

功能

  • 真實 Stratum 協議:直接連到 solo.ckpool.org:3333,完整實作挖礦流程
  • 系統列常駐:背景低調運行,需要時才顯示狀態視窗
  • 懸浮狀態視窗:無邊框、半透明、always-on-top,隨時看算力
  • 精簡模式:只佔 ~130px 高的極小視窗,適合掛機
  • 系統通知:萬一哪天真的挖到了,Windows 會跳通知 🎉
  • 挖礦強度調整:控制 CPU 使用率,可以在背景輕量運行

技術架構

框架:Electron(跨平台桌面)

挖礦核心:純 JavaScript 實作 SHA-256 double hash + nonce 暴力搜尋

通訊:TCP socket 連接 Stratum server,完整實作 mining.subscribemining.authorizemining.notifymining.submit 流程

心得

寫這個的過程比預期有趣。Stratum 協議本身並不複雜——就是 JSON over TCP——但裡面的細節很多:endianness 轉換、coinbase transaction 的組裝、merkle root 的計算……每一個步驟都是在理解比特幣挖礦的實際運作。

最後打包成 .exe 安裝檔,放在桌面讓它默默跑著。偶爾看一眼算力數字,提醒自己這件事有多 Moonshot。