如何簡化去中心化應用運行程序?

現代世界中的可擴展區塊鏈,就如同沙漠中的一片體育場:配置豪華、容納能力可觀,但就是沒人坐。

設想一下,如果我們想在區塊鏈項目中試試水——比如想養只虛擬小貓或者是搞點卡片收藏,就目前來看,準備過程其實相當複雜,我們需要:

  1. 安裝Metamask;
  2. 創建密鑰對,安全存儲私鑰;如果之後需要通過其他設備進行訪問,還需要了解如何將密鑰傳輸到新設備當中;
  3. 在Coinbase上完成註冊;
  4. 填寫“瞭解你的客戶”調查表單,包括向Coinbase提交信息文檔;
  5. 等上好幾天;
  6. 購買以太幣。沒錯,如果不買幣,連個遊戲都玩不上!
  7. 從Coinbase處提取以太幣;
  8. 最後,買下你的小貓!雖然遊戲中的每一項操作都需要付費,但響應時間仍然長達恐怖的20秒以上。

在整個流程當中,將有95%到97%的用戶選擇放棄。這意味着每100個有意使用這些所謂現代遊戲或者應用程序的用戶,能夠熬過準備階段的只有5個甚至更少。

整個流程,大致可以分爲以下三個子問題:

  1. 必須安裝瀏覽器插件(或者錢包應用程序)以安全實現對鏈交互;
  2. 必須具備並理解公/私鑰安全機制;
  3. 必須爲每一項交易付費。

第1條和第2條很好理解,畢竟與區塊鏈交互過程中的安全保障極爲重要,用戶當然不希望自己的資金或者資產隨隨便便就消失不見。而最後一項除了向礦工提供財務激勵外,同時也給區塊鏈自身提供安全支持——如果交易全部免費執行,那麼一定會出現發送大量無用交易的DDoS攻擊活動。

要想參與到以太坊或者NEAR之類的特定區塊鏈生態系統當中,安裝瀏覽器插件或錢包、在賬戶上購買部分資產,並在所有設備上設置正確的密鑰對是必須完成的三項前提操作。對大部分用戶來說,Web3應用程序運行速度緩慢,所以可能相對較易上手。但是,截至目前,大多數互聯網用戶還沒有接觸到區塊鏈。如果希望進一步拓展潛在使用羣體,那麼第一步就是簡化上手難度。

在理想情況下,在區塊鏈上運行去中心化應用程序的過程,應該比構建NodeJS應用程序更簡單。而且一旦應用程序部署到位,即使是從未接觸過區塊鏈的用戶,也可以在瀏覽器中直接打開並輕鬆開始交互。

下面,讓我們立足以上子問題,逐一考量目前區塊鏈業界爲其做出的改善性努力,以及如何在協議層面給出解決方案。

瀏覽器插件/錢包應用

只有在計算機上運行一系列自定義二進制文件,用戶才能真正安全地同區塊鏈交互。其背後的基本思路在於,我們在瀏覽器中打開的任何託管內容都由託管方全面控制,因此對方可以隨意加以變更。即使託管解決方案保存有本地加密密鑰,代碼也可以從本地存儲中獲取數據並在將其解密後立即發送至遠程服務器,由此完成與區塊鏈的交互。

然而,我們想象一下最典型的例子:一個沒有區塊鏈賬戶的人,要如何購買加密貨幣?擺在面前的路只有兩條:在本地設置賬戶並存入資金,或者將賬戶完全交由Coinbase這類集中服務託管商打理。人都怕麻煩,所以大多數用戶會選擇後者。

其他去中心化應用程序也存在類似的情況。當用戶與區塊鏈進行交互時,他們主要通過託管解決方案完成交互操作。雖然這種方式安全性較差,畢竟該集中實體會接管用戶賬戶,但早期用戶的損失顧慮不強,因此實際安全性至少也能與目前我們習慣使用的其他集中式服務持平。託管商掌握着大量資產與數據,所以用戶基本可以信任他們。

另外需要強調一點:大多數人會在火狐或者Chrome的擴展目錄中安裝MetaMask,並從iTunes或者PlayStore處安裝錢包應用,這就意味着我們已經對MetaMask/錢包應用開發商以及Mozilla、蘋果或者谷歌等大型企業給予了信任。而且這個世界上畢竟沒有那麼多強迫症,絕大多數人並不打算在檢查代碼之後再安裝MetaMask的開源版本。集中實體基本上還是靠得住的,我們的生活經歷已經反覆證明了這一點。

如今的開發人員已經能夠將現有解決方案集成至去中心化應用程序當中,從而在無需安裝瀏覽器插件及錢包應用(例如Portis)的前提下完成區塊鏈交互。但此類服務的問題在於,一旦人們放心將自己的私鑰對交給這類服務,那麼賬戶安全將受到永久性損害。換言之,如果日後希望拿回賬戶資產的完全所有權,用戶必須創建新賬戶並將資產全部轉移過去。而一旦某些應用程序不提供便捷的資產轉移功能,那麼用戶可能就徹底失去了對資產的完全控制能力。

一種解決方案是建立一個基於合約的賬戶,用戶可以隨時根據意願替換並控制賬戶所使用的密鑰。但要實現這一功能,用戶必須在剛剛使用時就選定賬戶的基於合約屬性。除了Portis等少數服務默認提供此類賬戶之外,大多數用戶其實享受不到這項功能。此外,基於合約的賬戶無法像常規私鑰保護賬戶那樣執行所有操作,這一點也需要注意。

在NEAR當中,每個賬戶都默認基於合約創建,且NEAR提供對應的託管錢包。最終,用戶可以利用託管的錢包與區塊鏈進行交互,並隨時通過本地創建的新密鑰對完成賬戶更新,從而保障賬戶的安全性水平。

最近,社區中出現了我們非常讚賞的新表述:漸進式安全。隨着時間的推移,用戶對區塊鏈的參與度與投資額日漸增長,用戶完全可以從高可用性/低安全性逐步過渡至高安全性/低可用性。

##瞭解私鑰/公鑰對

如果漸進式安全最終能夠得到廣泛認可,同時託管錢包成爲人們的首選,那麼密鑰對機制也將隨之消失。簡單來講,託管錢包會將所有用戶的私鑰存儲在自己的託管數據庫當中,並直接向用戶提供身份驗證層。這一驗證層允許用戶使用Facebook賬戶登錄、Google賬戶登錄或者是更爲傳統的電子郵件地址加密碼登錄方式。只有在用戶希望由託管錢包轉換爲本地錢包時,才需要正確設置私鑰,並一步步學習如何將密鑰轉移到其他設備當中。

有趣的是,通過基於合約的賬戶,我們既能夠輕鬆完成轉移,又可保持全面的安全控制能力。相較於本地錢包通過非安全通道進行私鑰轉移的方法,基於合約的賬戶管理方案可提供以下兩種方案選項:“proposeNewSk”與“approveSk”。

第一種方法可供任何人調用,用於向賬戶的私鑰列表當中中添加新的私鑰。第二種則必須利用賬戶中的某一現有私鑰進行調用,並在驗證通過後批准爲賬戶添加新的私鑰。如此一來,用戶就可以在新設備設置全新的密鑰對,從該設備上提出出新的私鑰,再在原始設備上加以批准。

手續費區塊鏈上執行的任何交易都會消耗大量資源。爲了安全執行狀態變更,參與區塊鏈的衆多節點都需要在應用狀態變化之前對其進行驗證。與大量資源相對應,交易的執行自然是有成本的。

將Web3與Web2進行比較,很多人會認定Web2服務在本質上是免費的,畢竟我們在Facebook上執行操作時並不需要繳費,但實際情況並非如此。如果用戶的長期預期價值達不到響應其操作請求以及存儲其發佈數據所耗費的資源成本,那麼Facebook方面根本不可能爲用戶提供免費服務。

在使用Facebook時,用戶實際上是在用自己的個人數據付費,而且對Facebook的濫用行爲無可奈何。以下截屏來自Facebook,其中包含的所有額外信息都由廣告商發佈:


(x的值是2)

對區塊鏈來說,如果應用程序開發商認爲用戶的生命週期總價值高於交易手續費,那麼當然也可以提供免費服務。這正是EOS項目提出的幾個極具現實意義的倡議之一。

同樣的,如果託管錢包能夠從用戶身上獲得一定收益,那麼他們當然也可以負擔這部分常規支出。例如,NEAR可能會爲每位用戶承擔一部分Gas交易手續費,並藉此提高自身協議的普及度。CryptoKitties可以承擔合約交互執行成本,畢竟CryptoKitties的用戶擁有相當高的購買積極性,轉化率也確實可觀。

但這並沒能徹底解決問題:雖然用戶看起來不必爲交易直接付費,但免費交易機制將導致垃圾操作的數量大量增加,並導致錢包託管商或者應用程序開發商不得不設置免費限額以避免交易執行成本的快速膨脹。

面對同樣的問題,Facebook用戶會註冊多個賬戶反覆利用免費限額。這類挑戰並非區塊鏈所特有,好在目前已經出現了不少解決方案。託管錢包可以選擇一種來預防潛在的DDoS攻擊,同時繼續爲用戶提供免費的交易服務。

不過仍有其他問題存在。這種爲用戶承擔費用、期望後續獲得更高價值的商業模式極易遭到濫用。谷歌、Facebook以及蘋果等科技巨頭爲此制定出不透明的隱私政策,這種對用戶隱私權的踐踏實際上也是防止濫用的手段。Web3雖然希望在基本設計層面排除這種作法,但爲了吸引更多用戶的參與,我們仍在有意或無意地採取類似的機制。

下面來說說最本質的區別。在Web3中,雖然用戶默認享受的是以隱私換免費的機制,但我們可以隨時切換爲自主交易付款模式,從而爲託管錢包或者瀏覽器擴展程序的使用帶來新的選項。如此一來,我們就能真正控制自己的隱私權益。

總結

藉助漸進式安全概念與以上提到的幾種特定解決方案,我們得以爲用戶提供如Web2一樣的簡單入門途徑,同時允許使用者隨時切換至完整的區塊鏈安全性水平。

原文鏈接:

On usability of blockchain applications

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章