本篇文章將帶領你建架設獨立的完整節點(Full-node)或是遠端節點(Remote-node)
錢包跟節點的關係?
一個完整的Monero錢包 = 區塊鏈同步程式 (節點) + 錢包工具程式
以上就是Monero錢包的基本架構,這就也是為什麼每次打開GUI錢包時會自動出現區塊鏈同步程式啟動的原因。 因為錢包的運作需要依賴區塊鏈同步程式將區塊鏈的資料經由點對點(P2P)的方式下載到電腦上,再經由錢包工具程式掃描在區塊鏈中屬於自己的可用餘額;而每當你需要發送交易時,則是透過錢包工具程式利用私鑰簽署完交易之後,再經由區塊鏈同步程式透過P2P的方式將交易廣播到網路上。因此,運作中的區塊鏈同步程式在Monero點對點的網路中就是扮演一個節點(node)的角色。
節點、完整節點、遠端節點 有什麼不一樣?
前一段提到的錢包節點,它所負擔的工作只有下載區塊鏈資料和廣播錢包發出的交易,這樣可以確保區塊鏈資料是經過自己驗證的,但是,這些區塊鏈資料是從哪裡來的呢? 就正是世界各地的完整節點(Full-node)們提供的,其實區塊鏈同步程式在啟動的時候都會嘗試著透過port 18080和網路上的其他節點溝通,所以只要port 18080是暢通的狀況下,區塊鏈同步程式除了下載區塊鏈資料以外也會同時上傳區塊鏈資料給其他需要同步的節點,此時我們就稱為這個節點為完整節點(Full-node),也就是對Monero網路提供了完整的支援工作。 而至於遠端節點(Remote-node)則是指區塊鏈同步程式單獨存在而沒有錢包工具在同一台電腦上的節點,錢包得透過網路與區塊鏈同步程式連結,如此一來,一個區塊鏈同步程式所擁有的區塊鏈資料就可以被好幾個錢包所利用,於是使用者就不需要在每一台要用錢包的電腦上放著一份動輒數十GB的區塊鏈資料庫,也可以省去每次重新下載區塊的等待時間。
架設獨立節點的好處
- 完整節點(Full-node)身負著去中心化的重責大任,線上的完整節點的數量越多,Monero網路也就越安全。
- 遠端節點(Remote-node)通常是長時間放置,隨時與區塊鏈100%同步,如此一來,當你隨時需要使用錢包時就可以連接上這個遠端節點,省去區塊P2P同步的冗長時間,只需要從遠端節點資料庫裡掃描餘額即可;此外,遠端節點也可以讓多個裝置共用,譬如手機和筆電上的錢包都可以透過同一個遠端節點來運作,本站的公共節點服務就屬於此類的節點。
在開始之前,請先至官方網站下載最新的Monero CLI錢包檔案,壓縮檔內即含有monerod.exe,基本操作的官方說明可參考這邊。
獨立完整節點(Full-node)架設方式
- 確認電腦上的tcp port 18080沒有被防火牆或防毒軟體阻擋。
- 確認路由器裡的port forward有被正確的將tcp 18080指向到該台電腦,並可能需要固定IP。
- 建立一個bat檔啟動monerod.exe,內容範例:
monerod.exe --db-sync-mode safe --block-sync-size 20 --fluffy-blocks --data-dir D:\路徑
- 讓monerod執行一段時間後輸入指令status查看,若有節點連入(in)則代表設定成功。
獨立遠端節點(Remote-node)架設方式
- 確認電腦上的tcp port 18081沒有被防火牆或防毒軟體阻擋。
- (若有從外網連結的需求才做) 確認路由器裡的port forward有被正確的將tcp 18081指向到該台電腦,並可能需要固定IP。
- 建立一個bat檔啟動monerod.exe,內容範例:
monerod.exe --db-sync-mode safe --block-sync-size 20 --fluffy-blocks --data-dir D:\路徑 --rpc-bind-ip 192.168.xx.xx --confirm-external-bind --restricted-rpc
- 等待節點完成同步後,即可使用錢包設定端節點至該遠端節點的IP,設定連接步驟可參考這篇文章。
啟動參數介紹
-
--db-sync-mode
此參數可設定模式,safe效能較差但資料安全性較高,fastest則反之。 -
--block-sync-size
此參數可以設定區塊同步批次容量,10-200皆可,可依網路狀況選擇。 -
--fluffy-blocks
此參數可啟用fluffy blocks功能,節省區塊傳輸時的網路使用量。 -
--data-dir
此參數可以指定區塊鏈資料儲存的位置,預設為C:\ProgramData\bitmonero -
--rpc-bind-ip
此參數須設定該台節點的IP。 -
--confirm-external-bind
此參數為允許外部錢包連入的必要參數。 -
--restricted-rpc
此參數可限制外部使用數個與安全性相關的API,建議使用。 -
--rpc-bind-port
此參數可更改預設的連入port 18081為指定數字。