通常軟體或是協定真的要分層,有兩個理由:
(1)簡化問題讓每一層的架構都"只需要負責自己的事情"
譬如像是Internet就是這樣的絕佳例證。從一開始就規畫是分層架構。
OSI模型還給Internet分到七層,但是TCP/IP實作上只分到四層。
應用層需要管傳輸層在搞啥嗎?不用嘛。Port開好了,訊息丟出去就對了。
傳輸層需要管網路層在搞啥嗎?不用嘛。我OS只要管封包的正確性就好。
網路層需要管實體層在搞啥嗎?不用嘛。我Router上的軟體只要管正確地往下hop傳。
實體層需要管上面的三層在搞啥嗎?不用嘛。就是照當初規定的調變方式解析訊框而已。
整個架構就是這樣的明確,我上層不用管下面再搞啥。
閃電網路有這樣明確的架構嗎?
只能說真是一大盤通心麵啦。 https://tinyurl.com/y4bx68a2
現在真的假設on-chain交易是第一層,off-chain交易是第二層。
我第二層交易的閃電網路竟然還要去監聽和解析第一層,搞清楚第一層發生啥事。
不然萬一我的counterparty廣播出舊的channel status竊取通道資金怎辦?
所以完整的閃電網路節點無法不管第一層,搞得要玩閃電網路要先裝Bitcoin Core。
新使用者真的要玩閃電網路,要on-boarding兩次。第一層一遍,第二層又一遍。
本來我五分鐘就可以教會一個新使用者來玩Bitcoin。
結果現在我要花五十分還不一定教得會,可參看我之前的閃電網路教學文。
https://www.ptt.cc/bbs/DigiCurrency/M.1544375143.A.49B.html
這到底簡化到哪邊去了
我PC要上網,不用自己也跑Internet的BGP協定啊
假如真的依照Internet那種分層規劃,應該是封包來了,我只需要做自己負責的事情。
其他層的安全性問題和我是完全沒關係的。
應用層、傳輸層、實體層都有自己的安全協定。
但是這些安全協定互不干擾。
(2)增加額外的功能性
近來很紅的docker和VM都類似於增加額外的功能性。
我電腦閒著沒事幹嘛要多一層VM?可以同時好幾個完全不同OS在同一台電腦上跑啊。
而且用VM和docker對於安全性和靈活性與資源調配可移植。好處實在多太多了。
但是用閃電網路到底多了什麼"功能"?
讓你用BTC可以買杯咖啡?買披薩?
https://i.imgur.com/U83npqM.jpg
Bitcoin早就可以買咖啡買披薩,披薩日還是Bitcoin的重要節日咧。
而且本來就該是數秒內完成零確認支付,我手機APP掃一下,交易完成。
大家都是準備"一支手機"就可以完成的事情。譬如下面twitter就有超級多的例子。
https://twitter.com/jajaaSB/status/1136694517455699968
而不是像閃電網路那樣,我還要提心吊膽斷線問題、通道liquidity問題、
channel資料備份問題、斷電問題。
在Bitcoin本來的架構下,我把私鑰passphrase記下來,沒了。
很顯然有一種效果並非應該是用分層架構達成的:
(3)增加系統容量
Internet難不成加越多層會越快?那各位通訊界的RD都白爆肝了。
不用開發5G和光纖通訊,就隨便加個LN層,網速就加一倍,不夠再加第二層、第三層。
電腦覺得不夠快也這樣處理,軟體跑不夠快,那就再加一層VM,不夠再加第二層、第三層。
是這樣嗎???
怎麼結果是相反的?加越多層越慢。
這就是我為什麼說LN根本不是第二層,而應該歸類為side application的原因。
他根本是個和區塊鏈完全不相容的架構,硬用智能合約兜在一起罷了。
哪有可能系統加越多層越快,沒這種道理。
其實我並不反對閃電網路,我反對的是用閃電網路"取代"原本主鏈的支付功能。
因為這種用法既無法簡化整個系統,也無法增加額外的功能性。
閃電網路要增加額外的功能性當然是很好的,所以要和應用綁在一起。
只有這種用法對一般人才算和主鏈切割夠乾淨,才能算是第二層。
像是BTT這個用在BT網路上的token,BAT這個用在廣告網路上的token,
Golem這個用在分散是雲端上的token,哪需要這麼多token。
透過閃電網路和應用綁在一起,Bitcoin一個幣就一統江湖了。
BT內建閃電網路用Bitcoin交易檔案、瀏覽器內建閃電網路用Bitcoin交易廣告。
雲端軟體內建閃電網路透過Bitcoin交換計算資源。IPFS透過[email protected]維持服務。
這樣Bitcoin還不飛天~~~