會想談這個是因為就連在產業裡做的人 , 也會有奇怪的理解
blockchain網路與分散式網路的不同
從技術上來講 , 沒有不同
甚至 blockchain 技術還要更深 , 因為要解決拜占庭問題
但從產權 , 所有權的角度看
就有很大的不同 , 而這不同對在blockchain上的應用是巨大麻煩
一般的分散式網路
就像 google 或 fb 那樣 , 網路上所有機器都是公司自己的
示意圖:
blockchain的網路
網路架構類似上面 , 但是網路中的 node , 都是不同人擁有的
示意圖:
node所有者是不同人的麻煩
由於 node 是不同人的 , 這就有很多麻煩
舉個例子 , 前同事負責維護 blockchain 的 node
與這 node 相連的 node , 有些很有趣
其中某些 node , 該 node 只開機週一到週五 , 週六與週日是休息的
沒錯 , 機器也要遵守勞基法
還有其他關掉 node 的例子 , 例如比特幣價格跌 , 礦機大量拋售
也代表整個網路的 node 變少了
從上可以注意到第一個問題 : server 是不穩定的 , 要提供 24/7 有難度
把 blockchain 當分散式資料庫的理由
考慮一個聊天用 tool 的架構 , 像 skype 那樣
示意圖:
server是分散式就變成這樣:
如果是用 blockchain 當 server , 就變成這樣:
會注意到與小明和小華連接的機器 , 一般公司與blockchain的架構
差異是在機器不是同個人所有
而 client 連到不同人擁有的 node 是很常見的
從 blockchain 當 server 的圖 , 可以知道
小明與小華的聊天紀錄 , 必須放在 block 內 , 才能互相傳送
對 node “Jay”來講 , 它並不知道 node “A”有跑甚麼程式
也不能影響 node “A”所跑的程式(除非駭進去XD)
這就使得必須以交易或 block 去傳送 data
所以 blockchain 當成資料庫來用 , 是一種沒有辦法的辦法
惡意 node 的影響
更麻煩的問題 , 在於惡意 node , 如下圖
由於 node “A”是惡意 node , 它可以玩起中間人攻擊
讓小明與小華都收到錯誤的聊天內容 , 從而達到攻擊者的目的
一般的共識機制並不處理這問題 (共識機制是處理帳本的)
換句話說 , 防偽是應用一定要考慮的一點
而一般公司分散式架構不需要處理這樣的問題
結論
從以上的例子 , 可以注意到 , blockchain 要做應用
還需要做很多的基礎建設 , 例如身份識別
以及許多優化
只能說還在摸索 , 說能落地還早得很
個人以為不必急著全用 blockchain作為應用的骨幹
部份使用是比較好的策略