IOTA Snapshot 運作方式解說

IOTA Snapshot (快照) 是一種將整體 Tangle 壓縮為地址與餘額 Pair 的一種節省 Tangle 使用空間的技術。當整體 Tangle 被 Snapshot 後,Snapshot 前的交易紀錄將不會被保存下來,而整個 Tangle 會基於這個 Snapshot 增量處理後續出現的交易。

Snapshot 運作方式解說

我們在這邊想像一個小的 Tangle 網路,來模擬 Snapshot 的狀況。

假設 Tangle 中共有 5 個地址,分別持有下列數量的 IOTA:

  1. AABCBB…..: 100
  2. BHCEGM…: 10
  3. CDBBCG….: 0
  4. QZMXLO…: 50
  5. YVMA9O…: 1000000000

在這個 Tangle 中,曾經進行過這些交易,為了簡化模型,Bundle 不會把剩餘的 IOTA 移出送出的地址 (容我後面講解這個部份):

  • AABCBB -> BHCEGM: 給予 50 IOTA (Bundle: AABCBB -50, BHCEGM +50)
  • BHCEGM -> QZMXLO: 給予10 IOTA (Bundle: BHCEGM -10, QZMXLO +10)
  • YVMA9O -> AABCBB: 給予 1 IOTA (Bundle: YVMA9O -1, AABCBB +1)
  • CDBBCG -> YVMA9O: 給予 0 IOTA (不要忘記 IOTA 可以送 0 value 的 transaction,而且 0 fee!)
  • CDBBCG -> CDBBCG: 給予 0 IOTA
  • CDBBCG -> AABCBB: 給予 0 IOTA

經過這些交易後,整個 Tangle 的地址餘額會變成:

  1. AABCBB…..: 51
  2. BHCEGM…: 50
  3. CDBBCG….: 0
  4. QZMXLO…: 60
  5. YVMA9O…: 999999999

要注意的是,雖然 Tangle 內地址的餘額有變化,但是上述的交易紀錄 (Transaction Hash, Bundle…etc) 還是儲存在 IRI 的 Database 之中。在 IRI Database 中有維護地址的 diff 紀錄,來追蹤每個地址的餘額。

接著 IOTA foundation 進行了一次 Official Snapshot 後,會產出兩個檔案,分別是Snapshot.sig以及 Snapshot.txt。前者是用來驗證後者是否是由 Coordinator 簽署,並且保證了檔案的完整性。後者則是這次 Snapshot 的結果,格式如下:

是一個簡略的 Key-value pair,分號前代表的是地址,後面代表的是地址餘額。

你可以發現到,除了所有的 transaction 紀錄都不見之外,餘額為 0 的地址也會被剔除掉。

Snapshot 評估:

  • 優點:透過 Snapshot 就能夠縮小整個 Tangle 所需要的儲存容量
  • 代價:犧牲掉整體 Tangle Transaction 紀錄。

而在 IOTA Roadmap 中,共有兩項與 Snapshot 有關。

  • Automated Snapshotting: 目前的 Snapshot 都是手動進行,Roadmap 中希望可以自動作到 Snapshotting,目前進度為開發以及測試中。
  • Permanodes: 前面提到,Snapshot 會讓以前的 Transaction 紀錄消失,Permanodes 則是類似儲存節點,即使 Snapshot 後,Permanodes 還是會有所有的 Transaction 紀錄。

如果你覺得這篇文章不錯,歡迎打賞 IOTA:MUYIDBBJZHJMSTMQZGHUSSGCKBBKRDKHQRNMLZONXPFYWSBCFOKEYOHBYFZKLVVFDTG9AOSZCBPUDWGTBNXYUDTDOD

Leave a reply:

Your email address will not be published.