自 2023 年 9 月 MetaMask Snaps 公開測試版上線以來,我們致力於推動創新的民主化,讓獨立開發者能夠打造 MetaMask 的各項功能,充分展現 web3 領域的無限創意。上線 9 個月以來,我們看到第三方開發者共開發了 55 個 Snaps,並收錄於我們的官方目錄,所有 Snaps 的安裝次數合計已超過 90 萬次。
在持續探索如何讓開發者更順暢地建構 Snaps 並擴展 MetaMask 的過程中,我們確立了 2 個重點方向,並已推出若干重要更新,以下將在本篇文章中進一步說明。
1. 降低 Snaps 目錄白名單審核要求
發布第三方 Snap 現在變得更簡單了。過去,開發者在提交任何 Snap 申請加入白名單、納入 Snaps 登錄庫之前,必須先完成安全審計。即日起,我們放寬了這項規定——不涉及金鑰管理(entropy API)的 Snaps,現在無需通過安全審計即可提交至白名單,並透過我們的渠道進行發布。
請注意,涉及金鑰管理的 Snaps 仍須完成第三方安全審計。金鑰管理或 entropy API 是指代表使用者管理區塊鏈帳戶的相關 API,包括 snap_getBip32Entropy、snap_getBip44Entropy 及 snap_getEntropy。若您使用了上述 API,並希望了解如何為 Snap 準備第三方安全審計,歡迎參閱這篇部落格文章:MSQ Snap 與 Consensys Diligence 的 5 項安全審計建議。
目前,白名單申請仍為人工審核流程。提交申請時,我們會確認該 Snap 是否需要審計;若不需要,我們將直接將其提交至登錄庫。所有 Snaps 均須經過 Snaps 團隊的兩次審核批准,方可獲得許可。
此外,部分第三方 Snaps 現在可讓任何人在不需要加入白名單的情況下自由安裝。僅依賴以下清單中「開放」權限的 Snaps,無需加入白名單即可安裝:
endowment:cronjob
endowment:ethereum-provider
endowment:lifecycle-hooks
endowment:page-home
endowment:signature-insight
endowment:transaction-insight
snap_dialog
snap_getLocale
snap_manageState
Snap_notify
即便不強制要求加入白名單,我們仍鼓勵開發者為其 Snaps 進行第三方安全審計。此外,Snaps 若要顯示於 Snaps 目錄中,仍須完成白名單申請。
2. 為特定 dapp 提供無縫自動連線功能
開發者現在可以為其 Snap 指定一份享有自動連線權限的 dapp 清單。這意味著,對於特定 dapp,當 dapp 呼叫 wallet_requestSnaps 時,使用者無需手動確認連線,dapp 也能無縫檢查 Snap 是否已安裝。此功能對於被多個 dapp 使用的 Snaps 尤為實用,可實現以下使用者體驗流程:
您建構了一個供一個或多個 dapp 使用的 Snap,並透過在 initialConnections 設定選項中列出您的 Snap 配套 dapp,授權其自動連線。
使用者在與使用該 Snap 的 dapp 互動時安裝了您的 Snap。
使用者進入您的 Snap 配套 dapp。
您的配套 dapp 可立即識別該 Snap 已安裝完畢。
使用者無需手動連線至 Snap,即可直接與配套 dapp 互動。
此功能可延伸至您信任且已整合您 Snap 的其他 dapp。
Linea Voyager Snap 目前已採用此功能。您可以從 Snaps 目錄安裝 Linea Voyager Snap,並造訪 Linea Voyager 配套 dapp,親身體驗無縫連線的效果。與大多數配套 dapp 不同,此 dapp 會自動連線至 Snap,即使您未曾從 dapp 手動安裝或連線。如需了解此功能的詳細使用方式,請參閱 Snaps 說明文件。
持續使用 MetaMask Snaps 進行開發
在我們持續構建 web3 錢包的無許可未來之際,我們也不斷致力於優化使用體驗,而上述兩項新更新正是我們規劃中的部分成果。
如果您目前正在使用 Snaps 進行開發,歡迎留下您的意見回饋,這將有助於我們打造更好的未來錢包。如果您是有意建構 Snap 的開發者,可以從閱讀 Snaps 說明文件開始,並在專案完成後與我們分享您的成果。