早上用手機編輯搞爛了推文,不好意思。
※ 引述《kugwa (kugwa)》之銘言:
: 標題: Re: [閒聊] IOTA真的能實現足夠的算力嗎
: 時間: Wed Jan 17 10:15:43 2018
:
: ※ 引述《grapherd (NULL)》之銘言:
: :
: : ※ 引述《MRjk ()》之銘言:
: : : 首先非常感謝您提供的幾個連結
: : : 其實我之前也就已有加入"IOTA 愛好者中文社群"的FB社團
: : : 剛也再重新看過每一篇您所指引的連結
: : : 我覺得首先讓我們討論單純一點 拋棄掉3進位 hash function等其他問題
: : : 回歸到這討論串最一開始原po的問題
: : : "在IOTA網路中 沒有coordinator的狀態下
: : : 惡意攻擊者從一個IoT裝置所發出的交易A (經過PoW驗證了前兩筆交易)
: : : 如何能不被惡意攻擊者手上的另一個超強硬體所建構出來的雙花交易B(也經過了PoW驗證
: : : 了前兩筆交易 且還附加了更多交易在其後增加權重)蓋過去?"
: :
: : 你的問題......感覺問錯了?
: :
: : 你所給的題目定義的狀況下,這個超強硬體所構建出來的雙花交易B
: :
: : 才是整體網路所同意的交易啊。
: :
: :
: :
: : 當下當然兩筆雙花出來的時候會是雙花,
: :
: : (Bitcoin 也會有類似的狀況,假設一次出兩塊,裡面包含雙花交易的話)
: :
: : 但是等時間過去,
: :
: : 其他的節點經過 MCMC 在挑選 tips 的時候,
: :
: : 就會
: :
: : 這時後,A交易就會被當作是 invalid 或是 double spending
: :
: : 孤立在那邊啊。
:
: 同個系統狀態本來就不會雙花的兩筆交易同時存在
:
: 但是設想
:
: A已經被大家承認很久很久了
:
: A交易的賣方也交貨了
:
: 這時突然給你來個 B把A給超越
:
: 大家一致宣告A交易不算數
:
: 那A交易的賣方不就很幹 拿到的錢沒了 貨也大概拿不回來
這個問題已經回應過了,不會發生這樣的問題。
這種超久的 valid transaction V.S. 新出的爆幹 weight transaction
因為超久以前的 valid transaction 已經改變整個帳本的狀況
(地址總額,對方地址總額等)
因此根本不會有收到貨然後又被蓋掉的問題。
:
: 這也是比特幣的交易被收進block之後 最好等6個confirmations再當真的原因
:
: 因為這時候被翻盤的機率就小很多很多了
Bitcoin 1 confirm 不能當真,建議 6 個,實務 3 個的原因,
最主要的原因是有不錯大的機率出現同時有兩塊爆出來,
(看 explorer 很容易發現)
要等到其他 node 選擇一個,讓另一個變成孤立後,才能夠繼續長下去。
(當然也有為了防止 double spending 的問題)
:
: : 這也不會啊,當 A 交易已經被認同,節點內部的帳冊就會被改動了。後來出現的 B 交易只會被當作 invalid (假設 double spending,或是透支賬本) ,或是另外一筆新的交易 (假設創新交易)。
:
: 「當 A 交易已經被認同」
:
: 你要怎麼規定 什麼情況下去認同?
:
: IOTA這種靠Coordinator發出Milestone的可不算哦
:
: 因為這是靠Coordinator一人決定的
:
: 為什麼怎樣才算認同這件事很重要呢
:
: 因為 讓整個網路所有人都認同A交易 這件事本來就超級難
:
: 只要有那麼一瞬間 有一部分的人認同A 有一部份的人還沒認同A
:
: 然後這時候有人把B廣播出來
:
: 認同A的那一票人直接拒絕B
:
: 而剛剛還沒認同A的人把B收下來 最後還好死不死去認同B
:
: (可能B被一部分的人串的比較長)
:
: 這時網路就整個意見分歧了 而且再也無法轉回意見一致
:
: 導致這種災難的關鍵原因 就是你說的那種認同
:
: 你那種認同會強硬的認定某個交易是合法的
:
: 然後貿然排除跟他產生雙花的其他交易
:
: 結果就是有機會發生我上面說的情況 全網失去共識
先看白皮書:
It is important to observe that the iota network is asynchronous. In general, nodes
do not necessarily see the same set of transactions. It should also be noted that
the tangle may contain conflicting transactions. The nodes do not have to achieve
consensus on which valid[5] transactions have the right to be in the ledger, meaning
all of them can be in the tangle. However, in the case where there are conflicting
transactions, the nodes need to decide which transactions will become orphaned[6].
白皮書大方承認了這個問題。直言 node 之間本來就是非同步的狀況,
各自看到的 tangle 是不同的狀況。而且在 tangle 之中,本來就可以存在
conflict 的交易。當出現 conflict transactions 的時候,才需要去決定哪個是孤立的交易。
決定 conflict 的方式是運行 MCMC:
「看一個節點進行多次的 tip 選擇演算法,
接著觀察哪筆交易較可能被選到的 tip(間接)驗證。舉例來說:
假設跑了 100 次 tip 選擇演算法,有一筆交易被選到 97 次,我們便說它有 97% 的信心被驗證到。」
(from IOTA 白皮書中文版)
當然目前 mainnet 不是這樣就對了 XD
:
: 這就是為什麼區塊鏈是神解
4, 神解,不可否認。
:
: 他的作法就是不會排除任何互相衝突的區塊(e.g. 一個區塊含有A 另一個區塊含有B)
:
: 但是大家講好最長鏈的交易才算數
:
: (而且最長鏈受到算力保護 越久遠的區塊越不會被翻盤)
:
: 因而全網可以一直保持著一致 也就是達成共識
:
:
:
: 一般人看起來
:
: 區塊鏈可能就只是實現了一直以來難以達成的分散式網路中的信任的一項技術而已
:
: 但是他誕生的背後
:
: 其實有非常非常多複雜的情況
:
: 都被開發團隊考慮過了
:
: 可能是之前沒想到的漏洞 任何攻擊手段 任何可能導致的問題 之類的
:
: 這些情況被開發團隊反覆想到爛掉
:
: 想破頭才出現了最終版本
:
: 也就是比特幣
:
: 所以說區塊鏈的厲害之處
:
: 大概只有親自仔細咀嚼過各種課題:
:
: 「區塊鏈的這個部份為什麼要用這種作法?」
:
: 「如果不這樣做的話會怎麼樣嗎?」
:
: 才能更了解想出這東西的人到底有多天才
:
: