主页 > 华为手机安装imtoken > MetaMask 钱包剖析

MetaMask 钱包剖析

华为手机安装imtoken 2023-06-12 06:04:04

文章编译:区块独角兽(授权转载)

不懂英文这么申请以太坊钱包_以太坊钱包官方网站_以太坊钱包

自2016年上线以来,截至2022年3月,MetaMask(小狐狸钱包)已获得3000万月活跃用户。 它拥有全球用户群,来自美国、菲律宾、巴西、德国和尼日利亚的参与度很高。

MetaMask 是以太坊社区中不可或缺的应用程序之一。 在 Web3 世界中,MetaMask 家喻户晓,吸引着人们通过 MetaMask 开始他们的加密之旅。 随着 NFT、游戏和 DAO 为 web3 带来大量新用户,钱包仍然是生态系统的基本组成部分——它们是用户与区块链之间所有交互的核心和中心。

本文将重点介绍区块链账户和 MetaMask 的机制,优先考虑以太坊。 但如果您对它的起源和商业方面感兴趣,The Generalist 有一个非常详细的故事。 这篇文章中的信息是从 Mastering Ethereum 一书、MetaMask 支持文章和 Ethereum Homestead 文档等来源收集而来的。 所以如果你有兴趣深入挖掘,这些地方充满了珍贵的细节。

它们也可能令某些人感到恐惧。 但实际上,今天的大多数钱包应用程序(传统金融钱包)都是围绕一个简单的中央组件构建的扩展:一个由公钥(帐号)/私钥(密码)对组成的帐户。

从原则开始

在我们谈论 MetaMask 本身之前,让我们深入了解支撑它的一些基本概念。

不懂英文这么申请以太坊钱包_以太坊钱包官方网站_以太坊钱包

地址(账户)

地址是区块链的核心原语。 在以太坊中,有两种类型的地址:外部拥有账户和合约账户。

每个地址都由公钥和私钥定义。 公钥是从私钥创建的,区块链上的所有地址都按地址(公钥)排序。

我们来分析一下两类账户及其特点:

外部地址

1. 拥有以太币余额

2.交易可以发送(即转账或触发智能合约代码)

不懂英文这么申请以太坊钱包_以太坊钱包_以太坊钱包官方网站

3.私钥控制

4.没有关联代码

合约地址

1. 带有以太币余额的实际智能合约

2.关联代码

3. 代码执行由从其他合约或地址收到的交易或消息触发

以太坊上的每一个动作都是由一个外部拥有的账户触发的。

如果这篇文章是关于钱包的,为什么我们要谈论地址(账户)? 好吧,本质上,钱包只不过是一个客户经理。

什么是钱包?

如果我们拿掉chrome扩展和移动应用的所有功能,这只可爱的小狐狸背后是一个存储和管理用户私钥的软件。

每个钱包都从私钥管理组件开始。

一旦有了私钥管理方面,钱包就变成了一个用户界面,允许用户与区块链进行交互。 它有助于将资金从一个账户转移到另一个账户、管理私钥、跟踪代币余额并帮助您签署交易。 但如果没有私钥管理,这些事情都不会发生。

把它想象成钥匙串,以太坊钱包的主要工作是包含用户的私钥。 它们实际上并不持有任何真正的代币不懂英文这么申请以太坊钱包,它们只是反映您在区块链上的帐户有多少代币。

区块链只是一个分布式账本,将你的账户与你拥有的代币数量相关联。 钱包持有的密钥是将以太币或代币转移给他人的唯一要求。 使用您的私钥,您可以通过使用您的私钥对交易进行签名来更改交易的分类帐,我们将在后面的部分详细介绍。

以太坊钱包官方网站_以太坊钱包_不懂英文这么申请以太坊钱包

以太坊钱包官方网站_不懂英文这么申请以太坊钱包_以太坊钱包

钱包类型

区分钱包的一种方式是私钥的生成方式。

钱包私钥的生成主要有两种:确定性和非确定性,它们之间的区别在于它们是否相互关联。

非确定性钱包具有由随机数生成的私钥,并且这些私钥彼此不相关。

这更像是传统的以太坊钱包。 它以钱包文件的形式出现,其中存储了随机生成的私钥。 确定性钱包会为每个地址生成一个新的钱包文件,备份和恢复可能会比较麻烦。

非确定性钱包被认为不如确定性钱包。

确定性钱包具有从单个主私钥(称为种子,也可称为种子短语)生成的私钥。 在确定性钱包中,私钥是链接在一起的,并且始终可以使用相同的种子进行复制。 这是我们更熟悉的钱包类型,因为它被认为是一种标准并被 MetaMask 使用。

种子表示为英语单词列表(通常为 12 个单词),您可以写下这些单词以便在需要时恢复您的密钥。 这也是您在 MetaMask 中看到的“私钥恢复短语”。 它有时也被称为您的“记忆短语”。 但是,如果有人掌握了它们,他们可以立即访问您的钱包并对您的资产进行各种操作。 这就是为什么建议永远不要分享您的助记词,甚至不要以电子方式存储它。

助记词可以轻松导出和导入钱包,轻松将所有私钥迁移到不同的钱包应用程序。 例如,如果您在 MetaMask 上有一个钱包,您仍然可以通过输入您的助记词将该钱包导入到您的 Rainbow 或 Argent 移动应用程序中。

确定性钱包的最先进形式是基于比特币 BIP-32 标准的分层确定性 (HD) 钱包。 键被称为“分层的”,因为它们代表树结构。 父密钥可以派生出一组子密钥,而子私钥又可以派生出另一组孙密钥。

HD 钱包优于其他类型的确定性钱包,因为:

1.树形结构可以表示组织结构。 分支机构可以被视为公司内的子团队或子公司,这提供了相应地组织预算和付款的机会。

2. 无需访问对应的私钥即可生成公钥。

种子短语(助记词)是一组英文单词,但它只是一种对私钥进行编码的方式。 它目前被广泛使用,因为其他类型的表示形式,例如十六进制字符串不懂英文这么申请以太坊钱包,在写在纸上时会导致更高的错误率。 在高层次上,助记符是由 BIP-39 定义的过程生成的,该过程涉及从一些信息源开始,转换数据,然后将其映射到单词列表。

以太坊钱包官方网站_不懂英文这么申请以太坊钱包_以太坊钱包

以太坊钱包_不懂英文这么申请以太坊钱包_以太坊钱包官方网站

有一套行业标准(例如助记词和 HD 钱包)会影响钱包的实施并导致钱包的互操作性。 由于这些标准,您可以轻松地从不同的钱包应用程序导出和导入钱包。

钱包类型

钱包可以有几种不同的形式,最常见的是:

以太坊钱包_不懂英文这么申请以太坊钱包_以太坊钱包官方网站

智能合约钱包

例如Argent和Gnosis Safe都是智能合约钱包,这些类似于本文开头描述的“合约地址”。

这些钱包使用外部账户的替代方案,并建立在智能合约之上。 由于业务逻辑有更大的实现空间,它们可以提供无奈恢复、自动阻止某些转账到非信任合约、社交恢复、转账限制、账户冻结等功能。

下面是一个非常简单的智能合约钱包的示例代码,基于Block Explorer的教程:(详细教程请阅读原文)

不懂英文这么申请以太坊钱包_以太坊钱包_以太坊钱包官方网站

输入元掩码

我们一直在等待的主角,一只告诉我们“去中心化网络在等待”的小几何狐狸——我们中的许多人都对它又爱又恨。

不懂英文这么申请以太坊钱包_以太坊钱包官方网站_以太坊钱包

MetaMask 是一种非托管(或自托管)加密货币钱包。 这意味着没有第三方“保管人”持有您的私钥。 它可以让你践行“不是你的钥匙,不是你的代币”的精神。 MetaMask 不存储有关钱包的任何数据,您看到的所有内容都在本地级别的浏览器或移动应用程序中。

MetaMask 使用 3 种不同类型的“秘密”来保护您的钱包:

1. 秘密助记词(助记词):如前所述,这个助记词是根据你的万能钥匙数学生成的助记词。 这些单词按特定顺序放置时,可以重新生成您钱包中的所有帐户。 请记住,一个钱包中可以有多个帐户。 你的钱包是一个钥匙串,里面有许多公钥/私钥。 每个密钥对应钱包中的一个帐户。 当 MetaMask 从 Secret Recovery Phrase 重新生成您的钱包时,一开始它可能只会生成第一个帐户,但由于钱包是确定性的,因此可以按照相同的顺序重新创建其他帐户。

以太坊钱包_不懂英文这么申请以太坊钱包_以太坊钱包官方网站

2.私钥:每个账户都有自己的公钥和私钥。 通常,可以看到帐户及其地址、公钥。 个人私钥可用于将该特定帐户(且仅该帐户)导入任何其他钱包应用程序。

3. 密码:用于保护钱包应用程序本身。 你只用它来解锁应用程序。 FaceID 适用于移动设备。

Coinbase 和 MetaMask

值得注意的是,Coinbase(核心应用程序)是一个托管钱包,所以不同之处在于,Coinbase 实际上为您存储私钥,而不是您持有自己的私钥。 所以你不能只导出你的 Coinbase 钱包并将其导入另一个钱包,如 MetaMask。 但是,您可以从 Rainbow Wallet 到 MetaMask(反之亦然)执行此操作,因为两者都是非托管的。

注意:Coinbase 还通过 Coinbase 钱包提供非托管解决方案。

MetaMask 如何连接到区块链网络

MetaMask 等其他钱包也可以成为您进入公共区块链网络的钥匙。 让我们提醒自己 Web 浏览器的工作:一个允许我们访问万维网的软件程序。 当用户通过输入 URL 地址请求网页时,浏览器会从 Web 服务器获取内容并将其显示在用户的设备上。

区块链节点不断同步网络状态并观察交易历史。 同样,MetaMask 允许您访问区块链网络,而您当前的浏览器则不能。

为了与区块链节点通信,有一个称为 JSON-RPC 的标准,它允许从它们请求和提交数据。 这些基于 JSON-RPC 的请求可以通过 HTTP 或 WebSocket 进行。

MetaMask 如何发现这些节点以向其发送请求? 它使用 Infura,它提供了一个高度可用、可扩展的区块链 API 来访问区块链网络。

以太坊钱包_不懂英文这么申请以太坊钱包_以太坊钱包官方网站

事务生命周期

区块链是一种分布式账本,就像账户及其资产的映射。 想象一个电子表格,其中每一行都是一个帐户(以太坊地址),每一列都是它持有的加密资产。

假设 Alice 想发送 1 Eth 给 Bob。 此时Alice打开她的MetaMask钱包,输入Bob的钱包地址,点击发送。 当她点击发送时,她也在使用她的私钥签署交易。

交易会进入本地内存池(mempool),然后被以太坊网络中距离最近的节点获取。

以太坊钱包官方网站_不懂英文这么申请以太坊钱包_以太坊钱包

当发起此交易时,Alice 的交易会根据她的 gas(手续费)设置进行优先级排序,并在网络中的节点之间传播交易。 处理完交易后,节点还将在执行转账前检查 Alice 是否有足够的以太币可花费。

最后,转账只是对账本的修改,从 Alice 的余额中扣除 1 ETH,并向 Bob 的账户中添加 1 ETH。

核心功能

让我们总结一下 MetaMask 的主要功能——请注意,其中许多功能与私钥管理(又名私钥)相关或围绕着私钥管理:

1. 账户管理(创建、导入、导出账户,对接硬件钱包)

2.连接公链网络

3.签署交易(转账、智能合约交互),让用户决定每笔交易的gas价格

4. 用法定货币购买加密货币(使用 MoonPay、Transak、Wyre)

5.交换代币

6.展示资产(ERC20代币、nft)

7.显示活动(交易历史)

8. 链接 dApp

以太坊钱包官方网站_以太坊钱包_不懂英文这么申请以太坊钱包

钱包标准一直在发展,MetaMask 也是如此。 我们可能会开始看到更多功能尝试,例如社交恢复钱包、用于提高安全性的多因素身份验证,以及通过在连接到 dApp 时将功能注入 MetaMask 本身来提供新的用户体验。

在钱包用户体验、dApp 交互和安全性方面有很多创新的可能性。 虽然 MetaMask 已经铺平了道路,但钱包的工作远未完成。 例如,我们还没有完全弄清楚如何在移动设备上签署交易。 根据行业标准,可以组合和重建钱包以满足用户和应用程序的需求。

有人可能会争辩说,钱包类似于数字身份/护照、银行账户、浏览器等 web2 概念。可能是这些,也可能是其他东西。 我们只是触及表面 - 增长空间是巨大的。