原文標題:《Web3 小程序?MetaMask Snaps 解讀》

原文來源:ZAN Team

MetaMask Snaps

MetaMask Snaps(https://metamask.io/snaps/)是一個有很長遠理想的項目。不過,拋去它所披着的「理想」的外衣,筆者更願意稱它爲 Web3 世界的小程序。或者給它取一個花哨點的名字:dApplet。

作爲開發者,特別是中國國內的開發者,應該對它的概念並不陌生。我們近些年常會聽到「生態打造」、「超級 App」之類的互聯網黑話,商業巨頭們總是想要將互聯網打造的越來越封閉,以便讓自己從服務提供者的角色轉變爲標準制定者的角色。

現在,這股風潮似乎也開始慢慢向 Web3 領域飄蕩了。

到今天(2024 年 6 月),雖然 Snaps 已經出現了快要一年時間了,從概念提出更是至少 4 年了,但是普通用戶對它的瞭解卻幾乎沒有。筆者身邊有一些非常關注加密貨幣市場的朋友,每天打開 MetaMask 就像喫飯睡覺一般自然,卻仍然連 MetaMask Snaps 是什麼都不知道。不過,在筆者向他們解釋「就像小程序那樣」之後,臉上也總是會立馬出現一抹難以言喻的微笑(他們都是開發者,大部分是前端開發者)。

這場景莫名讓人聯想到微信小程序剛出來時的境況,由於功能入口不明顯,使用量很是低微。後來將入口改到在首頁下拉出現小程序列表後,使用量纔開始大幅增長。MetaMask 既然想打造生態,那麼如何吸引用戶進入生態大門,恐怕會成爲一個亟待解決的重要問題。

小程序從出現開始,在互聯網行業就爭議不斷。前端工程師普遍對它的出現嗤之以鼻,認爲它就只是互聯網巨頭爲了壟斷流量、封鎖生態的商業工具,對於技術發展並沒有太多貢獻。Web3 的 Snaps 不知又能對社區有多少貢獻呢?瀏覽 MetaMask 提供的文檔,愈來愈覺得未來的 Snap 開發者將會飽嘗帶着鐐銬跳舞的艱辛。

從 MetaMask 開啓 Snaps 的公共測試版到目前已有將近一年的時間,然而其官網列出的可用的 Snaps 數量其實還不是很多,截止 2024 年 6 月,滿打滿算也只有 68 個。要知道,在正式公測之前,早在 2020 年左右,官方就已經提出了 Snaps 的概念,Web3 公司與開發人員其實已經有相當長一段時間來對它進行充分的瞭解。

一些 Snaps

筆者還沒有見過專職開發 Snaps 的開發人員,不過身邊 Web2 中的小程序開發者還是有不少的,對小程序的普遍看法就是開發體驗比較差。小程序開發使用的依然是前端生態,但卻是閹割版的,廠商因爲各種各樣的原因對開發者實際能做的事情進行限制。並且各廠商的技術能力、提供的文檔質量參差不齊,導致開發者要在各種平臺踩過各種奇奇怪怪的坑之後,才能被人稱讚一句「有經驗」。

再回到 Web3,出於安全等因素考慮,Snaps 極有可能面臨着相似的狀況,它不得不在一個隔離的安全上下文中運行,所使用的是「安全 ECMAScript」,實際上是對 JavaScript API 做了一些限制,例如無法訪問 DOM、Node.js、瀏覽器插件 API 等。

由於可理解的安全考量,一個最基本的 Snaps 其實做不了太多事情。它的大部分功能都需要先具有相應的權限,所以 Snaps 在安裝時就需要向用戶申請相關的權限。可用的權限包括生命週期、交易、簽名、CRON 等:

https://docs.metamask.io/snaps/reference/permissions/#eth_accounts

所以,相比於繁榮的 Web3 生態,目前可用的 Snaps 少的可憐,MetaMask 將它們做了一些分類。

Snaps 類型

按照 MetaMask 官網的分類,大致能分爲 4 種類型:

賬戶管理 Account Management

這類 Snaps 主要通過 MPC(Multi-Party Computation,多方計算,https://blog.usecapsule.com/what-is-mpc/)技術,提高私鑰的安全性。

想想我們平時是怎樣保護私鑰的呢?大概很多人會將助記詞保存在某個地方,筆者猜普遍是自己的電腦或者手機上,哈哈。當然,如果你非常富有,錢包中的資金非常多,那麼你確實可能會使用保密性更強的方式,例如使用硬件錢包。但是大多數人,說真的,僅僅是將他們的助記詞粘貼在某個自己很方便就能找到的地方,以避免自己完全忘記。

這種保存方式可能會造成一些問題:

1.如果你忘記把助記詞放在哪裏了,那麼你大概率是要和自己錢包中的資產說再見了。

2.如果你保存助記詞的設備遭遇木馬病毒,則很難防止黑客盜竊你的助記詞。有些用戶可能爲了提高安全性,將自己的助記詞拆分,然後分別存放。這也許能增加一些安全性,卻無疑也增加了自己的管理難度與遺忘的風險。

而 MPC 技術,則可以自動將你的私鑰拆分爲多份,分別放到不同的地方存儲,只在當需要使用私鑰進行交易簽名時,再將它們拼接起來生成完整的私鑰,同時這個過程中並不會生成完整的私鑰,最大限度保護私鑰免遭泄漏。

到目前(2024 年 6 月)爲止,還只有 3 個賬戶管理類的 Snaps,分別是 Capsule, Silent Shard 和 Safeheron。

· Capsule 使用了設備的 PassKey、恢復密碼和 2FA 共同維護同一份密鑰,同時如果丟失了某一個,則可以通過另外兩個來恢復。

· Silent Shard 和 Safeheron 是通過使用多臺設備安裝它們的 App 的方式來實現這一點。

很難說這類 Snaps 能吸引多少 Web3 用戶,從 Snaps 網站上顯示的數據來看,這類型的 Snaps 確實很少,安裝量也並不高。

它們使用起來並不複雜,這裏不再贅述。安裝完成後,你的 MetaMask 錢包中多出一個地址:

互操作性 Interoperability

這類 Snaps 主要提供了對非 EVM 網絡的兼容,我們能看到許多熟悉的鏈,包括 Solana、Cosmos、Near、Sui 等等。目前這類是最多的,它們佔據了整個 Snaps 生態的一半以上。

豐富的多鏈 Snaps

通知和聊天 Communication

筆者個人更喜歡這類型的 Snaps,不過在當下,可選的聊天應用那麼多,願意通過鏈來發送消息的用戶顯然還是少數。那麼很遺憾也只能繼續「戰未來」了。

安全 Security

這類的需求想來還是比較大的,特別是,MetaMask 自身在用戶遇到釣魚交易時的警告做的其實並不夠。交易作爲加密貨幣和區塊鏈領域最常見的操作,本身具有高風險和高敏感的特點,通過 Snaps 提供的交易洞察相關功能,開發者可以對用戶展示更豐富的交易信息,提供對交易的分析和見解,最大限度避免用戶的資產損失。

筆者身邊就有朋友曾遇到過被釣魚網站轉走賬戶餘額,而 MetaMask 從連接錢包到轉賬成功,全程毫無警告的情況,無奈之下只能換用其他錢包。而且筆者當時對 Snaps 也並不瞭解,只是給他推薦了 ZAN 的 KYT(https://zan.top/home/know-your-transaction?chInfo=ch_wxdyh)服務來保護他的交易。希望這類安全型 Snaps 能夠彌補 MetaMask 自身的不足。實際上,從 Snaps 官網顯示的數據來看,安全型 Snaps 也確實是除了多鏈支持外需求最大的,目前佔據了總數的兩成。

MetaMask Snaps 提供了 endowment:transaction-insight 和 endowment:signature-insight 權限來滿足相關需求,Snap 申請相關權限後,可以在用戶發起交易或簽名時,可以讀取到原始交易或簽名的有效負載。Snap 可以對其進行分析,然後向用戶顯示更多更豐富的安全性說明。

想法 MetaMask 想要通過 Snaps 將自己的領域擴張到其他鏈平臺,但是最終究竟能走到多遠,恐怕很難如其所願。拿 Web2 領域的小程序來說,雖然很多 App 提供了小程序版本,但是往往,簡陋的小程序所提供的服務遠無法與 App 相比,對新功能的跟進也經常落後,甚至許多小程序會將用戶直接往自己的 App 引導。而到小程序爆發式增長後,更多 App 也都想來分一杯羹,又紛紛推出了自己的小程序平臺,各家努力加固着自己的護城河,整個 Web 世界越來越「中心化」。

Web3 領域的資本也並不會比 Web2 的更高明,如果後面 Snaps 發展良好,那勢必會有更多錢包跟隨。如果真的到了這種地步,Web3 領域的開發者需要針對各個錢包的「Snaps」開發相應的版本,屆時恐怕會讓他們焦頭爛額一段時間。只是,倘若各廠商都來打造自己的「Snaps」生態,又幾乎等於全部沒有自己獨有的生態。咦,這似乎倒是也暗合它們「去中心化」的標籤了。

我們也許能稍微預測一下,未來可能會有各種「Snaps-like」出現,平臺差異巨大,此時對各平臺的兼容成了開發者們的日常工作,最終到了不可忍受的地步。於是 Snaps Standard 在衆多開發者的期待中誕生了,同時會有各種「SIP」供人們參與討論,社區一片繁榮景象……

抱歉筆者個人似乎有些對 MetaMask Snaps 太沒有信心了點。無論怎麼說,它至少是由一羣有激情的開發者所構建的、想要解決實際問題的產品,而不是由一羣金融專家發起的騙局。

只是,對於 MetaMask 眼下的大部分用戶來說,Snaps 確實還不算是一個特別必須的功能,MetaMask 接下來恐怕需要在如何更有效的推廣方面做更多工作。

原文鏈接