這是一個困擾 IOTA 新手的問題:究竟 Light wallet、Full wallet、Full node / headless node 有什麼差別?身為一個使用者/投資者,我應該要怎麼選擇?他們的優缺點各是什麼?要怎麼樣選擇才能保障我的 IOTA 資產?
本文將會介紹這三個概念,寄望您讀完後可以理解三者的差別,選擇自身合適的方案。
0x1 名詞定義
- IRI:全稱 IOTA Reference Implementation,以 Java 撰寫,為目前唯一可完整運行 Protocol 的 IOTA Node,基本上架設節點的話會使用 IRI 來用。作為 Reference Implementation,其餘的 Implementation 應該遵照 IRI 的行為來實做。
- Full Node / Headless Node:即運行一個完整節點的 Server,請注意,Full node / Headless Node 不一定是 IRI,只要是可以完整運行 IOTA 實做的都能夠稱作 Full node,只不過目前沒有其他的選項就是。
- Light wallet:沒有運行 Full node 的錢包。
- Full wallet:自己有運行 Full node 的錢包。
- Node configuration / Host:有關錢包使用的 Node 的設定,Host 是會使用的 Node 地址。基本上錢包八成問題的根源來自於 Host。
0x2 IRI / Full Node / Headless Node 的用途
IRI 就是運行 IOTA Tangle 的節點。IRI 負責的事項大致條列如下:
- RESTful API
- TCP Neighbors Connections
- UDP Neighbors Connections
- Broadcast New Transactions
RESTful API 負責處理來自錢包或是其他程式 Client (lib.iota.py, lib.iota.js …etc) 的請求。例如說一個錢包完整的發出 transaction 請求會被劃分為四個指令:getTransactionsToApprove
、attachToTangle
、broadcastTransactions
以及 storeTransaction
。也就是先向 Host 取得兩個 tips (trunk, branch) transaction,接著錢包會將 trunk, branch, 以及要發出的 transaction trytes 以 attachToTangle 送到 Host,讓Host 簽發 Transaction (也就是 PoW) (這步驟基本上會在本地執行,因為大多數的 Host 不會讓你用 PoW)。接著請求 Host 將這筆交易廣播給其他鄰居。最後將這筆 Transaction 存下來。
完整的 API Documentation 可以參考 IOTA API Reference。
TCP / UDP Neighbors Connections 負責處理與鄰居間的通訊,會從這個部份與鄰居建立連線 / 拒絕連線,交換 New Transactions 等動作。要記得,TCP 只會跟 TCP 做交換,UDP 只會跟 UDP 交換,所以交換鄰居的時候不要換錯了。
Broadcast New Transactions 前面提到的動作都可以在本地端完成,你只需要將最後算好的 Transaction Trytes 送給 Host 請它廣播出去即可。
0x3 Light Wallet 的用途
Light wallet 並沒有運行一個完整的 Node,因此他的資訊都必須要跟一個 Host 做溝通。透過前面提到的 RESTful API,Light wallet 可以在沒有 full node 的情況下查詢餘額、收款、轉帳等等的功能。
這也是為什麼很多時候 Light wallet 會看起來失效的原因。
「如果你連上一個沒有用的 Host,你的 Light wallet 肯定沒用」
簡單來說,大家應該都經歷過 Ptt 停機或是 Facebook 掛點的時候,你的瀏覽器連線進去 Ptt.cc 或是 facebook.com,可是當他們掛點的時候,你當然就不能用。同理,Light wallet 如果設定的 Host 失效或是掛點,你自然不能用他的功能。
這邊簡短介紹一下 Light wallet 登入的流程:
- 檢查 IOTA Seed 是否合法 (81 字元,只包含
A-Z9
等)。 - 確認 Seed 合法後,清除剪貼板的字元。
- 使用 Seed 產生出地址,以這些地址向 Host 請求餘額。
- 請求餘額成功後,畫面從登入頁面轉為主畫面,並且顯示餘額。
如此可以看出,最重要的一步就是第四步,只要 timeout 或是 Host 掛點,就會轉圈圈或是出現紅色框框寫 Connection refused 之類的訊息。
同理,如果登入後 Host 掛點,你也會有機會錢包沒辦法 attachToTangle,沒有辦法查詢最新餘額,沒有辦法匯款等。如果出現這樣的問題,你又想要確認你的資產,請到 thetangle.org 或是 iotasear.ch 上查詢你的地址餘額 (History -> Address),去確認款項有沒有被動過。如果你有好好看過前面的文章,想必不會出現什麼問題。
0x4 Full wallet 的用途
Full wallet 就是有自行運行 IRI 的錢包,透過這種方式,我們可以自己保證一定能夠使用錢包 (因為 Full node 是你自己管的),不會有網路延遲,或是 Node RESTful API 塞車的問題 (塞車是指太多人使用 API,不是 Transaction Confirmation 很久這種)。
不過問題是,你需要有 Java JRE 的環境,以及超過 5 個的鄰居,你的 Full wallet 才會有用。這代表你需要有 Public IP,或是設定過 Router 的 DMZ Zone 等等,技術難度比較高。
0x5 三者總結
- IRI / Full Node / Headless Node:
- 優點:
- 無 UI
- 可獨立當作 wallet 的 Host
- 運行 IRI 為 Tangle 網路的安全盡一份心力
- 作為實驗用 API
- 缺點:
- 需要設定 IP
- 需要自己尋找鄰居
- 需要儲存空間存放 Database
- 優點:
- Light wallet:
- 優點:
- 免設定
- 免去儲存空間的需求
- 下載即用
- 基礎防呆功能
- 缺點:
- 可不可用取決於選擇的 Host 是否可用
- 優點:
- Full wallet:
- 優點:
- 自我架設 Node,隨時可用
- Light wallet 的優點
- 缺點:
- IRI 的缺點
- 技術門檻較高,投資者/使用者不一定會想用
- 優點:
0x6 總結
本文整理了 Full node / Light wallet / Full wallet 之間的關係,同時以簡單的敘述方式解釋了 IOTA wallet 的原理以及可能會發生的問題及簡單的除錯方式。各位可以藉由本文選擇合適於自己的 IOTA wallet 模式。
Leave a Reply