Russell Yanofsky 將比特幣核心分離為獨立節點、錢包和 GUI 程序的工作背後的動機是什麼?
Russell Yanofsky 將比特幣核心分離為獨立節點、錢包和 GUI 程序的工作背後的動機是什麼?流程分離有哪些優勢?
將比特幣核心拆分為單獨的節點、錢包和 GUI 程序對使用者和開發人員都有好處。
正如 Alyssa Hertig在這裡概述的那樣,對使用者的好處將是能夠在與比特幣核心錢包不同的機器上執行比特幣核心節點,而不是被迫在同一台機器上執行它們。使用者可以讓節點在後台持續執行,但可以根據需要啟動和停止錢包和 GUI。它還開闢了在比特幣核心節點上使用不同(即不是比特幣核心)GUI 或錢包的前景。
對於 Bitcoin Core 開發人員,Yanofsky強調可維護性和安全性是關鍵優勢。
程序分離將使比特幣核心更易於維護,因為它在程序邊界定義了介面。程式碼的不同部分可以通過相互呼叫而不是共享狀態進行互動。這有助於更輕鬆地辨識程式碼部分之間的依賴關係,從而幫助程式碼審查。在程式碼庫中定義邊界也將使程式碼審查更具可擴展性,因為審查者只需要很好地理解程式碼庫的一部分,而不是需要理解整個程式碼庫之間的相互依賴關係。
從安全形度來看,錢包和節點程式碼可以以不同的權限執行,而漏洞應該更難被利用,因為它們將被限制在單個程序中。程序間通信 (IPC) 提供了新的調試工具,例如 IPC_DEBUG 環境變數來記錄所有 IPC 呼叫。
亞諾夫斯基強調了一些潛在的缺點。程序間通信通常較慢。IPC 程式碼可能很難編寫,並且可能存在錯誤。糟糕的介面和不必要的抽象層會使實現新功能變得更加困難。跨流程邊界的 SPV(簡化支付驗證)等功能可能更難建構。
[編輯:ariard 認為ZeroMQ庫使得編寫 IPC 程式碼相對容易。他還認為,與作為單個程序的臃腫程式碼相比,乾淨的介面不會使實現新功能(例如 SPV)變得更加困難。]
總的來說,利大於弊似乎很明顯。在撰寫本文時(2020 年 8 月),還有四個 PR需要審核並合併到 Bitcoin Core,然後 Bitcoin Core 應該是多程序的!
有關流程分離項目的更多詳細資訊,請參見此處。