區塊鏈的三難抉擇:如何兼顧安全、效率及開放性

#25

先說個好消息,我們新增了一個 Sli.do 的會員線上問答區,讓大家可以公開發問。

主要的原因是有許多會員寄信來問問題,不過我個人時間有限,希望能回答越多人有興趣的部分越好,因此開了 Sli.do 線上問答區。歡迎大家有空時在上面提問,也可以幫其他人的問題按讚。但如果你沒空看 Sli.do 也不用擔心,我會把回答直接寫在每週電子報內,所有會員都能夠看到。

希望區塊勢能成為你在瞬息萬變的區塊鏈世界裡,讓資訊慢下來、沈澱的地方。


台北以太坊社群(Taipei Ethereum Meetup)上週舉辦「以太坊全明星技術座談」,邀請多位國際知名的區塊鏈開發者共同討論區塊鏈的規模化問題,及以太坊的發展方向。

當天我沒有到場參加,但週末我在家裡看完近 2 小時的座談會全程錄影。這是一場以技術為主軸的會議,討論的多數是正在開發但實際效果還有待驗證的技術。這些技術的共通之處,都是要解決區塊鏈的規模化問題。

區塊鏈領域的開發生態是多頭並進。因此,往往同時會有多位開發者針對同一個問題,提出各種不同的解決方案。區塊鏈的技術內容,是多數讀者比較不熟悉的領域。今天我會挑選重要的概念來說,讓大家了解區塊鏈有哪些問題正在熱烈討論中,但不會深入技術細節。

先從我們熟悉的閃電網絡開始。

回顧:閃電網絡解決區塊鏈的效率問題

上週我們討論閃電網絡(Lightning Network)是用類似飛機轉機的方式,來解決比特幣交易速度太慢的規模化(scalibility)問題。類似的方法,用到以太坊就叫做雷電網絡(Raiden Network)

閃電網絡的作用不是直接提升區塊鏈交易速度(Transaction Per Second, TPS),而是減少區塊鏈的負擔。將以往只能在區塊鏈上(on-chain)處理的工作,轉移到區塊鏈以外(off-chain)的閃電網絡上完成。

因此,比特幣區塊鏈還是維持原本每秒 7 筆的交易速度,但區塊鏈上已經少了很多交易,所以使用者會因此感覺交易速度提升了。

這就像是公司樓下的便利商店,每到用餐時間就會大排長龍。因為結帳櫃檯只有兩個,而店員每次結帳都要花時間找零。後來,便利商店新推出儲值卡。原本找零的工作簡化成掃條碼之後,直接在儲值卡內扣款即可。雖然便利商店還是只有兩個櫃檯在結帳,但是消費者等待的時間就大幅減少了。

便利商店排隊的狀況是否能夠得到紓解,就得看有多少人改用儲值卡結帳。同樣道理,比特幣區塊鏈上交易要花的時間就像是找零,而閃電網絡就像是儲值卡。閃電網絡是否能有效的減少比特幣區塊鏈的塞車狀況,就得看有多少人改用閃電網絡進行交易。

閃電網絡只有第一筆、最後一筆交易(綠色的線)記錄在區塊鏈上 / 圖片來源

我在 2 月初第一次介紹閃電網絡的時候,當時才只有 500 個節點、1,000 個付款通道。這個數字越大就代表越多人使用儲值卡交易,現在閃電網絡的節點數、付款通道都已經增加了一倍。如果未來有越來越多人使用閃電網絡,就能夠暫時緩解比特幣的交易塞車問題。

即便如此,你可能還是想問,難道區塊鏈的交易速度這麼慢,就只能透過這些額外的解決辦法來改善嗎?

這是個大問題。以太坊創辦人 Vitalik Buterin 認為區塊鏈面臨的,是一個安全、效率與開放性的三難抉擇困境,三者無法同時兼顧。

區塊鏈的三難抉擇困境 / 圖片來源

三選二:安全、效率和開放性

首先,我偏好將圖內的可擴展性(scalability)翻譯成效率,把去中心化(decentralized)翻譯成開放性,會比較容易理解。接著,沒有區塊鏈技術會完全犧牲安全性,否則就沒人敢用。所以,我們可以把這個三角形簡化為安全性搭配效率,或是安全性搭配開放性的二選一問題。

公共區塊鏈:兼顧安全性(security)、開放性(decentralized)

公共區塊鏈(public blockchain)例如比特幣區塊鏈(Bitcoin)或是以太坊(Ethereum),都是選擇了安全、開放性,但是犧牲了效率(scalability)。

你可以簡單地把公共區塊鏈,想像成是臉書的公開社團。因為公開社團人人都可以加入,所以就需要設計一套發言規則,來維持社團內的交流品質。同樣道理,公共區塊鏈只要運行軟體就可以加入,所以必須設計一套共識機制(consensus algorithm),來維持公共區塊鏈的交易安全性。

現在比特幣區塊鏈、以太坊採用的共識機制,都是工作量證明(Proof-of-Work)。工作量證明的運作方式,是確保每次記帳電腦都必須花費相當的工作量,而這些工作量都必須花費相當的時間才能完成,藉此提升駭客惡意攻擊的門檻。

如果沒有付出相對應的時間,就沒辦法完成這麼多的工作量,也就無法獲得區塊鏈的記帳權,更遑論對過去紀錄動手腳了。

簡單來說,工作量證明是用時間來確保區塊鏈的安全。這套機制是看準每個人的電腦運算能力非常有限,因此只要出個稍難的題目就必須要花費相當的時間找到解答。因此,當駭客掌握的運算能力沒有顯著勝過其他人,那麼駭客就很難對區塊鏈動手腳。

不過,這雖然確保了區塊鏈的安全性和開放性,但是也相對限制了區塊鏈的運作效率。因為全球有越多電腦加入,也只是讓駭客更不可能掌握足以威脅區塊鏈安全的運算能力,也就是提升區塊鏈的安全性。不過,卻無法提升區塊鏈的運作效率。

私有區塊鏈:兼顧安全性(security)、效率(scalability)

私有區塊鏈(private blockchain)例如 R3 Corda 或是 Hyperledger Fabric,其實就是犧牲了開放性(decentralized)換取效率。

你可以簡單地把私有區塊鏈,想像成是臉書的私密社團。只有受到邀請且通過驗證的對象,才能夠加入私有區塊鏈。加入之後還會分層級,不是每位成員都可以看到所有交易。因為私有區塊鏈已經透過實名制的資格篩選、權限控管,來確保每個參與者只能做有限的事,所以就不需要再像公共區塊鏈的工作量證明那樣,用時間來確保區塊鏈的安全。而是可以採取更有效率的共識機制。

你肯定會問,那如果這些通過篩選的參與者哪天心術不正對交易動手腳,那是否能夠找得出誰作怪呢?可以,但是難度不亞於公共區塊鏈。雖然私有區塊鏈通常是實名制,但如果有參與者私下合謀,私有區塊鏈的系統也很難發現問題是出在誰身上。

私有區塊鏈的資格篩選和權限控管,其實就是金融機構最熟悉的管理機制,也符合防制洗錢(Anti-Money Laundering, AML),以及實名認證(Know Your Customer, KYC)的規範。因此,目前多數的銀行聲稱在試驗的區塊鏈技術,通常都是私有區塊鏈。

但我認為長期來看,私有區塊鏈只是區塊鏈技術的短期解決辦法,用來填補公共區塊鏈在交易隱私性(例如不想被看到智慧合約內文)、 運作效率還沒提升的臨時空缺。

讓公共區塊鏈更有效率

回到「以太坊全明星技術座談」的會議主軸,討論的正是如何讓公共區塊鏈在不犧牲安全性、開放性的同時,還能提升運作效率。

閃電網絡是比特幣區塊鏈的第二層解決方案 / 圖片來源

短期的解法,就是透過閃電網絡或雷電網絡在區塊鏈外(off-chain)的交易,降低區塊鏈上(on-chain)的負擔。這種方法因為不是直接解決區塊鏈運作效率的問題,所以被稱為區塊鏈的第二層(layer 2)解決方案。

長期的解法,當然就是直接提升區塊鏈的運作效率,增加區塊鏈的吞吐量(throughput),這被稱為第一層(layer 1)解決方案。分片技術(sharding)是從去年開始,有越來越多人討論的以太坊第一層解決方案。

不過因為這一篇內容已經太長,所以我就暫時停在這裡,把「以太坊全明星技術座談」的重頭戲-分片技術,放到週四講。

總結來說,我認為公共區塊鏈會越來越好用。除了效率會逐漸改善之外,如同我在《速讀J.P. Morgan首份區塊鏈趨勢報告》最後一段所寫,公共區塊鏈將由「匿名公開」轉向「實名秘密」。也就是區塊鏈在智慧合約、交易的隱私性上,會越來越貼近政府、企業和使用者的需求。

本文感謝陳昶吾、梁智程協助審稿