DApp開發者們,你們是來為難使用者的吧?

作者 | Alex Roan

譯者 | 核子可樂

使用者為先,別自嗨。

儘管去中心化應用程式做出不少誘人的承諾,但真正完善的成果似乎還沒有大規模出現。好訊息是,一部分專案已經在做出探索與嘗試,包括 Torus、Fortmatic、Portis、Unilogin 以及 Authereum 等希望用於同 Metamask 競爭、強調去底層化的下一代錢包方案。但就個人而言,我覺得目前的這些專案還不足以真正代表 DApp 的未來。

對新手不友好的 DApp 們

這幾年來,DApp 給我留下的使用體驗都不怎麼好。作為使用者,每當我打算在區塊鏈上傳送交易時,都會彈出一個醜陋的視窗,提示我進行確認、警告稱將產生成本,總之讓人很不舒服。

我已經擁有比較豐富的使用經歷,所以還算適應。但其他新人很有可能因此被嚇得遠離區塊鏈平臺。這類問題至今仍然沒有改變,每次嘗試操作時都會出現令人害怕的彈窗,也最終導致 DApp 的客戶流失率極高。

我能理解,作為平臺的運營方,他們希望確保使用者意識到自己的某項操作會產生費用。畢竟如果不盡到提醒義務,使用者群體肯定很快就會怨聲載道,甚至驚訝於自己的以太坊賬戶裡怎麼就沒錢了。但是,實現目的還是應該配合更科學合理的方法。

圖 1:Metamask 交易確認

就以圖 1 為例,除非大家對以太坊錢包、DApp 乃至整個加密貨幣行業都非常熟悉,否則你根本就不清楚這個視窗是要幹什麼,某些使用者甚至會認為這就是個欺詐網站,因為點選按鈕產生彈窗的設計往往與劣質、不可靠等字眼掛鉤。但是,這反而成了行業規範,每當使用者想要與智慧合約進行互動時,彈窗就會出現。

不止於此,有時候使用者甚至需要安裝完整的擴充套件程式才能與 DApp 互動。好在情況正在慢慢轉變,Opera 已經在其移動瀏覽器中釋出了對 DApp 的支援,其他錢包現在也開始內建 DApp 瀏覽器。但這一切都只處於小眾階段,還完全沒有邁入主流。

換言之,除非谷歌能夠在其 Chrome 瀏覽器中支援 DApp,或者由 Mozilla 在 Firefox 上提供類似的選項,否則這個問題就永遠無解。無論把彈窗設計得多麼美觀友好(Fortmatic 就使用了弧形外框設計)、有多少種小眾產品開始支援 Web3 注入,問題都將繼續存在。

”藏起“你的後臺系統

使用 Metamask 以及其他 Web3 注入程式的使用者已經熟悉了這種運作方式,他們有著豐富的經驗,因此不會被 DApp 所嚇退。但我覺得,單純讓體驗更花哨、更流暢或者說更圓潤純粹是在浪費時間。這不足以真正吸引到主流使用者,因為實質性的門檻仍然存在。換言之,嚇退他們的真正原因,是他們不太理解到底發生了什麼。

與其著重於簡化 Web3 的注入體驗,不如將其徹底廢棄。我們可以建立一套平臺,讓使用者與智慧合約直接互動,且全程不涉及任何智慧合約或者區塊鏈元素。透過這種“去底層化”措施,公眾才能真正接受這種新的交易平臺與使用體驗。

大家不妨學著像銀行那樣思考——銀行絕對不會炫耀系統的內部功能,而是提供一個個看得見、看得懂的選項讓使用者判斷。這種去底層化設計將繁重的後臺體系剝離了出來,保證使用者不會輕易觸及。

但這一切該怎樣實現?

大多數 DApp 開發教程都在講授 Web3.js 或者 Web3.py 知識,以及如何透過這些庫與瀏覽器中注入的 Web3 例項進行互動。這就是大多數 DApp 的構建方式,經常暴露出底層管道並導致 Metamask 的使用過程總是充斥著令人討厭的彈窗。之前已經提到,這樣的設計適合高階使用者,但我們也完全可以將管道隱藏起來,即不要求在客戶端提供 Web3 支援。

我們有必要建立起一套不需要 Web3 注入的平臺。具體來講,使用者應該可以使用自己的電子郵件和密碼,甚至是 Twitter、谷歌以及 Facebook 等社交登入名完成註冊。總之,一切越熟悉、越有親和力越好。

可能很多朋友覺得這事難以實現,但 Laravel 等久經考驗的受信框架完全能夠起效,給主流使用者們帶來更加“正常”的觀感與體驗。

在登入並進入資訊中心後,我們應該引導使用者建立自己的賬戶。只需單擊一個按鈕,後端就生成一個新的以太坊地址。

但有些朋友可能會問:“私鑰該怎麼辦?”

首先,對於主流使用者而言,私鑰在不在自己手裡其實並不是什麼大問題。我知道,把所有私鑰集中起來不是什麼好主意,甚至可以說與區塊鏈技術的整個價值主張相背。因此我們應該以最低限度幫助使用者保留私鑰,單純出於增強易用性的目的。

其次,請不要把私鑰儲存為明文甚至雜湊值形式。Web3.js 與 Web3.py 都提供加密與解密功能,而這些功能需要用到私鑰。只要配合上使用者指定的密碼,就能保證私鑰安全無憂。

因此,您完全可以將這些金鑰與賬戶一同儲存在集中平臺之上,由此消除公開 Web3 以及使用 Metamask 的必要。

專注擴大使用者規模

假定您正在構建一套以以太坊智慧合約為後端的支付平臺,您要知道自己的使用者需要與平臺進行互動,但又不想在 Metamask 與錢包使用等方面設定太高的上手門檻。這就是主流情況——使用者只想使用你的產品,而不是花上幾個小時來學習 Web3。所以,最重要的就是先建立一套能夠通

過 Facebook、谷歌以及其他社交網路進行註冊與登入的平臺。

構建一套儀表板,供使用者建立賬戶。如果擔心區塊鏈術語把他們嚇跑,請儘量使用更有親和力的表達。在建立過程中,可以要求使用者提供 pin 碼或者加密密碼,也可以直接使用他們的登入密碼進行私鑰加密。加密後的私鑰將與使用者詳細資訊一同儲存在資料庫內。

當然,在區塊鏈上進行交易不是免費的,產品本身也同樣不是免費的。FIAT 仍然是加密貨幣領域的佼佼者,您可以使用 Stripe 或者類似方式將其作為主要支付手段。無論您最終如何選擇支付方式,包括一次性費用抑或訂閱模式,都可以在收取付款時用 Ether 載入使用者錢包。使用者看到的,只是需要定期支付月租費用。但在底層當中,使用者的賬戶已經完成充值,可以與您的智慧合約生態系統順暢互動。

每當使用者透過您的平臺向智慧合約提交交易時,平臺都應控制提示訊息的表述方式。由於他們的金鑰已經在資料庫內得到加密,因此解密金鑰以及透過賬戶提交交易的操作應該只需要使用者輸入 pin 碼即可確認。傳統銀行應用就是這麼做的,絕不會透過醜陋的 Metamask 發出嚇人的提醒。總之,一切要以讓客戶滿意、熟悉且習慣為優先。

Web3.py 示例

以下程式碼示例要求您已經擁有 Python3、Web3.py(可透過 pip 安裝)以及訪問區塊鏈的 Infura 賬戶與 URL。

下面,我們將逐步介紹如何建立賬戶、使用密碼生成賬戶的加密版本,而後根據使用者要求透過 Web3.py 伺服器進行解密。總之,整個過程不應在前端公開任何功能。Web3.js 也提供此項功能。

在 Python 終端內,執行以下命令:

由於儲存的是經過加密的 keystore,因此平臺並不知曉私鑰內容。對交易進行解密及簽名的唯一前提,在於知曉 userPassword 的值。下面來看如何實現這一點:

只需要使用此私鑰,即可代表地址對交易進行簽名。

原文連結:

https://medium.com/swlh/how-to-create-the-worlds-first-mainstream-dapp-e1f10a0d3c4d

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读