自2016 年推出以來,截至2022 年3 月,MetaMask(小狐狸錢包)已獲得3000 萬月活躍用戶。它擁有全球用戶群,其中美國、菲律賓、巴西、德國和尼日利亞的參與度較高。
MetaMask 是以太坊社區不可或缺的應用程序之一,在Web3世界,MetaMask無人不知曉,吸引了人們通過MetaMask開啟了加密之旅。隨著NFT、遊戲和DAO 為web3 帶來大量新用戶,錢包仍然是生態系統中的基礎組成部分——它們是用戶與區塊鏈之間所有交互的核心和中心。
這篇文章將側重於區塊鏈賬戶和MetaMask 的機制,偏向於以太坊。但如果你對它的起源和商業方面感興趣,The Generalist 有一個非常詳盡的故事。這篇文章中的信息是從Mastering Ethereum 書籍、MetaMask 支持文章和Ethereum Homestead 文檔等來源收集的。因此,如果您有興趣可以深入了解,這些地方充滿了珍貴的細節。
它們也可能對某些人感到恐懼。但實際上,當今(傳統金融錢包)的大多數錢包應用程序都是圍繞一個簡單的中心組件構建的擴展:一個由公鑰(賬號)/私鑰(密碼)對組成的賬戶。
從原則開始
在我們談論MetaMask 本身之前,讓我們先深入了解一些支撐它的基本概念。
地址(賬戶)
地址是區塊鏈的核心原語。在以太坊中,有兩種類型的地址:外部擁有地址(external Owned accounts)和合約地址(Contract accounts)。
每個地址都由一個公鑰和一個私鑰定義。公鑰由私鑰創建產生,區塊鏈上的所有地址都按其地址(公鑰)排序。
讓我們來分析一下這兩種類型的賬戶及其特徵:
外部擁有的地址
1. 有一個以太幣餘額
2. 可以發送交易(即轉移或觸發智能合約代碼)
3. 由私鑰控制
4. 沒有關聯代碼
合約地址
1. 帶有以太幣餘額的實際智能合約
2. 有關聯代碼
3. 代碼執行由從其他合約或地址收到的交易或消息觸發
以太坊上的每一個動作都是由一個外部擁有的賬戶觸發的。
如果這篇文章是關於錢包的,我們為什麼要談論地址(賬戶)?好吧,從本質上講,錢包不過是客戶經理。
什麼是錢包?
如果我們把chrome擴展和移動應用程序的所有功能都去掉,那麼這個可愛的小狐狸背後就是一個用來存儲和管理用戶私鑰的軟件。
每個錢包都從一個私鑰管理組件開始。
一旦有了私鑰管理方面,錢包就變成了一個用戶界面,允許用戶與區塊鏈進行交互。它可以促進從一個賬戶到另一個賬戶的資金轉移、管理私鑰、跟踪代幣餘額並幫助您簽署交易。但是如果沒有私鑰管理,這些事情都不會發生。
把它想像成一個鑰匙扣,以太坊錢包的主要工作是包含用戶的私鑰。它們實際上並不持有任何真正的代幣,它們僅反映在區塊鏈上為你的賬戶分別有多少代幣。
區塊鏈只是一個分佈式賬本,它將您的賬戶與您擁有的代幣數量相關聯。錢包持有的鑰匙是將以太幣或代幣轉移給他人的唯一要求。使用您的私鑰,你可以通過使用你的私鑰簽名改變交易賬本,我們將在後面的部分詳細介紹這一點。
錢包的種類
區分錢包的一種方法是通過私鑰的生成方式。
錢包的私鑰生成主要有兩種類型:確定性和非確定性,它們的區別在於是否相互關聯。
非確定性錢包具有由隨機數生成的私鑰,並且這些私鑰彼此不相關。
這更像是傳統的以太坊錢包。它以錢包文件的形式出現,其中存儲了一個隨機生成的私鑰。確定性錢包會為每個地址生成一個新的錢包文件,備份和恢復可能會更加麻煩。
非確定性錢包被認為不如確定性錢包。
確定性錢包具有由單個主私鑰(稱為種子,也可以稱為助記詞)生成的私鑰。在確定性錢包中,私鑰是相互關聯的,並且始終可以使用相同的種子進行複制。這是我們比較熟悉的錢包類型,因為它被認為是一種標準並被MetaMask 使用。
種子表示為您可以寫下的英語單詞列表(通常為12 個單詞),以便在需要時恢復您的密鑰。這也是您在MetaMask 中看到的“私鑰恢復短語”。它有時也被稱為你的“助記詞”。但是,如果有人抓住了他們,他們可以立即訪問您的錢包並使用您的資產做各種事情。這就是為什麼建議永遠不要分享您的助記詞,甚至不要以電子形式存儲它。
種子短語可以方便地導出和導入錢包,並輕鬆地將所有私鑰遷移到不同的錢包應用程序中。例如,如果您在MetaMask 上有一個錢包,您仍然可以通過輸入助記詞將該錢包導入您的Rainbow 或Argent 移動應用程序。
確定性錢包的最先進形式是分層確定性(HD)錢包,基於比特幣的BIP-32 標準。鍵被稱為“分層”,因為它們代表樹結構。父密鑰可以派生一組子密鑰,然後子私鑰可以派生另一系列孫密鑰。
HD 錢包優於其他類型的確定性錢包,因為:
1. 樹形結構可以代表一種組織結構。分支機構可以被視為公司中的子團隊或子公司,這提供了相應的組織預算和付款的機會。
2. 無需訪問相應的私鑰即可生成公鑰。
種子短語(助記詞)是一組英語單詞,不過這只是對私鑰進行編碼的一種方式。它目前被廣泛使用,因為其他類型的表示(如十六進製字符串)在寫在紙上時可能會導致更高的錯誤率。在較高級別上,助記詞是由BIP-39定義的過程生成的,該過程涉及從一些信息源開始,轉換數據,然後將其映射到單詞列表。
有一套行業標準(如助記詞和HD 錢包)影響錢包的實現並導致錢包的互操作性。由於這些標準,您可以輕鬆地將錢包從不同的錢包應用程序導出和導入。
錢包類型
錢包可以有幾種不同的形式,最常見的:
-
桌面錢包:MyCrypto, Gnosis Safe 。
-
瀏覽器插件錢包:MetaMask, MyEtherWallet, Web3Auth。
-
手機錢包:Argent, Coinbase Wallet, MetaMask, Rainbow, Trust Wallet。
-
硬件錢包(一種在線訪問資金的安全方法,因為它們在簽署交易時不會暴露私鑰):Ledger, Trezor, KeepKey, Bitbox, Lattice1。
智能合約錢包
例如Argent 和Gnosis Safe 是智能合約錢包,這些類似於本文開頭描述的“合約地址”。
這些錢包使用外部擁有賬戶的替代品,並建立在智能合約之上。由於業務邏輯有更多的實現空間,它們可以提供無助記詞恢復、自動阻止某些對不可信合約的轉賬、社會恢復、轉賬限制、賬戶凍結等功能。
以下是一個非常簡單的智能合同錢包的示例代碼,基於Block Explorer的教程:(教程詳細,請閱讀原文)
進入MetaMASK
我們一直在等待的主角,這只幾何小狐狸告訴我們“ 去中心化的網絡在等待著” ——我們中的許多人與之有著愛恨交織的關係。
MetaMask 是一種非託管(或自託管)加密貨幣錢包。這意味著沒有第三方“保管人”持有您的私鑰。它讓你活出“不是你的鑰匙,就不是你的代幣”的精神。 MetaMask 不存儲有關錢包的任何數據,您看到的所有內容都在本地級別的瀏覽器或移動應用程序中。
MetaMask 使用3 種不同類型的“秘密”來保護您的錢包:
1. 秘密恢復短語(助記詞):如前所述,此短語是基於您的主密鑰以數學方式生成的助記符。這些詞,當按特定順序放置時,可以重新生成你錢包中的所有賬戶。請記住,一個錢包中可以有多個賬戶。你的錢包是持有許多公鑰/私鑰的鑰匙串。每個密鑰對應於錢包中的一個賬戶。當MetaMask 從Secret Recovery Phrase 重新生成您的錢包時,它可能一開始只生成第一個賬戶,但由於錢包是確定性的,因此可以按照相同的順序重新創建其他賬戶。
2. 私鑰:每個賬戶都有自己的公鑰和私鑰。通常,可以看到賬戶及其地址,即公鑰。個人私鑰可用於將該特定賬戶(並且僅該賬戶)導入任何其他錢包應用程序。
3. 密碼:這用於保護錢包應用程序本身。您只用它來解鎖應用程序。 FaceID 適用於移動設備。
Coinbase與MetaMask
值得注意的是,Coinbase(核心應用程序)是一個託管錢包,因此不同之處在於,Coinbase 不是您持有自己的私鑰,而是實際上為您存儲它們。所以你不能直接導出你的Coinbase 錢包,然後將其導入另一個錢包,比如MetaMask。但是,您可以從Rainbow 錢包到MetaMask(反之亦然)這樣做,因為兩者都是非託管的。
注意:Coinbase 還通過Coinbase 錢包提供非託管解決方案。
MetaMask 如何連接到區塊鍊網絡
MetaMask 等其他錢包也可以成為您通往公共區塊鍊網絡的鑰匙。讓我們提醒自己web瀏覽器的工作:一個允許我們訪問萬維網的軟件程序。當用戶通過輸入URL地址請求網頁時,瀏覽器會從web服務器獲取內容,並將其顯示在用戶的設備上。
區塊鏈節點不斷同步網絡狀態並觀察交易歷史。同樣,MetaMask 允許您訪問區塊鍊網絡,因為您當前的瀏覽器無法做到這一點。
為了與區塊鏈節點通信,有一個稱為JSON-RPC 的標準,它允許從它們請求和提交數據。這些通過JSON-RPC 的請求可以通過HTTP 或WebSocket 進行。
MetaMask 如何發現這些節點以發送請求?它使用Infura,它提供了一個高度可用、可擴展的區塊鏈API,可以訪問區塊鍊網絡。
交易的生命週期
區塊鍊是一個分佈式賬本,就像賬戶及其資產的映射。設想一個電子表格,其中每一行都是一個賬戶(以太坊地址),且每一列都是它持有的加密資產。
假設Alice想要給Bob發送1個Eth。這時Alice打開她的MetaMask錢包,輸入Bob的錢包地址,然後點擊發送。當她點擊發送時,她也在使用她的私鑰來簽署這筆交易。
該筆交易將進入本地內存池(mempool),然後由以太網絡中最近的節點獲取該內存池。
發起此交易時,Alice 的交易將根據她的gas(手續費)設置進行優先級排序,交易在網絡中的節點間傳播。在處理交易後,節點還將在執行轉移之前檢查Alice 是否有足夠的以太幣可以使用。
最後,轉賬只是對賬本的修改,從Alice 的餘額中扣除1 ETH,並在Bob 的賬戶中增加1 ETH。
核心功能
讓我們來總結一下MetaMask的主要特性——注意,它們中的許多都與私鑰管理相關或圍繞著密鑰(也叫私鑰)管理:
1. 賬戶管理(創建、導入、導出賬戶,對接硬件錢包)
2. 連接公共區塊鍊網絡
3. 簽署交易(轉賬、智能合約交互),允許用戶確定每筆交易的天然氣價格
4. 使用fiat購買加密貨幣(使用MoonPay, Transak, Wyre)
5. 交換標記
6. 顯示資產(ERC20代幣,nft)
7. 顯示活動(事務歷史記錄)
8. 鏈接dApp
錢包標準一直在發展,MetaMask 也是如此。我們可能會開始看到更多對社交恢復錢包、多因素身份驗證等功能的嘗試,以提高安全性,以及通過在連接到dApp 時將功能注入MetaMask 本身來實現新的用戶體驗。
錢包用戶體驗、dApp 交互和安全方面有許多創新的可能性。儘管MetaMask 鋪平了道路,但錢包的工作還遠未完成。例如,我們還沒有完全弄清楚如何在移動設備上簽署交易。由於行業標準,錢包可以組合和重新構建,以滿足用戶和應用程序的需求。
有人可能會爭辯說,錢包類似於數字身份/護照、銀行賬戶、瀏覽器等web2 概念。可能是這些,也可能是其他東西。我們剛剛開始觸及表面——發展空間是巨大的。