📌 置頂: 請把任何比你弱勢的用路人當作你的至親對待。跟前車保持安全車距 (2秒以上)。

IOTA 輕量錢包、完整錢包與 IOTA Node 的關係

In

,

Tags:



by

這是一個困擾 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 請求會被劃分為四個指令:getTransactionsToApproveattachToTanglebroadcastTransactions 以及 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 登入的流程

  1. 檢查 IOTA Seed 是否合法 (81 字元,只包含 A-Z9等)。
  2. 確認 Seed 合法後,清除剪貼板的字元。
  3. 使用 Seed 產生出地址,以這些地址向 Host 請求餘額。
  4. 請求餘額成功後,畫面從登入頁面轉為主畫面,並且顯示餘額。

如此可以看出,最重要的一步就是第四步,只要 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 模式。


Comments

6 responses to “IOTA 輕量錢包、完整錢包與 IOTA Node 的關係”

  1. shao avatar
    shao

    Light Wallet 在登入時 是利用 seed + index 產出address 去查詢交易
    那Wallet 怎麼知道他的index 要產出到多少才能查到目前所有交易呢?

    1. louie.lu avatar
      louie.lu

      還記得從 wallet 建立 address 的時候,他要你 attach to tangle, 然後該個 address 下就出現一個 0i 的交易嗎 XD

  2. WEI, CHEN avatar
    WEI, CHEN

    是不是筆誤? lib.iota.py 應該是 iota.lib.py

    1. louie.lu avatar
      louie.lu

      4, 筆誤,應為 iota.lib.py

  3. Devin avatar
    Devin

    請問IOTA的地址只能允許一次性的交易,為什麼還會在文末加上IOTA的交易地址呢? 這地址能有效donate嗎

    1. louie.lu avatar
      louie.lu

      這個地址是自行撰寫的 wordpress plugin。會偵測該地址是否已經有 output transaction,如果有會換掉成一個新的。

      你可以到 thetangle.org 或是 iotasear.ch 查看該地址是否已經有轉出的交易。如果沒有的話,請放心的 donate 進去。

      (附註:所謂的只允許一次性交易,其意思為「該地址只能夠轉出一次」。在地址有轉出之前,對於接收是可以無限次數接收的。)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.