白皮書
摘要
Vela 是一款給以太坊和其他 EVM 網路用的自我保管智慧合約錢包。每個錢包都是一個未經修改的 Safe v1.4.1 帳戶,透過 ERC-4337 運作,由最多七把密碼金鑰控制——這些 WebAuthn P-256 金鑰存放在你的裝置、你的密碼管理工具或硬體安全金鑰裡。沒有助記詞。
Vela 這家公司從不持有你的金鑰,在你的 Safe 上也沒有任何角色,所以它自己無法動用、凍結或扣押 你的資金。不過,要你的金鑰簽署的軟體,是 Vela 撰寫並提供的——這正是下面的威脅模型之所以重要的原因。 各個應用程式、負責送出交易的中繼,以及其他配套服務都是開源的,每一項你都能自己架一份。 簡單來說,你需要信任的是:合約、存放你金鑰的驗證器、你用來簽署 的那個應用程式的程式碼、你的密碼金鑰所屬的網域,以及你讓應用程式連線的那些服務。
為什麼要做 Vela
- 助記詞錢包把一個 12 到 24 個單字的祕密擺在每個使用者面前:一個單點故障,也是永遠的釣魚目標。
- 託管錢包拿掉了助記詞,代價是把資金交給別人保管。
- 依賴某一家公司伺服器和封閉原始碼的密碼金鑰錢包,拿掉了助記詞,但公司一旦退場,你就被困住了。
- 盲簽——核准你看不懂的資料——仍然很常見,也是錢包被盜領的途徑之一。
Vela 想要的是密碼金鑰的便利,同時不帶上述任何一種依賴:標準的帳戶、公開的程式碼、可以替換的服務, 以及簽署之前就能讀懂的交易。
設計原則
- 自我保管,沒有例外。 金鑰由你的驗證器產生和保管。Vela 的服務永遠看不到它們;它們看得到 什麼,列在「隱私」一節。
- 標準合約,不做修改。 通往你資金的路徑上,沒有任何一份合約是 Vela 寫的。
- 查證,而不是信任。 應用程式和服務的程式碼都公開;服務可以自架。
- 先解碼,再簽署。 解不開的內容會附上明確的盲簽警告。
- 少做一點。 錢包只負責發送、收款,以及替你選擇的 dApp 簽署。
架構
Vela 應用程式——網頁版、瀏覽器擴充功能、桌面版(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 作為模組和 fallback handler,透過 EntryPoint v0.7 運作。它的擁有者是 Safe 密碼金鑰模組 v0.2.1 的簽署器:第一把金鑰由共用簽署器驗證,其餘每一把各由 Safe 工廠合約建立的簽署器合約驗證。 門檻為 1。
位址是確定的、可預先算出的(counterfactual):在部署任何東西之前,就用 CREATE2 從包含每一把
初始金鑰的 Safe 初始化資料算出來,在每一條網路上都一樣。你馬上就能往這個位址收款;你在每條網路上的
第一筆交易會部署錢包,部署費用就包含在這筆交易的手續費裡。
金鑰
一個錢包有一到七把金鑰,在建立時固定。其中任何一把都能單獨簽署(1-of-n)。金鑰可以是:
- 你正在用的裝置上的密碼金鑰——如果你允許,會由 iCloud 鑰匙圈、Google 密碼管理工具或其他密碼管理工具同步;
- 掃描 QR 碼連線的另一支手機(WebAuthn 的 hybrid 傳輸方式);
- 透過 USB 或 NFC 連接、不會同步到任何地方的硬體安全金鑰。
每一次簽署都要經過驗證器本身的使用者驗證——生物辨識或裝置密碼,或安全金鑰的 PIN 碼加觸碰。沒有工作階段金鑰。 金鑰之後不能新增、移除或更換:在錢包還沒部署的每一條鏈上,這個位址代表的仍然是最初那組金鑰,所以只要在某條鏈上 更換擁有者,帳戶在不同鏈上就會變得不一致。
密碼金鑰屬於某個依賴方——Vela 的金鑰是為 getvela.app 建立的。瀏覽器只會把它們提供給
getvela.app 和它的子網域上的頁面,這讓它們能防範釣魚;同時這也是一種依賴,本文後面會再談到。
簽署流程
- 組出你的 Safe 的 UserOperation——其中包括一筆付給中繼的轉帳——並進行模擬。
- 解碼成人看得懂的意圖,顯示給你看。
- 簽署:驗證器確認是你本人之後,對操作的雜湊值產生 WebAuthn 斷言。
- 編碼成密碼金鑰模組需要的 Safe 簽章格式。
- 送出:把簽好的操作交給中繼,由它呼叫 EntryPoint。
- 鏈上驗證:密碼金鑰模組先用 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 描述檔解碼——常見合約的描述檔內建在應用程式裡,其餘從鏈資料服務取得, 或比對標準的代幣形式——最後才去查公開的函式選擇器資料庫,並標示為「盡力解析」。剩下解不開的,會 附上明確的盲簽警告。取得的描述檔永遠不會被標示為已驗證—— 只有應用程式內建的那一份,或者和內建那一份完全一致的取得結果,才配得上這個詞。 「無上限」額度(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—— 並接受任何具備它會檢查的 12 份合約和 EIP-7951 / RIP-7212 預編譯合約的 EVM 網路。 這 12 份裡有兩份是 Safe 的密碼金鑰簽署器工廠合約和它部署出來的簽署器程式碼, 只有持有多把金鑰的錢包才需要;檢查會把它們分開列出來。
安全模型
Vela 做不到的事
- 自行動用、花費或凍結你的資金——只有你的金鑰能授權你的 Safe,Vela 在上面沒有任何角色。(Vela 能做的,是推出要你簽署的軟體;請看下面的威脅。)
- 在你簽署之後修改交易——任何改動都會讓簽章失效。
- 讀取你的私鑰——它們留在你的驗證器裡。
- 替你的錢包新增或移除金鑰。
「無法凍結」管不到的:代幣本身。 USDC、USDT 和大多數以法幣為準備的代幣,都允許發行方把任何位址 列入黑名單,包括你的。這是發行方的權力,不管你用哪一款錢包都一樣存在。自我保管帶給你的,是 Vela 不會成為第二個 擁有這種權力的一方。
你需要信任的
- 合約:Safe、它的 4337 模組和密碼金鑰模組、EntryPoint v0.7,以及鏈上的 EIP-7951 / RIP-7212 預編譯合約。
- 網域:getvela.app 或它任何子網域上的頁面,都能要求你的金鑰簽署。
- 存放你金鑰的驗證器,以及——對同步的密碼金鑰來說——它背後的 Apple、Google 或密碼管理工具帳號。
- 你用來簽署的那個應用程式的程式碼。 是它組出交易,並告訴你交易在做什麼。被竄改的應用程式可以給你看一樣 東西、要你簽另一樣,而驗證器跳出的提示分辨不出其中的差別。
- 你讀取資料的 RPC 節點:說謊的節點可以顯示錯誤的餘額或錯誤的模擬預覽。你可以設定自己的節點。
- 鏈資料和匯率服務:它們提供代幣清單、描述檔、可以用來付手續費的代幣清單,以及把法幣金額換算成 代幣金額所用的匯率。
- 中繼:它改不了你簽署的內容,但可以延遲或拒絕送出、決定交易什麼時候上鏈(因此可能在你的滑價範圍內 搶先交易一筆兌換),並設定你的手續費所依據的 gas 價格,最高可達錢包自己讀數的三倍。
考慮過的威脅
- 裝置遺失或被偷——小偷仍然要通過驗證器的檢查;另一把金鑰可以讓你恢復存取。但金鑰無法移除:如果 某把金鑰可能落入別人手裡,請把資金轉到新錢包,因為舊位址在每一條網路上都仍然可以被那把金鑰動用。
- 釣魚——密碼金鑰無法被輸入到假網站,瀏覽器也只會把它提供給 getvela.app 和它的子網域上的頁面。
- 惡意 dApp——靠清晰簽署、授權防護,以及一條拒絕規則共同應對:從你的 Safe 呼叫它自己的請求——
enableModule、addOwnerWithThreshold、swapOwner、setFallbackHandler、setGuard以及同一族的其他方法——都會被擋下來,放進批次交易或MultiSend裡也一樣擋, 任何帶delegatecall的分支和SafeTx型別化資料簽署同樣如此。 這裡面任何一個,只要簽一次,就會像 Bybit 那份酬載一樣把帳戶整個交出去, 所以錢包根本不會把它們拿出來讓你簽。 - 後端服務被入侵(中繼、索引、鏈資料、匯率)——沒有簽署能力,但有實際的影響:拒絕服務、誤導性 的描述檔或代幣清單、會改變法幣金額實際轉出多少的錯誤匯率,以及(就中繼而言)上面提到的上鏈時機和 gas 價格。從鏈資料服務取得的說明,永遠不會被稱作已驗證—— 只有應用程式內建的那一份,或者和內建那一份完全一致的取得結果,才配得上這個詞; 其餘的會附上一行字,說明沒有任何東西替它做過認證。每一項服務也都可以替換。
- 應用程式的發布管道被入侵——被竄改的網頁部署、擴充功能更新或應用程式建置版本,可能拿一筆惡意交易給你簽署。 這就是 Bybit 那一類攻擊。目前的緩解措施有限:應用程式本身的解碼與授權防護、 通過公證的 macOS 版本,以及你自己從原始碼建置擴充功能或應用程式(發布套件附有 SHA-256 檢查碼, 以及標明提交和工作流程執行的 GitHub 建置來源證明;Windows 安裝程式仍然沒有做程式碼簽章)。 可信簽署器是一個不和應用程式共用程式碼的獨立簽署頁,可以在桌面版、 iPhone 和 Android 應用程式裡選為你的簽署方式;桌面版的完整性檢查遇到不相符的頁面只會寫進紀錄檔, 手機版還不做這項檢查。
- 從這個網域提供的任何內容——getvela.app 或它子網域上的任何頁面,包括它載入的指令碼,都能要求 Vela 的密碼金鑰簽署,而提示只會顯示「getvela.app」。因此網站禁止自己的頁面使用密碼金鑰,也不會在存放金鑰 的那個頁面上載入分析指令碼。如果網域易主,新的擁有者還會控制哪些應用程式可以使用這些密碼金鑰。擴充功能和自行建置的 應用程式帶著自己的程式碼,不過預設仍會從 getvela.app 底下的服務取得描述檔、使用那裡的服務。
復原
建立錢包時,它的公鑰和位址會發布到 Gnosis 上的一份公開註冊表合約(可以複製到以太坊)。在新 裝置上,你用任何一把金鑰登入;應用程式會透過索引找到錢包,找不到的話就直接讀取註冊表,並核對這組金鑰 是否能算出紀錄上的位址。只有一把金鑰的錢包,還可以完全不靠註冊表,憑兩次簽章重建。
詳情請看復原與登入。
如果 Vela 消失了
你的資金留在鏈上你自己的 Safe 裡。合約不依賴 Vela,Vela 執行的每一項服務都是開源的,別人也能
接手架設。唯一搬不走的,是密碼金鑰的依賴方 getvela.app:把網頁錢包放到別的網域上,得到的是另一個錢包。對已經存在的錢包來說,
Vela 瀏覽器擴充功能(取得授權後可以使用 getvela.app 的密碼金鑰)和你自己建置的應用程式(搭配手機或安全
金鑰)不靠 getvela.app 也能繼續使用。自架指南 逐一說明了每一條路和它的限制。要在某條鏈上獨立存取錢包,還需要那條鏈支援 EIP-7951 / RIP-7212。
隱私
不需要帳號、電子郵件或 KYC。建立錢包時寫進註冊表的內容會公開:每把金鑰的公鑰和憑證 ID、驗證器型號、 你的錢包名稱和金鑰名稱、位址,以及簽署過的註冊資料。Vela 的索引在送出這筆紀錄之前會看到它, 也會看到你查詢名字的那些位址;Vela 的中繼會看到你的位址、你送出的操作,以及你的應用程式使用的 RPC 節點(包括網址裡的任何 API 金鑰),並會把操作保留一段時間,用來重試和排查問題。每一項服務都看得到 你的 IP 位址。網站使用不設 cookie 的流量分析。完整清單以隱私權政策為準。
開源
全部採用 MIT 授權:錢包(所有應用程式和核心)、中繼、公鑰索引、匯率服務和鏈資料目錄。 程式碼:github.com/mondaylabsltd。
沒有代幣
Vela 沒有代幣,也沒有發幣計畫。沒有什麼可以買、可以挖、可以炒。手續費用各網路的原生幣或穩定幣支付。
稽核狀態與限制
Safe 的合約、它的 4337 模組和密碼金鑰模組,以及 EntryPoint v0.7,都經過獨立稽核,也被廣泛使用。 Vela 自己的程式碼——各個應用程式、後端服務和註冊表合約——沒有經過獨立的第三方稽核,目前也沒有 排定時程;專業稽核是專案有能力出資時的目標,而不是一個有日期的承諾。在那之前,審查是非正式的:程式碼 公開,有能力的社群成員會閱讀,也會借助 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