我相信你肯定看過下圖所示的諸多「Web3 技術棧示意圖」,在解釋區塊鏈(或者說 web3.0)涉及哪些技術時,這些示意圖都很有用,也是正確的。但當你想拿區塊鏈來做應用時,你會發現這些技術棧理論並不能提供什麼指導意義。本文源自 AlphaWallet 和 TokenScript 的編輯 Victor Zhang 的文章《We need a better framework for applications using blockchain》,由專欄作者 以太坊愛好者編譯、撰寫及整理。
你覺得我的意思不太好懂?那我們先來了解更多的細節。下圖所示即為區塊鏈應用最常見的結構。不論是基於網頁的還是基於原生 App 的,99% 的區塊鏈應用的結構都是這樣的。
因為不論網頁 App 還是區塊鏈都被套了一層 web 框架,所以區塊鏈應用並不能超越網頁 App 的邊界。
延伸閱讀:微軟 安永 Intel IBM JPMorgan共組的權威機構,發佈了全球通用的「代幣標準」(TTI)
延伸閱讀:Web 3.0 專題|去中心化互聯網之路(下)Web 2.0的風險、以太坊在3.0時代的角色
我只想強調這麼幾點:
安全性:
按上面結構,整個應用系統的安全程度跟一個網頁 App 是完全一樣的,都沒有底層的區塊鍊和智能合約這麼安全。(作為用戶)你並不知道你簽署的交易內容是不是僅限於你想簽署的部分。
在用戶發送標準的支付交易時,這是個小問題,雖然在一些記錄鍵盤訊息的惡意軟件攻擊案例中,這一點仍有負面影響。但是涉及到 token 轉移的複雜邏輯時,這種結構會面臨非常嚴重的問題。當然,開發者可以讓交易以用戶可讀的形式呈現出來,交易可視化工具也很容易上手,但是最終來說,這個應用要整合的東西以及使用體驗上的需求,是超過一個字典類型(dictionary- style)的交易可視化工具的能力範圍的。
信任:
因為構建區塊鏈交易、呈現安全視聽訊息的代碼都是放在網頁 App 上的,這就讓區塊鏈應用的可信層級從區塊鏈級降低到了跟一個普通網頁 App 同樣的水平。
可用性:
區塊鏈和智能合約都有高可用性,24 小時× 365 天無休。而網頁 App 的可用性跟區塊鏈相比就低很多。兩相加總之下,區塊鏈應用的可用性就跟網頁 App 沒有區別了。
網頁 App 一旦掛掉 —— 甚至只是網頁管理員忘了給 SSL 證書續期 —— 相關的區塊鏈應用就基本用不了了。對於一些時間敏感的應用場景比如投票、拍賣來說,這一點是非常致命的。更糟糕的是區塊鏈應用之間還有可能相互依賴。
延伸閱讀:文組也該知道的區塊鏈技術知識《5》交易送不出去怎麼辦?以太坊的交易打包規則
互操作性:
類似地,依賴於 Web 框架的區塊鏈應用的互操作性也會下降到與網頁 App 相同,不復智能合約本來的便利性。假設一個叫做 Peter 的房地產商做了一個叫做「彼得之選」的網站,陳列他認為市面上最好的房產並以 token 來代表及交付這些房產。
他還可以列出關於這些房產的一系列訊息,價格、地段,等等,讓用戶能一鍵購買。Peter 也不需要許可機制,因為這些 token 的數據都是放在區塊鏈上的。但是 —— 他還是得知道如何在網站上呈現這些 token 的訊息。而且一旦智能合約或者交易規則有所變動,他也得跟著更新網站。如果他忘了及時更新,那用戶就會提交不符合要求的交易然後被合約拒絕掉。
用戶體驗:
依賴於 Web 框架的區塊鏈應用也跟網頁 App 一樣,缺乏基於情境的用戶體驗。假設你想買入彼得之選網站上房產的 1% 份額。在傳統的錢包裡,你只能看到一個小符號 —— 有已經算好的了 —— 看不到任何進一步的訊息。這完全不是房產投資者希望看到的情況,他們想要房產的圖片、價格;同區域房產的圖表、預計成交日,等等。
你當然 可以 在錢包裡面展示這些東西。只需要 錢包跳轉到一個塞滿這些訊息的智能合約,或者去相信一個提供這些訊息的不知道什麼網站、根據這個網站來做用戶體驗上的適配。實際上,根本沒有錢包能做到這些,最終要麼是用戶來使用網站,要麼是智能合約開發方嘗試做出一個能滿足他們需要的錢包出來。
延伸閱讀:鏈與製作人|邁向完美「區塊鏈使用體驗」- 什麼是元交易Meta-Transaction?
延伸閱讀:區塊鏈炒地皮風潮!以太坊遊戲 The Sandbox 「虛擬土地預售 III」5 小時賺進 3,400 ETH
可擴展性:
同一種類型的資產可能在多個網路(比如 Plasma 側鏈)上有 token 實例。沒有這樣的架構,token 經濟就很難擴展。但是,要讓一個全知的節點來提供所有 token 的可展示訊息是很困難的 —— 也跟我們在擴展區塊鏈經濟的同時保持節點負擔小的目標相衝突。因此,關於 token 的知識(TokenScript)必須與 token 的訪問途徑相分離。
隱私性:
幾乎所有的業務運營都需要一些身份訊息。當你買入 1% 的房產 token 時,在某些司法轄區,你需要提供某種形式的身份證明。在傳統模型中,如果你使用了一個第三方網站(比如彼得之選),這個網站會要求你提供身份證明並轉發給出售方、公證人和政府。在諸多 ICO 項目嘗試合規的時候,我們已經看到了這種情況:投資者大量上傳護照照片。這種辦法的問題早已是人盡皆知。
你肯定也不希望自己的身份訊息存儲在很多網站的數據庫裡,因為你也不想自己的身份訊息被盜走。取得你的信任的網站也可以濫用這份信任 —— 比如賣掉這些訊息,或進一步分析這些訊息 —— 而且網站也可能被攻擊。上傳護照照片或其它身份文件到網站服務器,是又要整合網站服務器、又沒有所有權和身份機制的網站所能引起的最惡劣問題之一。
另外,上述每一點都有許多「解決方案」,這些方案,怎麼說好呢,就像是頭痛醫頭、腳痛醫腳,但完全沒意識到病症的整體性原因。
在我們討論新框架以前,我們先快速回想一下,區塊鏈到底是用來解決什麼問題的?
2017-2018 年間爆發的區塊鏈投機熱潮,讓所有人都只關心 token 的價格。我們一邊炒作,一邊就忘記了一開始到底想用它來幹嘛;就好像是房產泡沫的時候,大家都忘了房子不僅僅是一種炒作資產,也是一個用來居住的空間。
區塊鏈履行了受信任第三方的功能。要想訴諸實踐,僅僅知道這一點是不夠的;我們還必須理解它對世界經濟和互聯網的意義。關於區塊鏈的應用,我們團隊已經在金融機構和創業公司中研究和實驗了多年。靠著這些經驗,我們開始意識到,區塊鏈 —— 作為受信任的第三方 —— 可以實現兩大關鍵功能:
-
提供無摩擦的市場環境 -
整合 web
雖然 17-18 年的泡沫破滅了,但大家一開始就關注到了 token,不是一個壞事。Token 就是這兩大關鍵功能的賦能器。我們管這些致力於讓 token 發揮區塊鏈關鍵功能的技術叫「tokenisation(代幣化)」。Token 化的權利可以在市場上交易、也可以在多個系統中整合,最終會形成無摩擦的市場並使無限制的整合成為可能。
延伸閱讀:動區講古|Token 演化之旅:從以太坊誕生之前到「ERC721代幣 穩定幣」的崛起
延伸閱讀:區塊鏈虛擬世界評測|我在 Decentraland 逛了一天,欣賞藝術品、薅羊毛、鋼管舞…
哪些訊息應該被「存儲」(代幣化)到區塊鏈上?
我們來看兩個例子:
案例:USDC
a)代表我持有 100 USDC 的訊息
b)代表我的美國公民身份的訊息
c)USDC 的 Q&A(使用說明)訊息
d)描述 USDC 交易邏輯的訊息
e)表示 USDC 鑄造邏輯的訊息,例如:要在 Circle 上開設一個帳戶,並把美元轉入某個銀行帳戶,等等。
案例:表示一輛車的所有權的 token
a)表示我擁有這輛車的訊息
b)代表我的駕照的訊息
c)汽車的使用說明書
d)這輛車相關權利的交易邏輯,比如轉讓邏輯、賣出邏輯、用於擔保的邏輯
e)這輛車的運行邏輯,包括開門、關門、啟動、停車
答案是 a 和 d。
如果是無關所有權的訊息,比如 c 和 e,你可以使用數位簽名。如果無關所有權的轉讓,比如 b,可以使用 attestation。
區塊鏈是用來代幣化可轉讓權利(比如所有權)並定義轉讓邏輯的。關鍵在於,所有這些訊息都關聯著一個 token 化的權利,進而讓這個 token 成為釋放 web3.0 功能的關鍵點。
明白 token 就是關鍵之後,理解 TokenScript 框架和區塊鏈應用的新結構就容易多了
我們這個產業此前的工作幾乎都集中在增強技術上(比如交易吞吐量)。TokenScript 卻致力於代幣化,屬於功能而非技術維度。TokenScript 是一套標準,讓區塊鏈技術棧能夠完整,並為經濟活動和互聯網提供功能。
一個 TokenScript 文件由兩部分組成:1)讓 Token 在用戶的錢包乃至在跨越應用時能夠正常工作的 JavaScript;2)能夠提取 token 的狀態和值的 XML 數據。並且,還有沙盒化且經過代碼簽名的模式來進一步保證文件的安全性。簡言之,它就像 token 的安全前端。
如何生成 TokenScript 文件,又如何使用?
一般來說,TokenScript 是由 token 的建模者(modeller) —— 即開發底層智能合約(用於描述token 的交易規則)的團隊 —— 來創建的。
TokenScript 讓 token 運行時的環境(用戶代理或者交易引擎)能夠:
- 從持有 token 的智能合約、attestation 乃至參考訊息處獲得與token 相關的訊息
- 生成圖像或者音像來展示這個 token
- 提供可執行操作的清單,並解釋如何構造交易
任意參與者都能使用 TokenScript 來展示 token 和使用功能,包括通用的市場平台、用戶代理人和第三方應用。我們用「congtext(運行時環境)」來代指這些參與者。
TokenScript 文件裡面包含什麼內容?
TokenScript 是一種 XML 方言。TokenScript 文件描述了由 token(通過智能合約或其它方式)提供的功能、在用戶界面展示 token 的方法、token 所使用的 ERC 代幣行為模板,以及構造交易和展示 token 所需用到的 JavaScript 代碼。它也定義了 attestation 如何用來修飾、轉換和驗證交易。
延伸閱讀:深度探討|推特創辦人Jack Dorsey的權力下放計畫:BlueSky 的背後究竟想要改變什麼?
延伸閱讀:JavaScript發明人造區塊鏈瀏覽器Brave,能解決網路意識「低到爆」的問題?
為什麼使用 XML 而不是 Json 或其它 JS 格式?
把 TokenScript 文件當成項目文件,而規範化的版本當成最終可分發的工程目標,你就更容易理解其中用意了。
XML 有確定的標準和已經經過時間考驗的工具,對我們很有幫助:
A. XML 規範(c14n)指定並提供了一種可轉移的方法來表示一個 XML 文件,並能在文件傳輸中始終保持同樣的格式。
B. XML 數位簽名(基於對標準化 XML 文件的簽名)
C. XML 使開發者能夠公開列舉出並描述屬性和操作 / 交易。雖然 Json 也可以做得到,但其形式可能是在字典或者字符串中列舉內容,這些文本很難執行模式、驗證和追蹤模式更改。
D. 標準化的靜態類型,使用 XML 我們可以很容易地執行 ASN.1 變量編碼來保證這些變量與定義一致。
這些方面加總在一起,我們就能保證,給定的一個經過簽名的標準化 TokenScript 文件沒有被篡改過。如果不使用 XML,那就必須重新發明 XML 的這些關鍵屬性並使之可用。
最終來說,如果我們把 TokenScript XML 文件看作是項目文件,我們就可以預見:在未來,我們可能會開發出工具來管理它們,而不是依賴於直接編輯 XML 文件;然後,文件自身的可編輯性就變得沒那麼重要了,而文件的完整性會變得更加重要。
關於 TokenScript 和 AlphaWallet
?相關報導?
「客戶體驗為王,打造民眾有感的 Fintech 服務」——BitoEX/BitoPro 創辦人.鄭光泰
科普|企業以太坊聯盟(EEA)在做什麼?企業以太坊區塊鏈有哪些規格?
通往Web3.0的發展:區塊鏈與互聯網的不同使命
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務