白皮書

摘要

Vela 是一個適用於以太坊及其他 EVM 網絡的自我託管智能合約錢包。每個錢包都是一個未經修改的 Safe v1.4.1 帳戶,透過 ERC-4337 運作,並由最多七把通行密鑰控制——這些 WebAuthn P-256 鑰匙由你的 裝置、你的密碼管理工具或硬件安全密鑰保管。沒有助記詞。

Vela 這家公司從不持有你的鑰匙,在你的 Safe 上也沒有任何角色,所以它無法自行轉移、凍結或沒收你的資金。 但請你的鑰匙簽署的軟件,是由它編寫和提供的——這就是下面的威脅模型之所以重要的原因。各個 App、負責提交 交易的中繼,以及配套服務都是開源的,每一項你都可以自行運行一份。簡而言之,你需要信任的是:合約、保管你鑰匙的驗證器、你用來簽署的 App 的 程式碼、你的通行密鑰所屬的域名,以及你讓 App 連接的服務。

為甚麼要有 Vela

  • 助記詞錢包把一個 12 至 24 個單詞的秘密擺在每個用戶面前:這是單一故障點,也是一個長期的釣魚目標。
  • 託管錢包靠接管用戶的資金來去掉助記詞。
  • 依賴某一家公司的伺服器和閉源程式碼的通行密鑰錢包,去掉了助記詞,但公司一旦消失,你就會被困住。
  • 盲簽——批准你看不懂的不透明資料——仍然很常見,也是錢包被掏空的途徑之一。

Vela 追求通行密鑰的方便,同時不帶上述任何一種依賴:標準的帳戶、公開的程式碼、可替換的服務,以及簽署前 就能看懂的交易。

設計原則

  1. 自我託管,沒有例外。鑰匙由你的驗證器建立和保管。Vela 的服務永遠看不到它們;它們能看到甚麼,列在 「私隱」一節。
  2. 標準合約,不作修改。通往你資金的路徑上,沒有一份合約是 Vela 寫的。
  3. 查證,而不是信任。App 和服務都是公開的;服務可以自行架設。
  4. 先解碼,後簽署。無法解碼的內容會附有明確的盲簽警告。
  5. 少做一點。錢包負責轉賬、收款,以及為你選擇的 dApp 簽署。

架構

Vela App——網頁版、瀏覽器擴充功能、桌面版(macOS/Windows/Linux)、iOS、Android
  一個共用的 Rust 核心(規則、密碼學、ABI、清晰簽署)+ 各平台的原生外殼
  • 建構 UserOperation,並顯示它做甚麼
  • 請你的鑰匙產生 WebAuthn 斷言
        │  已簽署的 UserOperation(包含手續費)
        ▼
中繼(vela-relay,可自行架設)
  • 報價、先墊付 gas、提交 handleOps
  • 無法更改操作內容
        ▼
EVM 鏈
  EntryPoint v0.7 → 你的 Safe v1.4.1 → Safe 4337 模組
  Safe 通行密鑰模組透過 EIP-7951 / RIP-7212 預編譯合約驗證 P-256 簽名

配套服務全部開源:把新錢包登記到鏈上註冊表並回應查詢的公鑰索引、鏈數據目錄,以及匯率來源。 見自行架設指南。

帳戶

你的錢包是一個 Safe v1.4.1 代理合約(SafeL2 單例合約),啟用了 Safe 的 4337 模組 v0.3.0 作為它的 模組和後備處理器,並透過 EntryPoint v0.7 運作。它的擁有者是 Safe 通行密鑰模組 v0.2.1 的通行密鑰 簽署器:第一把鑰匙由共享簽署器驗證,其餘每把鑰匙由 Safe 工廠建立的各自簽署器合約驗證。門檻為 1。

地址是確定性和反事實的:在部署任何東西之前,就用 CREATE2 從包含每一把初始鑰匙的 Safe 初始設定資料 計算出來。它在每條網絡上都相同。你可以立即在這個地址收款;你在每條網絡上的第一筆交易會部署錢包,部署 費用包含在該筆交易的手續費中。

鑰匙

一個錢包有一至七把鑰匙,在建立時固定。其中任何一把都能單獨簽署(1-of-n)。鑰匙可以是:

  • 你正在使用的裝置上的通行密鑰——如果你容許,會由 iCloud 鑰匙圈、Google 密碼管理工具或其他密碼管理工具 同步;
  • 透過掃描 QR 碼連接的另一部手機(WebAuthn hybrid 傳輸方式);
  • 經 USB 或 NFC 連接、不會同步到任何地方的硬件安全密鑰。

每一次簽署都需要驗證器自身的用戶驗證——生物特徵或裝置密碼,或安全密鑰的 PIN 加觸碰。沒有會話密鑰。鑰匙 之後不能加入、移除或更換:在錢包尚未部署的每條鏈上,地址代表的仍是最初那組鑰匙,所以在某條鏈上更換 擁有者,會令帳戶在不同鏈上出現差異。

通行密鑰屬於某個依賴方——Vela 的通行密鑰是為 getvela.app 建立的。瀏覽器只會把它們提供給 getvela.app 或其子域名上的頁面,這正是它們能抵禦釣魚的原因;這同時也是一項依賴,本文下面會再談到。

簽署流程

  1. 建構你 Safe 的 UserOperation——其中包括一筆付給中繼的轉賬——並進行模擬。
  2. 解碼成人看得懂的意圖,並顯示給你。
  3. 簽署:驗證器驗證你的身份後,對操作雜湊值產生 WebAuthn 斷言。
  4. 編碼:把斷言編碼成通行密鑰模組所需的 Safe 簽名格式。
  5. 提交:把已簽署的操作交給中繼,由它呼叫 EntryPoint。
  6. 鏈上驗證:通行密鑰模組先用 EIP-7951 / RIP-7212 預編譯合約檢查 P-256 簽名,Safe 才會執行任何操作。沒有後備 驗證器;沒有該預編譯合約的網絡無法加入。

手續費

  • 中繼以帶內方式收取報酬:操作聲明的 EntryPoint 費用為零,並包含一筆從你的 Safe 轉到中繼地址的轉賬。 金額和收款方都是你所簽署內容的一部分,所以你支付的正是確認畫面顯示的金額。
  • 手續費是錢包為這筆操作預留的 gas 的三倍(模擬估算上調一半,並設有下限),按錢包自己讀到的 gas 價格與中繼就所選速度的報價兩者中較高者計價,最低約 0.01 美元。在 Tempo 上倍數為二。由於預留量和價格 都留有餘量,手續費會高於這筆操作的實際鏈上成本,在某條網絡上的第一筆交易更是如此;差額歸中繼所有。 確切金額會在你簽署前顯示在確認畫面上。
  • 手續費付給錢包目前所設定的中繼:預設是 Vela 的中繼,也可以是任何 vela-relay 部署,包括你自行運行的。
  • 手續費以網絡的原生幣或中繼接受的美元穩定幣支付(Tempo 沒有原生幣,用 pathUSD)。沒有 paymaster: 沒有人贊助 gas,也沒有人能透過贊助政策篩選交易。
  • 如果中繼在某條網絡上的 gas 資金庫空了,錢包會在你簽署前告訴你。沒有按用戶收取的按金。

詳情:網絡與費用。

清晰簽署

呼叫和 EIP-712 訊息以 ERC-7730 描述檔解碼——常用合約的描述檔內置於 App,其餘從鏈數據服務取得,或按 標準代幣形態配對——最後才會查詢公共函數選擇器資料庫,並標示為「盡力解析」。剩下無法解碼的,會附有明確 的盲簽警告。取得的描述檔永遠不會被標示為已驗證—— 只有 App 內置的那一份,或者與內置那一份完全相同的取得結果,才配得上這個詞。 達到「無限」級別(2^200 或以上)的鏈上授權會以紅色顯示,並提供上限選項;除非你設定上限,否則會按 dApp 建構的原樣發出。金額龐大但有上限的授權會顯示警示;簽名式授權無法設定上限,所以只能按原樣簽署或拒絕。詳情: 清晰簽署。

網絡

Vela 內置 24 條網絡——Ethereum、BNB Chain、Polygon、Arbitrum、Optimism、Base、Avalanche、Gnosis、 Unichain、Tempo、Monad、World Chain、Arc、X Layer、Stable、Soneium、MegaETH、Robinhood Chain、Mantle、 Kaia、Celo、Ink、Plume 和 XRPL EVM——並接受任何具備它所檢查的十二份合約及 EIP-7951 / RIP-7212 預編譯合約的 EVM 網絡。 這十二份裡有兩份是 Safe 的通行密鑰簽署器工廠,以及它部署出來的簽署器程式碼, 只有持有多於一把鑰匙的錢包才需要;檢查會把它們分開列出來。

安全模型

Vela 做不到的事

  • 自行轉移、動用或凍結你的資金——只有你的鑰匙能授權你的 Safe,Vela 在上面沒有任何角色。(Vela 能做的, 是推出請你簽署的軟件;見下面的威脅。)
  • 在你簽署後更改交易——任何更改都會令簽名失效。
  • 讀取你的私鑰——它們留在你的驗證器中。
  • 為你的錢包加入或移除鑰匙。

「無法凍結」不包括的:代幣本身。USDC、USDT 和大部分以法定貨幣作儲備的代幣,都容許發行方把任何地址列入 黑名單,包括你的。這項權力屬於發行方,無論你用哪個錢包都存在。自我託管帶給你的,是 Vela 不會成為第二個 擁有這種權力的一方。

你需要信任的

  • 合約:Safe、它的 4337 模組和通行密鑰模組、EntryPoint v0.7,以及鏈上的 EIP-7951 / RIP-7212 預編譯合約。
  • 域名:任何由 getvela.app 或其子域名提供的頁面,都可以請求你的鑰匙簽署。
  • 保管你鑰匙的驗證器,以及——對同步的通行密鑰而言——背後的 Apple、Google 或密碼管理工具帳戶。
  • 你用來簽署的 App 的程式碼。它建構交易,並向你顯示交易做甚麼。被入侵的 App 可以給你看一樣東西, 卻要你簽署另一樣;驗證器的提示不會告訴你兩者的分別。
  • 你讀取資料的 RPC 端點:說謊的節點可以顯示錯誤的餘額或錯誤的模擬預覽。你可以設定自己的端點。
  • 鏈數據和匯率服務:它們提供代幣列表、描述檔、可用來支付手續費的代幣列表,以及把法定貨幣金額換算成 代幣金額所用的匯率。
  • 中繼:它無法更改你簽署的內容,但可以延遲或拒絕處理、選擇交易何時上鏈(因此可能在你的滑價範圍內 搶先進行兌換),並設定你手續費所依據的 gas 價格,最高可達錢包自身讀數的三倍。

考慮過的威脅

  • 裝置遺失或被盜——小偷仍然需要通過驗證器的檢查;另一把鑰匙可以恢復存取。但鑰匙無法移除:如果某把 鑰匙可能落入他人手中,請把資金轉到新錢包,因為那把鑰匙在每條網絡上都仍然可以動用舊地址的資金。
  • 釣魚——通行密鑰無法被輸入到假網站,瀏覽器也只會把它提供給 getvela.app 及其子域名上的頁面。
  • 惡意 dApp——由清晰簽署、授權防護,以及一條拒絕規則共同應對:由你的 Safe 呼叫它自己的請求—— enableModule、addOwnerWithThreshold、swapOwner、setFallbackHandler、setGuard 以及同一系列的其他方法——都會被攔下,放進批量交易或 MultiSend 裡也一樣攔, 任何帶 delegatecall 的分支和 SafeTx 類型化資料簽名亦然。 其中任何一個,只要簽署一次,就會像 Bybit 那份載荷一樣徹底交出帳戶, 所以錢包根本不會把它們拿出來讓你簽。
  • 後端服務被入侵(中繼、索引、鏈數據、匯率)——沒有簽署能力,但有實際影響:拒絕服務、誤導性的描述檔 或代幣列表、改變法定貨幣金額實際轉出多少的錯誤匯率,以及(就中繼而言)上面提到的上鏈時機和 gas 價格。 從鏈數據服務取得的說明,永遠不會被稱作已驗證—— 只有 App 內置的那一份,或者與內置那一份完全相同的取得結果,才配得上這個詞; 其餘的會附上一行字,說明沒有任何東西為它做過認證。而每一項服務都可以替換。
  • App 分發渠道被入侵——被篡改的網頁部署、擴充功能更新或 App 版本,可能向你呈現一筆惡意交易讓你簽署。 這就是 Bybit 那一類攻擊。目前的緩解措施有限:App 本身的解碼和授權防護、經過 公證的 macOS 版本,以及你親自從原始碼編譯擴充功能或 App(發佈套件附有 SHA-256 校驗碼, 以及標明提交和工作流程運行的 GitHub 建置來源證明;Windows 安裝程式仍然沒有做程式碼簽名)。 可信簽署器是一個不與 App 共用程式碼的獨立簽名頁,可以在桌面版、 iPhone 和 Android App 中選為你的簽署方式;桌面版的完整性檢查遇到不相符的頁面只會寫入日誌, 手機版尚未進行這項檢查。
  • 從該域名提供的任何內容——getvela.app 或其子域名上的任何頁面,包括它載入的程式碼,都可以向 Vela 通行 密鑰請求簽署,而提示只會顯示「getvela.app」。因此網站禁止自己的頁面使用通行密鑰,並且不會在持有鑰匙的 頁面上載入分析程式碼。如果域名易手,新的擁有者還會控制哪些 App 可以使用這些通行密鑰。擴充功能和自行 編譯的 App 自帶程式碼,不過在預設情況下,它們仍會從 getvela.app 下的服務取得描述檔,並使用那裏的服務。

復原

建立錢包時,會把它的公鑰和地址發佈到 Gnosis 上的公開註冊表合約(可複製到以太坊)。在新裝置上,你用 任何一把鑰匙登入;App 會透過索引找到錢包,如果找不到,就直接從註冊表讀取,並核對這組鑰匙能否重新 計算出紀錄中的地址。只有一把鑰匙的錢包,也可以完全不用註冊表,憑兩次簽名重建。

詳情:復原與登入。

如果 Vela 消失

你的資金留在鏈上你自己的 Safe 裏。合約不依賴 Vela,而 Vela 運行的每一項服務都是開源的,其他人也可以 運行。唯一無法轉移的,是通行密鑰的依賴方 getvela.app:把網頁版錢包部署到其他域名上,會建立另一個錢包。對於現有的錢包,Vela 瀏覽器擴充功能 (獲授權後可使用 getvela.app 通行密鑰)和你自行編譯的 App(配合手機或安全密鑰),在沒有 getvela.app 的 情況下仍然可以繼續使用。自行架設指南逐一說明每條途徑 及其限制。要在某條鏈上獨立存取錢包,該鏈也必須支援 EIP-7951 / RIP-7212。

私隱

不需要帳戶、電郵或 KYC。建立錢包時寫入註冊表的內容會公開:每把鑰匙的公鑰和憑證 ID、驗證器型號、你的 錢包名稱和鑰匙名稱、地址,以及已簽署的登記資料。Vela 的索引在提交這條紀錄之前會看到它,也會看到你查詢 名稱的那些地址;Vela 的中繼會看到你的地址、你提交的操作,以及你的 App 使用的 RPC 端點(包括其網址中的 任何 API 密鑰),並會把操作保存一段有限的時間,用於重試和診斷問題。每一項服務都能看到你的 IP 地址。網站 使用不設 cookie 的分析工具。完整清單以私隱政策為準。

開源

全部均採用 MIT 授權:錢包(所有 App 和核心)、中繼、公鑰索引、匯率服務和鏈數據目錄。程式碼: github.com/mondaylabsltd。

沒有代幣

Vela 沒有代幣,也沒有發行代幣的計劃。沒有任何東西可以購買、賺取收益或投機炒賣。手續費以各網絡的原生幣或 穩定幣支付。

審計狀況與局限

Safe 的合約、它的 4337 模組和通行密鑰模組,以及 EntryPoint v0.7,都經過獨立審計並被廣泛使用。Vela 自己的程式碼——各個 App、後端服務和註冊表合約——沒有經過獨立的第三方審計,目前亦沒有排期;專業審計是 項目有能力出資時的目標,而不是一個有日期的承諾。在此之前,審查是非正式的:程式碼公開,社群中有能力的 成員會閱讀它,也會借助 AI 工具審查。這有幫助,但不等同於專業審計。請把 Vela 視為 alpha 階段的軟件。詳情: 審計與已知問題。

參考資料

  • ERC-4337——透過 EntryPoint 實現帳戶抽象
  • EIP-1271——合約的簽名驗證
  • ERC-7730——清晰簽署描述檔
  • EIP-5792——錢包批量呼叫(wallet_sendCalls)
  • EIP-7951 / RIP-7212——P-256 簽名驗證預編譯合約
  • WebAuthn / FIDO2——通行密鑰
  • Safe 智能帳戶 v1.4.1