# IOTA TL;DR ###### tags: `Study` `Blockchain` :::danger 本區討論僅作為本人吸收後的摘要,故只會有大略描述,詳細內容仍得看藍色連結。 ::: --- ## 其他討論 :::success * [IOTA 不靠譜?](https://www.chainnews.com/articles/165332605290.htm) * [PTT kugwa 的 IOTA 系列文](https://www.ptt.cc/bbs/DigiCurrency/M.1516023368.A.1F1.html) ::: ## IOTA 為何需要 Coordinator ? ### 參考: :::info * https://iota.stackexchange.com/questions/1577/how-exactly-are-transactions-verified-and-confirmed-in-iota * https://iota.stackexchange.com/questions/1440/how-does-a-new-user-verify-hes-getting-the-correct-tangle ::: * 因為目前的 IOTA 網路 TPS 仍然很低,很容易被女巫攻擊導致主鏈切換,為了防止被攻擊,故使用 COO 每段時間發布一個 `milestone` 來紀錄當前的 Tangle 。 * 被 `milestone` 直接或間接指向到的交易都會進入 Confirmed 的確認狀態。 * 但 COO 是由 IOTA Foundation 發布的,因此會有中心化的缺點。 ## IOTA 是怎麼打包交易的 ? ### 參考: :::info * https://medium.com/@louielu/in-depth-explanation-of-how-iota-making-a-transaction-with-picture-8a638805f905 ::: * 一個 bundle 有數個 transaction ,連接上 Tangle 的交易是以 bundle 為單位的。 * bundle 內的交易都有 branch transaction hash 與 trunk transaction hash : * 同一個 bundle 的 bracnch 與 trunk hash 都是同一組,只是每筆交易指向不同 ![](https://i.imgur.com/mTdAJL4.png) ## 什麼是 Minimum weight magnitude (MWM) :::info * https://docs.iota.org/docs/iota-basics/0.1/concepts/minimum-weight-magnitude ::: * 是用於調整 PoW 難度的變數,MWM 越高,代表難度越難。 * 如果 MWM 為 9 ,代表計算出的 transaction hash 後 9 位 trit 要為 0 。 * 假如 Mainnet 的 MWM 為 14 ,則發布交易的 hash 必須要有大於 14 的 MWM ,否則被 reject 。 ## IOTA 如何才算 Confirm ? :::info * https://blog.iota.org/confirmation-and-%C9%91-100a85bce9c7 * IOTA 白皮書 ::: * `confirm` 可以視為要多久交易可以被接收者確定。 * 在有 COO 的情況下,任何被 COO 的 `milestone` 直接或間接 reference 到的交易都會被視為 `confirm` 。 * 但 COO 理論上是有權選擇要把 `milestone` 接到哪個交易,故有集中化的詬病。 * 在沒有 COO 的情況下,是透過計算 Confirmation Confident (CC)。 * 要知道某 tip 的 CC 的方式是一次跑很多的 random walker ,越多 random walker 走到該 tip ,那他的 CC 就越高。 * 例如跑 1000 次 random walker , tip 被走過 997 次,那可以說他的 CC 是 99.7% 。 ## 甚麼是 Masked Authenticated Message (MAM)? :::info * https://hackmd.io/@DsnbUcX9Tyi-Vn5MNyBM7g/HyxIu0asf?type=view#Ownership-of-Channel ::: * 簡單來說,是能夠讓 Tangle 的使用者找到所要的訊息的一種協定。分為 **Public mode**, **Restrict mode** 和 **Private mode** 。 * 會對 Tangle 中交易的 MAM section 做加密並可以被驗證是否為本人發送的。 * 以下為 Public mode 的概述 : ![](https://i.imgur.com/YFzcTqG.png =600x) * 發布者透過自己的 SEED 產生 Merkle tree ,該 Merkle tree 的 root hash 即是在 Tangle 中**第一代訊息交易的 address**。下一代需要再用同手法產生第二棵 Merkle tree 。 ![](https://i.imgur.com/DO9oFkq.png =600x) * 該 root hash 是 address 同時也是解密 trytes 的密鑰,解密後訊息會包含下一代的 root hash ,訂閱者可以依循 root hash 來找得到所有訊息。 * 可以透過解密後 trytes 的訊息來驗證 Merkle tree 是否正確,若為正確則表示此發布者是合法的。 ## IOTA 的 XY Attack :::info * http://www.tangleblog.com/2017/07/10/is-double-spending-possible-with-iota/ * https://forum.helloiota.com/469/XY-Attack-Vector-IOTAs-version-of-the-34-attack ::: * XY Attack 又被稱為 34% 攻擊,或是 IOTA 的 double-spend-atack 。 * 在 Tangle 之中,各節點的連線是 private 的,所以光能獲得全網大多數的 hash power 還不夠,還需要有足夠的節點連線。 * 以下為達成 Tangle 攻擊的幾點要素 : * 整體 `X%` 的 hash power 。 * 能夠有整體網路的概觀,也就是擁有所有在 Tangle 上節點的連線。(基本上不可能,因為連線都是私下連的) * 擁有整體網路 `Y%` 的連線,為了能將大量的 subtangle 給送出,需要有足夠多的連線。 * 即使擁有 99% 的 hash power ,但如果只有整體網路 5% 的連線,那樣的攻擊頂多只能使部分的 subtangle 被攻擊成功,其餘 Tangle 不受影響。 * 要擁有足夠的 `X%` 與 `Y%` ,那攻擊才會使整體網路受到影響。 * IOTA 基本上就是以==捨棄被攻擊的部分來保全其餘的 Tangle== 。( IOTA 就是會讓網路分裂! )