以太坊 (ethereum) 是目前所有公有區塊鏈 (public chain) 應用生態最豐富的一個,近來由於去中心化金融 (DeFi) 的蓬勃發展,讓網路十分壅塞且手續費高昂。回顧 2017 年,有一款引爆人潮的數位蒐藏品遊戲-謎戀貓 (CyptoKitties) ,也曾經讓以太坊變得又慢又貴,而它背後的加拿大開發公司 Dapper Labs 也因此獲得相當大的成功,受到風投 Andreessen Horowitz (a16z) 、華納音樂、AppWorks 等知名公司投資。

幾年過去,以太坊還是會塞車,而區塊鏈上的遊戲仍然很陽春又不好玩。Dapper Labs 幾經研究之後,開發了一條嶄新的公有區塊鏈 Flow,高度適應數位蒐藏品、遊戲與娛樂型應用的需求,讓人們從傳統的網路與遊戲世界無縫接軌,體驗區塊鏈所帶來的創新。

在討論公有區塊鏈的議題時,不外乎將焦點放在交易速度、吞吐量與交易成本上面。然而這些只是 Flow 所達成的基本特性,我們專訪到台灣區塊鏈錢包 Blocto 共同創辦人 – 李玄,來談談 Flow 在技術上還有什麼精巧的設計,能展現它的遊戲公鏈價值。

Blocto 共同創辦人李玄

資源導向的程式架構:更安全

門戶科技共同創辦人李玄告訴我們,即便以太坊處理交易速度變得更快,它的程式語言跟虛擬機 (virtual machine) 設計,還是跟區塊鏈所適合的應用場景不太吻合。

李玄表示,以太坊智能合約 (smart contract) 最一開始是模仿中心化系統的程式語言所設計,只有資料存儲方式依據區塊鏈特性稍作調整,當時也還不確定這些這些智能合約會被用在什麼領域。但經驗證明,用智能合約寫程式比較適合處理資產、權限控管跟溯源有關的應用。不過,以處理資產為例,以太坊的設計就容易出現重入攻擊 (re-entrancy) 的狀況,導致財務上的損失。

他繼續解釋,這是由於以太坊的資產紀錄方式,只是在智能合約中存放一個變數。例如 A 轉帳給 B 十元時,紀錄 A 資產變數少十元與 B 資產變數多十元,但其中有個變數未更新或太晚更新時,就很有可能出現漏洞,讓作惡者重複去領這個錢。

為了改善這點,Flow 所創建程式語言-Cadence,採用了資源導向 (resource-oriented) 的程式架構。這樣的架構比較貼近帳戶的概念,當 A 轉帳給 B 十元時,不光只是改變變數而已,由於資源導向資料架構(resource type data structure),會比較像是從 A 的帳戶取出一個物件(resource),再轉移給 B。過程中虛擬機會有額外的權限控管,只有 A 有權限從帳戶中取出物件,讓物件轉移跟變數改變,在同一個操作中完成。而非「 A 少十元」與「 B 多了十元」兩個操作,造成風險。

Facebook 在 2019 年提出的跨境金融服務 Libra,為了建構高度安全性與可信度,其所創建的程式語言 Move,也是採用資源取向的程式架構。但比起 Move 的 bottom up 設計,Cadence 的 top down 設計更注重在可讀性與清晰度,成為一個更符合人機工程學的語法,也因此開發者在學習、使用與審計方面,都變得容易。Flow 官方則表示,Cadence 對於 Move 具有互補性,未來也將朝兩生態間的互通做努力。

開發者的共同願望:用戶0門檻加入

portto 旗下產品 Blocto 是世界第一個整合 Flow 的區塊鏈錢包,為什麼李玄會選擇 Flow,與 Blocto 想成為所有人的區塊鏈入口有關。

想使用以太坊區塊鏈上的應用程式,任何一筆交易都需要 Gas Fee (網路手續費),而且是用以太坊的原生代幣 Ether 支付。對於無區塊鏈相關知識的一般大眾來說,還必須知道如何取得 Ether,才能與區塊鏈互動,有一定的使用門檻。Blocto 為了解決這個問題,是搭配智能合約處理,用較長的路徑來為用戶代支 Gas Fee。

不過,Flow 更優化了這件事情。李玄表示,由於 Flow 本身就允許讓開發者與服務供應商等角色,可以代付手續費,因此對於像 Blocto 一樣產品是面向一般大眾的開發者,就能取得相當大的便利性。用戶也可以在不需要先準備好 Gas Fee 的情況下,就能進入區塊鏈的世界。

交易機制:一切變得更有彈性

為什麼能做到前述的這一點,就要歸功於 Flow 的交易機制,它為各種應用帶來的更多的彈性操作與功能。

李玄向我們解釋:「Flow 的交易內容比以太坊複雜得多。」他說,以太坊的一個交易裡就是一個來源、一個目標,還有交易的金額跟附帶的 data,然而 Flow 的交易是允許多個來源的。

李玄要我們想像一個情境:如果有三個人各自拿出一隻數位貓出來對打,打出結果後,贏的人可以拿走全部的貓。這樣的情境,在以太坊中是很難執行的,但 Flow 的設計就很能適應這樣的需求。

他表示:「若是在以太坊中,這三個人必須需要各自發起一筆交易,把各自的貓放到一個暫存的合約裡面,最後一個人再去呼叫一個 function 說,三個人都已經準備好了,現在開始打架吧!」但 Flow 的作法更為直觀。

Flow 發起一筆交易時會有三種角色:發起人、授權人、付款人。以上述情境為例,其中一個人擔任發起人,並標記其他兩個人參與這場遊戲,另外兩個人就成為授權人,在簽章授權後,就可以讓多人拿出資產進行處理,而為這場遊戲提供手續費的,可以是玩家本身或是服務供應商等第三人。

李玄告訴我們,允許多位授權人是 Flow 很特別的設計,也因此可以做到更多的彈性操作。

‘Your account, your keys’ – 人性化資產管理 

‘Not your key, not your bitcoin.’ (你不擁有鑰匙,就不真的擁有比特幣),這句在加密貨幣社群中,常被用來提醒人們保管與擁有私鑰重要性,因為區塊鏈是認鑰匙不認人的。因此,當用戶的私鑰(private key)是由中心化的加密貨幣交易所保管時,也等同於不實際擁有帳面上的數位資產。更別提用戶如果自己弄丟或忘記私鑰時,那麼數位資產更會是永遠塵封在區塊鏈之中了。

以太坊與多數區塊鏈的設計是,一個私鑰會對應到一把公鑰,公鑰經過一個計算方式會對應到一個地址,人們會用這個地址來接收數位資產。然而,當用戶的私鑰遇到洩漏風險時,人們往往是盡快將資產移出,再棄用這個私鑰。

李玄解釋,以太坊的帳戶是,一個私鑰會對應到一把公鑰,公鑰經過一個計算方式會對應到一個地址,它是一對一的。但 Flow 並不同,一開始必須要有一個人幫你發起交易,為你創建一個帳戶,而這個帳戶擁有的私鑰是可以彈性設定的。

他表示:「最簡單的 Flow 帳戶是,我會先產生一個私鑰,然後把對應的公鑰給帳戶服務商,請帳戶服務商幫我去鏈上註冊一個帳戶。這帳戶的地址跟公鑰沒有直接關係,只是這個公鑰會被存在這個帳戶裡面,並且標示帳戶的持有人是這個公鑰。往後在動用這個帳戶的時候,我就必須用我的私鑰去簽章,才能動作。」

更進階的是,帳戶可以同時存在多把鑰匙,控制這個帳戶。李玄表示,以前述私鑰暴露的案例來說,在 Flow 裡面,你只需要替換掉帳戶內有安全疑慮的鑰匙就可以,帳戶仍可以保存,不需要被棄用。

我們進一步想了解這種多私鑰的管理方式,能不能滿足像是公司帳戶多人管理的情境。李玄告訴我們,Flow 也原生支援多重簽章的功能,可以為不同的私鑰設定權重,只要所有簽章權重加起來超過一定值,就可以執行動作。

這種帳戶導向的設置也為開發者帶來便利性,在以太坊環境中,一份智能合約上鏈後,若有漏洞也無法更改,只能另起爐灶。不過,開發者將智能合約部署在 Flow 的帳戶中,合約有問題時可以持續去用新的合約進行取代,直到合約完全沒有問題後,就可以將所有可控制的私鑰都移除,它就會像是以太坊上面那種無法被更動的合約一樣。

帶得走的衣服配件!謎戀貓將更好玩

回到遊戲本身,謎戀貓 (CyptoKitties) 在 Flow 上會有什麼不一樣? 

原先的區塊鏈蒐藏品遊戲,用的是一種叫做 NFT (non-fungible token,非同質性代幣),它跟金錢不一樣,每一個代幣無法被分割成小單位,也具有唯一性。像是一隻數位貓、數位機器人,又或者是數位畫作等。在以太坊上有許多人嘗試著讓它變得更具有蒐藏價值,而非投機價值,例如:數位球員卡牌、交換卡牌遊戲。近期也有 Cryptograph 這種名人數位畫作的拍賣平台,MEME 這類結合 DeFi 流動性挖礦與 NFT 的嘗試。在台灣,虛擬資產拍賣場 Lootex 也結合 AR,讓玩家更能體驗數位蒐藏品的價值。不過,以太坊上的 NFT 各自獨立,數位機器人沒辦法持有武器,又或者讓貓穿上衣服。

CryptoKitties

李玄告訴我們,Flow 可以讓謎戀貓 (CyptoKitties) 裡面的數位貓咪,持有鞋子、帽子等配件。也就是當我在市場上買到帽子的這個資源 (resource) 時,我可以把它交給數位貓咪。當數位蒐藏品轉移時,是可以把貓含配件一起給別人。為什麼能夠做到這些事情,也是因爲 Flow 的資產紀錄方式,是真實存在你的帳戶裡面,而非共同登記在某個公用的智能合約之中。這個情況若是在以太坊上,就必須在一個智能合約中,紀錄物件與物件間不同的歸屬權,處理上更加複雜。

我們可以預見數位蒐藏品可以變得更個性化,它可能跟第一位持有者一同經歷獲得了一些道具配件,或者改變樣貌,這些歷史成分對於買家而言,更具有蒐藏價值。Flow 官方也透露,數位資產錢包 Dapper Wallet 將會在 Flow 主網正式上線後,支援 Flow 版的知名遊戲 CyptoKitties 以及 Cheeze Wizards

那區塊鏈不可能三角問題呢?

談起公鏈,各路好手都想挑戰的是「不可能三角」難題 (Scalability Trilemma),也就是區塊鏈不可能同時滿足安全性、去中心化與擴容性三種條件。

Flow 官方並未大張旗鼓地去吹噓自己破解了「不可能三角」,而是稱 Flow 閃避了這個難題。

李玄告訴我們,Flow 區塊鏈會有不同的節點分工執行動作。蒐集節點 (Collection Nodes) 專責蒐集交易,執行節點 (Execution Nodes) 負責執行交易中的動作,驗證節點 (Verification Nodes) 則是會檢查執行節點的動作,共識節點 (Consensus Nodes) 負責決定哪些交易能上鏈以及順序。

Flow的多角色架構

原本全部事情都必須包辦的節點,在 Flow 的設計下,變得比較像一條生產線。有的節點負責耗能與硬體需求比較高但較不需要跨節點溝通互動的事情(例如執行節點),有的節點則負責相對簡單、但需要大量節點共同參與的事情(例如共識節點),用任務分工的方式,讓 Flow 在擴容性與安全性上都得到了提升。

主網即將上線

目前 Flow 區塊鏈處於 Beta 主網階段,正式主網將很快上線。李玄表示,Flow 還有更多值得開發者探索的便捷功能,對於用戶來說更加友善。他也在 9 月 16 日 Flow 的台北線下活動中,說明更多的技術細節。此外,Dapper Labs 技術長 Dieter Shirley 也在該活動中,與台灣的朋友分享資源取向的程式架構,還有哪些好處,以及關於 Flow 的最新進展。

熱門新聞

Advertisement