目前大多數的區塊鏈應用,使用起來有許多艱澀繁瑣的地方。其中有些是因為開發者和設計師的便宜行事,有些則是因為區塊鏈本身運作機制與現在主流中心化架構有根本上的差異。無論如何,如果要讓使用者能夠輕鬆上手、簡單使用區塊鏈應用,我們必須要消除這些艱澀繁瑣的操作流程。
其中一個優化的關鍵,就是這篇文章要介紹的元交易(Meta-Transaction)。
這篇文章不需要你對區塊鏈有任何背景知識。本文會用很淺顯的方式,快速介紹區塊鏈的原理,解釋為什麼區塊鏈難用?還有為什麼我們需要 Meta-Transaction。讀完這篇文章,你會對區塊鏈的歷史和運作機制有一個概略的了解。如果你本來就很懂區塊鏈歷史和運作機制了,你可以跳過前面幾段科普。
區塊鏈的誕生
2007–2008 年的全球金融危機,使得許多人對於既有的金融體系失去信任。其中一些人就開始構思:如何可以建立一個不需要以銀行為中心的金融系統。2008 年中本聰(化名)發表了比特幣白皮書(英文、簡體中文);2009 年一月,比特幣網路正式上線運行。
在比特幣網路中,所有的運作機制都是基於密碼學、經濟學和共識演算法。怎麼轉帳、怎麼記帳、怎麼驗證⋯⋯都是依照一套公開且明確的邏輯在運行。你不需要信任這個系統裡面的任何人,你甚至不需要信任發明比特幣的中本聰,你只需要信任程式邏輯。只要整個系統裡面超過一半的人都是正直的、照著規則運作,整個系統就會繼續正常運行。
於是,一個去中心化的金融系統誕生了。
區塊鏈的運作原理
比特幣網路和銀行系統主要有幾項最大差異:
- 比特幣網路沒有一個中心領導人,而是由一大群記帳員(俗稱礦工,基本上就是一個專門負責處理記帳、驗證交易的電腦程式)共同營運。這些記帳員彼此之間會互相監督驗證,確認大家紀錄的帳都是正確有效的;記帳員之間也會運行一套共識機制,確認大家紀錄的帳本都是一致的。
因為這些記帳員記帳時需要消耗電、消耗運算資源,所以也會收取一些手續費,作為營運比特幣網路的報酬。 - 比特幣網路的帳戶是由使用者自己保管。每個使用者手上都有一把密鑰,每當使用者要發送交易的時候,就是用這把密鑰進行簽章。記帳員會驗證這個簽章,確認交易是不是來自原本的密鑰持有人。
然而,這個系統只認密鑰,不認人。如果使用者遺失了他的密鑰,就再也沒辦法動用他的資產;反過來說,如果其他阿貓阿狗拿到了使用者的密鑰,阿貓阿狗也可以任意動用這名使用者的資產。
比特幣之後的其他區塊鏈(例如以太坊 Ethereum),也都是以類似的去中心化架構運行,也都有一群記帳員,帳戶系統也都是由使用者自行管理。但是這些新一代的區塊鏈透過智慧合約(Smart Contract)提供更廣泛的應用,而不只侷限在轉帳上。
例如謎戀貓 CryptoKitties 就是建構在以太坊上面的一款智慧合約遊戲。CryptoKitties 裡每隻貓都是以太坊網路上的一枚代幣,你可以買別人的貓、讓兩隻貓交配產生擁有父母基因的小貓、再把生出來的小貓拿去賣給別人。以上所有的機制都是以智慧合約運作在以太坊上。
如果對以太坊詳細交易、互動機制有興趣的話,可以參考下面這篇文章。
區塊鏈的使用體驗
區塊鏈在追求去中心化的同時,也造成了幾個使用體驗上的致命缺陷:
- 速度慢、成本高:比起傳統中心化系統直接處理交易資料,區塊鏈系統中的記帳員之間需要一套共識機制來同步大家的帳本,造成額外的溝通成本。結果是比特幣網路平均每秒只能處理 7 筆交易,一筆交易從送出到紀錄上鏈需要大約十分鐘;以太坊平均每秒只能處理 20 筆交易,一筆交易從送出到紀錄上鏈需要大約 30 秒。
- 私鑰管理責任落在使用者身上:區塊鏈系統的帳戶密鑰由使用者自行負責保管。這對追求極致權限自主的進階用戶來說是一件好事,但對普通用戶來說造成很大的不便與壓力。一般人難免會忘記密碼,在中心化系統只要提供一些額外身分資訊證明就能重設密碼,但在區塊鏈系統中,密鑰遺失就永遠無法挽救了。
- 使用者付費:既然區塊鏈系統沒有主人,那他怎麼支付這些記帳員的電腦成本、電費成本?答案就是使用者自己付費。每當使用者發送交易,無論是直接轉帳或是和智慧合約互動,都要自行支付一筆交易手續費。想像你每次使用即時通訊軟體發送訊息,或是每次在社群媒體上面發文,都會跳出信用卡付款頁面,要求你支付個 0.1 台幣,這是多麼惱人的體驗。
第 1 點的區塊鏈效能瓶頸,現在已經逐漸被解決了。這幾年出來了很多側鏈、Layer 2 解決方案,提升區塊鏈處理交易訊息的速度;台灣團隊開發的區塊鏈 Tangerine Network 也藉由提升共識演算法效率,提供每秒大約 15,000 筆交易的效能,每筆交易送出之後,一秒內就能紀錄上鏈。現在的區塊鏈效能已經能夠承載實際運行服務需要的用量了。
第 2 點私鑰管理的問題,我以後會再另外發一篇文章討論。這篇文章主要著重在第 3 點使用者付費的問題。
使用者付費,有什麼問題?
使用者付費沒問題。問題出在他不該是這麼簡單粗暴的方式。
現在的所有中心化軟體服務,無論是把服務架在自己機房的伺服器上,或是運作在 Google、Amazon 的雲端伺服器上面,都有各自的營運成本。所有企業都是自行吸收這些營運成本,再透過各自的商業模式從使用者身上獲利,來支付營運成本。這些商業模式五花八門:
- 免費服務,藉由提供服務時蒐集獲得的使用者資料,暸解使用者喜好和行為模式,再把這些分析資料賣出賺錢。
- 免費服務,藉由掌握流量和使用者的注意力,賣廣告賺錢。
- 免費遊戲,吸引大量玩家加入,其中有一定比例會為了獲得競爭優勢或是獲得更大的優越感,花錢買點數買道具。
- 訂閱制(月費制或年費制)軟體服務
- 買斷制軟體服務
最近幾年,使用者越來越習慣免費的服務或是免費增值( Freemium、基本免費但是可以透過付費獲得進階功能)的服務。即使是訂閱制或買斷制的服務,通常也都提供一段時間免費試用。這些設計都是為了要降低使用者進入障礙,才能更有效地吸引更多使用者。
如果使用者還沒對服務產生依賴,甚至連服務內容還不清楚,就要叫使用者付錢,大部分的使用者會直接選擇離開。
偏偏現在的區塊鏈使用體驗就是這樣:無論你想使用什麼區塊鏈應用,你都需要先買一些虛擬貨幣,用來支付與區塊鏈互動的手續費。這道限制,讓大多數的潛在使用者卻步,區塊鏈應用因此而難以推廣。
終於輪到今天的主角 Meta-Transaction 出場!
先講結果:透過 Meta-Transaction,使用者不需要本身持有虛擬貨幣,不需要自行支付手續費,也能和區塊鏈互動。
Meta-Transaction 機制是由 Austin Griffith 於 2018 年提出。這機制我們用兩張圖來解釋:
在一般的區塊鏈交易中,交易訊息經過使用者密鑰簽章之後發上鏈,這筆交易與其他智慧合約互動產生的手續費,由使用者自己的帳戶支付。
而在 Meta-Transaction 中,使用者簽章完成之後,交由 Relayer 發上鏈,並由 Relayer 支付交易手續費。在 Meta-Transaction 架構中,使用者帳戶本身也是一個智慧合約,這個智慧合約會驗證使用者本身的簽章是否正確,如果正確的話才會跟最後的目標智慧合約互動。
Relayer 只作為一個轉發交易上區塊鏈,並幫忙代付手續費的服務。交易本身還是要經過帳戶持有人密鑰簽章過才有效。
Meta-Transaction 機制,催生了更靈活的手續費收費模式。舉例來說,區塊鏈應用方可以與 Relayer 合作,達成以下幾種體驗:
- 完全由區塊鏈應用方支付使用者的手續費,區塊鏈應用方自己設計其他的商業模型來從使用者身上賺錢。
- 如果區塊鏈應用本身是一個存款、提款性質的服務,可以在「使用者存款進智慧合約」時向使用者收取手續費,但在「使用者從智慧合約提款」時由應用方代付手續費。
- 如果使用者是要進行其他 ERC20 代幣的轉帳,區塊鏈應用可以收取一部分的 ERC20 代幣作為手續費。
目前,Meta-Transaction 已經成為區塊鏈使用者體驗的顯學。Dapper Labs 和 Open Zeppelin 都有提出各自的 Meta-Transaction 實作。
Blocto 錢包更進一步整合 Apple 與 Google 的內購服務(In-App Purchase),提供更便捷的使用體驗。除了可以提供上述由區塊鏈應用方代付手續費的模式之外,Blocto 錢包本身也提供一些新手體驗額度,讓使用者可以免費體驗區塊鏈應用。如果使用者用完了新手體驗額度,也可以透過內購輕鬆獲得 Blocto 點數,並用來支付區塊鏈上的手續費。
坐而言不如起而行,你可以試試看透過 Blocto 使用區塊鏈應用 DETT(區塊鏈版 PTT),就能體會 Meta-Transaction 的使用體驗了。
?相關報導?
鏈與製作人專欄|Netscape 創辦人:以古鑑今,從網際網路的發展歷史看今天的區塊鏈
加密貨幣錢包的生態總覽:現在進展到什麼程度了?
《BlockTempo動區動趨》LINE官方號開通囉~立即加入獲得第一手區塊鏈、加密貨幣新聞報導!