细分数字货币钱包的不同种类

发布于:2025-02-22 ⋅ 阅读:(14) ⋅ 点赞:(0)

  • 中心化钱包 :钱包私钥一般管理在中心化服务器上,代表项目为交易所钱包;例如 Binance 交易所钱包,okx 交易所钱包和 bybit 交易所钱包等。
  • 去中心化钱包(确定性分层钱包) :钱包私钥一般管理在用户的设备上,代表项目为 TP, ImToken, MetaMask 等。
  • 硬件钱包 :钱包私钥管理在离线的硬件设备上,代表项目 ledger, onekey 等。
  • 交易所 Web3 钱包: 一般的交易所 Web3 钱包集成了,中心化钱包,去中心化钱包(确定性分层钱包)和硬件钱包的功能。
  • 托管钱包: 一般为 MPC 算法,每个节点有一个密钥片,网络中没有完整的私钥出现过, N-M 的签名方式,总节点为 N 个,M 个节点签名交易即有效。
  • 多签钱包: EVM 链一般使用 gnosis safe 多签,其他使用传统密码学方式多签。
  • 社交恢复钱包: 密钥分片备份和守护者恢复。
  • EVM 链 AA 钱包: ERC4337 协议独有特性。

一、中心化钱包

1.1 中心化钱包架构

交易所使用的钱包一般都称为中心化钱包,原因是交易所钱包私钥一般管理在中心化服务器上,不同的交易所的私钥管理方式也不一样。

最简单的方式莫过去将私钥做一层 DES 加密之后存储在数据库或者 wallet.data 数据文件中,其次是使用 KMS 环境保存加密的私钥,不管是使用数据文件或者 KMS 保存私钥,交易签名的时候都需要解密私钥之后进行签名,私钥暴露的风险最大,团队成员作恶也非常容易。

其次是 Tee 环境,Tee 环境虽然是一个安全的执行环境,但是私钥也是加密之后存储在这个环境的数据库或者文件里面,每次签名也要在这个环境中解密私钥进行签名,私钥暴露的风险也很大,团队成员想拿到私钥也很容易,只需要签名前传人私钥是打一个日志就行。

最安全和最专业的做法是使用 cloadHSM 或者多节点备份的小型签名机,私钥不会离开设备,需要签名的时候,传入待签名的报文,cloadHSM 或者小型签名机签名结束之后返回签名报文,然后整理签名交易报文发送到区块链网络。

不管是使用数据库、数据文件、 KMS、TEE,还是 CloadHSM,安全级别也是相对的,有一句话说得好: “外贼易挡,家贼难防”,这句话用在钱包管理上真的是太正确了。不管用什么方案,即使是 CloadHSM 或者小型机方案,“家贼也是很难防”,家贼完全可以模拟一笔合法的交易让 CloadHSM 或小型机方案签名,然后把钱盗走。为了防止家贼,正常的交易所钱包都要做链路风控体系。

从上面的架构图中,我们可以看到, 对于交易所钱包来说,通常有这些业务流程:

  • 批量地址生成
  • 充值
  • 提现
  • 归集
  • 热转冷
  • 冷转热
  • 链路风控

很多公司钱包开发,一般就是一个人负责整条链钱包的调研(离线地址生成,离线交易签名和扫块出入金),开发(含充值,提现,归集,热转冷等功能开发,甚至含链路风控的一部分代码)和测试。当然,也有的公司分为三到四团队,调研和离线签是一个团队,扫链出入金,归集和转冷等功能是一个团队,链路风控是一个团队,测试是一个团队。不管怎么分,运维和开发是隔离的,这样做才能做大限度做到人为风控。

1.2 中心化钱包业务细节流程

批量地址生成: 交易所钱包为了性能和快速响应用户,所有交易所钱包都会有一个地址池,地址池里面每次生成成千上万的地址,当用户注册到交易所的时直接给用户分配地址,而不是去生成;当地址池里面的地址少于一定数量时就会去新生成一批。

充值: 扫链服务扫区块链,解析区块里面的交易数据,当交易数据里面的 to 地址是系统里的用户地址时,就说明有用户充值;充值这个过程除了钱包充值扫块之外,还会和风控一起联合,只有风控系统和钱包都认可这笔交易,才会通知业务层;解析的时候需要注意有人构造恶意交易,有的链是可以构造交易攻击的。

提现: 客户端用户输入要提现的地址,金额,链;这些数据将进入交易所业务层,业务层提交数据给钱包,并建立签名参数风控;钱包拿到交易数据之后先验证是否能过风控,没有问题的去链上获取签名参数,组织交易之后生成待签名的交易报文,将交易报文递给签名机,签名机签名之后返回签名的交易报文,钱包服务组织交易之后发送到区块链网络。交易发送完成之后,定时任务需要不断获取这笔交易在链上的详情,然后验证风控,通过之后通知业务层提现成功,上报交易 Hash 等信息。

归集: 归集功能是把用户地址里面的资金全部归集到一个其它地址里面去,归集是一个批量转账的过程,和提现的逻辑比较类似,就是业务类别不一样。

转冷: 将归集地址里面的资金转到一个冷钱包,归集是一个单笔转账的过程,和提现的逻辑比较类似,就是业务类别不一样。

冷转热: 从冷钱包将资金转到热钱包,手动操作的过程。

交易回滚: 交易回滚是指区块链网络的区块回滚或者重组,需要将钱包系统中的交易处理掉的过程,比方说:现在有一条链区块一下从 1000 个块回滚到 500 个块,那么钱包系统里面存储的 500-1000 个块的交易就是无效交易了,需要处理在这个块范围的所用用户的交易。

钱包风控: 钱包风控在整个项目中占据重要的角色,不管是充值,提现,归集,转冷,冷转热中的每一笔交易,业务层和钱包底层都应该建立完善的风控体系。

清结算系统: 负责钱包平台内用户资金的转移、资产划拨及交易结算,确保资金流动的准确性与合规性。

对账系统: 钱包系统与业务层对账,钱包系统实时资产负债表等。

二、去中心化钱包(HD 钱包)

2.1 去中心化钱包架构

去中心化钱包的私钥是管理在用户设备中的,除了用户本人和牛逼的黑客,没有人接触得到。一般的去中心化钱包都是确定性分层钱包;先生成助记词,助记词导出主私钥,主私钥扩展子私钥和公钥匙的方式,公钥再导出地址。

确定性分层钱包(HD钱包)通过一个单一的种子短语(通常是12-24个单词)生成所有密钥和地址。它采用层次化结构,使得每个钱包可以生成多个账户和子地址,而不需要为每个账户单独管理私钥。种子短语是恢复钱包的唯一凭证,极大简化了备份和恢复的复杂度。

关键特点

  1. 种子短语:一个种子短语可以恢复钱包中的所有私钥和地址。
  2. 层次化结构:通过BIP-32标准,钱包内部采用树状结构管理密钥,每个父密钥可以派生多个子密钥。
  3. 隐私保护:每次生成新的地址,避免地址重用,增强交易隐私。
  4. 多币种支持:支持不同币种的管理,通过不同的派生路径(如BIP-44)生成多个币种的地址。
  5. 备份和恢复简便:只需保存种子短语,即可在任何设备上恢复钱包,无需记录每个私钥。

总结

HD钱包通过集中管理种子短语,提供安全、方便的密钥管理方式,且支持多个账户和币种,具有较强的隐私保护和备份恢复优势。

去中心化钱包的私钥一般是加密之后存储在本地设备 sqlite (一种嵌入式关系型数据库管理系统)或者数据文件里面,当要签名交易的时候,需要用户输入密码解密私钥之后再签名。

去中心化钱包一般有以下几个业务流程:

  • 收款
  • 转账
  • 转账记录
  • 闪兑
  • Dapp 浏览器

去中心化钱包比较出名的有 Tp,ImToken,MetaMask 等。

2.2 去中心化钱包细节业务流程

  • 收款:查询本地设备数据库把地址展示到界面上。

  • 转账:用户在去中心化钱包中输入转账信息,包括:收款地址(对方的钱包地址)、转账金额、交易费用(Gas费),钱包创建交易参数后,用户输入解密私钥的密码,在本地对交易参数进行签名,然后发送签名交易到区块链网络中,区块链网络返回交易状态,随后钱包在界面显示转账状态。

  • 转账记录:根据地址查询交易记录和根据 Hash 查询交易详情

  • 闪兑:钱包里面的闪兑一般对接 1inch (去中心化聚合交易所)或者其他的 aggrator (DeFi 聚合器)实现兑换功能

  • Dapp 浏览器:Dapp 浏览器是指 Dapp 可以在里面运行,能够正常的和钱包进行交互,有以下几种主流的实现方式Web View 中包裹 Dapp, 通过 Js 注入 Windows 对象的方式通信,一般钱包开发直接使用这种方式Websocket 进行 Dapp 和钱包之间的通信

三、硬件钱包

3.1 硬件钱包架构

硬件钱包主要是把私钥管理在离线的硬件设备中,在硬件设备中集成钱包签名算法,一般使用蓝牙,NFC 或者串口通信进行通信。

硬件钱包一般有以下几个业务流程:

  • 地址生成:硬件中集成 BIP,生成助记词和密钥对,使用公钥导出钱包地址;
  • 离线签名:组织交易生成 32 位的 Msg Hash, 将签名消息摘要传给硬件,硬件签名之后返回,组织交易发送到区块链网络。

3.2 硬件钱包细节业务流程

硬件钱包和去中心化钱包相比,最不相同是私有的管理方式,硬件钱包私钥和助记词管理在硬件中,下面一离线地址生成和离线签名为例说明:

  • 离线地址生成:发不地址生成的指令给硬件,硬件会生成助记词和私钥等信息,并将私钥和助记词编码加密之后存储在硬件中,吐出公钥匙,钱包界面端用公钥匙生成地址。
  • 离线签名:用户端组织编码交易报文,发送给硬件签名,签名回来的交易报文再次组织,然后发送到区块链网络。

四、MPC 托管钱包

托管钱包和其中心化钱包相比,不相同的地方也是密钥的管理方式,在托管系统中,一般使用 MPC 网络,一共有 M 个节点,其中 N 节点签名交易就有效。每个节点掌握一个密钥片,在整个网络中没有出现过完整的密钥; 下面也地址生成和交易签名为例说明:

  • 地址生成: 业务端发出 Keygen 指令,MPC 网络经过多轮共识之后各自产生密钥片,并吐出聚合公钥,业务端使用公钥导出地址。
  • 离线签名: 业务端发出 Sign 指令, 并携带待签名的交易报文到 MPC 网络,MPC 网络经过多轮签名成公共,返回签名串给业务端,业务端将交易发送到区块链网络。

五、多签钱包

多签钱包有点像 MPC 钱包的工作机制,但又完全不一样。多签钱包的工作机制涉及多个密钥和 M-of-N 签名的概念。在 M-of-N 设置中,只有 N 个密钥中的 M 个对交易进行了签名,才能授权该交易。例如,在 2-of-3 多签钱包中,存在三个私钥,至少需要两个私钥才能授权交易。