1. 概述
熟悉区块链的人都知道,区块链的钱包之所以被分成不同的类别,起本质其实就是私钥的管理方式不同。
2. 钱包类别
中心化钱包:钱包私钥一般管理在中心化服务器上,代表项目为交易所钱包; 去中心化钱包:钱包私钥一般管理在用户的设备上,代表项目为 TP, ImToken, MetaMask 等; 硬件钱包:钱包私钥管理在离线的硬件设备上,代表项目 leger, onekey 等。 确定性分层钱包(去中心化钱包和硬件钱包正常都使用了该技术):使用了 BIP 协议簇开发的钱包,代表项目为 TP, ImToken, MetaMask 等; 多签钱包:EVM 链一般使用 gnosis safe 多签,其他使用传统密码学方式多签 托管钱包:一般为 MPC 算法,每个节点有一个密钥片,网络中没有完整的私钥出现过, N-M 的签名方式,总节点为 N 个,M 个节点签名交易即有效。 社交恢复钱包: 密钥分片备份和守护者恢复 EVM 链 AA 钱包:ERC4337 协议独有特性
2.1 中心化钱包(交易所钱包)
交易所使用的钱包一般都称为中心化钱包,原因是交易所钱包私钥一般管理在中心化服务器上,不同的交易所的私钥管理方式也不一样。
最简单的方式莫过去将私钥做一层 DES 加密之后存储在数据库或者 wallet.data 数据文件中,其次是使用 KMS 环境保存加密的私钥,不管是使用数据文件或者 KMS 保存私钥,交易签名的时候都需要解密私钥之后就行签名,私钥暴露的风险最大,团队成员作恶也非常容易。
其次是 Tee 环境,Tee 环境虽然是一个安全的执行环境,但是私钥也是加密之后存储在这个环境的数据库或者文件里面,每次签名也要在这个环境中解密私钥进行签名,私钥暴露的风险也很大,团队成员想拿到私钥也很容易,只需要签名前传人私钥是打一个日志就行。
最安全和最专业的做法是使用 cloadHSM 或者多节点备份的小型签名机,私钥不会离开设备,需要签名的时候,传入待签名的报文,cloadHSM 或者小型签名机签名结束之后返回签名报文,然后整理签名交易报文发送到区块链网络。
不管是使用数据库、数据文件、 KMS、TEE,还是 CloadHSM,安全级别也是相对的,有一句话说得好: "外贼易挡,家贼难防",这句话用在钱包管理上真的是太正确了。不管用什么方案,即使是 CloadHSM 或者小型机方案,"家贼也是很难防",家贼完全可以模拟一笔合法的交易让CloadHSM 或小型机方案签名,然后把钱盗走。为了防止家贼,正常的交易所钱包都要做链路风控体系。
交易所钱包一般有以下几个业务流程 - 充值 - 提现 - 归集 - 热转冷 - 冷转热 - 链路风控
很多公司钱包开发,一般就是一个人负责整条链钱包的调研(离线地址生成,离线交易签名和扫块出入金),开发(含充值,提现,归集,热转冷等功能开发,甚至含链路风控的一部分代码)和测试。当然,也有的公司分为三到四团队,调研和离线签是一个团队,扫链出入金,归集和转冷等功能是一个团队,链路风控是一个团队,测试是一个团队。不管怎么分,运维和开发是隔离的,这样做才能做大限度做到人为风控。
2.2 去中心化钱包
去中心化钱包的私钥是管理在用户设备中的,除了用户本人和牛逼的黑客,没有人接触得到。一般的去中心化钱包都是确定性分层钱包;先生成助记词,助记词导出主私钥,主私钥扩展子私钥和公钥匙的方式,公钥再导出地址。
去中心化钱包的私钥一般是加密之后存储在本地设备 sqlite 或者数据文件里面,当要签名交易的时候,需要用户输入密码解密私钥之后再签名。
去中心化钱包一般有以下几个业务流程: - 收款 - 转账 - 转账记录 - 闪兑 - Dapp 浏览器
去中心化钱包比较出名的有 Tp,ImToken,MetaMask 等,我们项目实战中将会带大家用 RN 开发一款类似 TP 的钱包。
2.3 硬件钱包
硬件钱包主要是把私钥管理在离线的硬件设备中,在硬件设备中集成钱包签名算法,一般使用蓝牙,NFC 或者串口通信进行通信。
硬件钱包一般有以下几个业务流程: - 地址生成:硬件中集成 BIP,生成助记词和密钥对,使用公钥导出钱包地址; - 离线签名:组织交易生成 32 位的 Msg Hash, 将签名消息摘要传给硬件,硬件签名之后返回,组织交易发送到区块链网络。
2.4 多签和托管钱包
托管钱包有两种,团队资金共管钱包,一般使用多签钱包;EVM 链比较成熟的方案是 gnosis 多签.
其他链还是使用多签算法实现.
企业资管一般使用 MPC 钱包,MPC 是资管解决方案里面用得最多的密码学算法,运行 N 个 MPC 节点,节点之间通过多轮交互之后生成密钥片,节点与节点之间互相不知道对方生成的密钥片是什么,当需要发交易时,只需要其中 M 个节点签名交易就有效。
这里简单讲一下 gnosis 多签和 MPC 算法 - Gnosis 多签钱包是一种去中心化的数字钱包,旨在提供更高级的安全性和控制,特别是对于加密资产的管理。多签钱包使用多方签名技术,需要多个授权用户共同签署交易才能执行,这增加了资产的安全性,因为即使一把私钥被泄露或丢失,攻击者也无法单独控制资产。Gnosis 是一家专注于以太坊生态系统的公司,其多签钱包是以太坊上最常见和广泛使用的之一,它提供了用户友好的界面和强大的安全性特性。
- MPC 目前主流的算法有 GG18 和 GG20, 区别是 Keygen 和 Sign 的计算轮次不一样
- GG18: 9 轮
- GG20: 7 轮
2.5 EVM 链 AA 钱包
AA智能合约账户(账户抽象)把现行的合约账户、外部账户(EOA)两种账户类型的优势合二为一,让账户本身“可编程”。在确保资产仅由智能合约持有的同时,可以拥有批量交易、代付gas、私钥恢复等更多自定义和扩展功能。既简化了链上交互的流程,又可以自动化实现gas补贴。
以太坊智能账户功能 - 钱包恢复 - 合并交易 - 共享账户和团队钱包 - 自动交易 - 使用Token作为手续费代币
3. 教程大纲
区块链钱包涉及到的内容比较广泛,是一个综合性的学科课程,包含密码学,通信协议,智能合约和服务器运维。下面是我们根据整个行业发展现状和自身的工作经验结出来的课程大纲。
3.1 密码学算法
- 密码学发展史
- 密码学未来展望
- 公钥密码学基础
- 对称加密
- DES 算法深入
- AES 算法深入
- 非对称加密
- RSA 算法深入
- ECDSA 算法深入
- EDDSA 算法深入
- GPG 算法深入
- BLS 算法深入
- 密钥对生成过程
- 验证签名过程
- 单向函数算法深入
- MD5 算法
- SHA 算法
- KECCAK 海绵函数
- Blake 和 Blake3
- Poseidon 算法
- 门限共享密码算法深入
- shamir 门限秘密共享方案
- 去中心化秘密共享方案
- (t,n)门限的动态秘密共享方案
- MPC 算法深入
- 不经意传输
- GG18 算法
- GG20 算法
3.2 通信协议
- TCP/UDP/IP 协议介绍
- P2P 通信信息协议(实战使用 Rust 语言开发)
- libp2p 库使用
- 基于 libp2p 库开发节点通信案例
- 基于 libp2p 库开发 MPC 网络实战
- RPC 和 gRPC 通信协议
- RPC 和 gRPC 协议介绍
- ProtoBuf 语法简介
- 基于 gRPC 协议封装一套去中心化钱包的服务
- JSON-RPC 通信协议
- JSON-RPC 通信协议简介
- Ethereum JSON-RPC 代码封装实战
- HTTP/HTTPS 通信协议介绍
3.3 钱包教程(实际课程中有可能进行微调)
- 钱包相关的术语
- 钱包发展历史
- 钱包分类介绍
- 市场上的主流钱包介绍
- 钱包账户体系
- 钱包的常用密码学算法介绍
- 深入介绍钱包 bip 协议簇
- Bitcoin 钱包开发实战
- Bitcoin 交易所钱包开发
- Bitcoin 去中心化钱包开发
- Bitcoin 硬件钱包开发(若找不到合适的硬件,模拟开发)
- EVM 链钱包开发实战
- EVM 交易所钱包开发
- EVM 去中心化钱包开发
- EVM 硬件钱包开发(若找不到合适的硬件,模拟开发)
- EVM AA 钱包开发实战
- Ada 钱包开发实战
- Ada 交易所钱包开发
- Ada 去中心化钱包开发
- Algo 钱包开发实战
- Algo 交易所钱包开发
- Algo 去中心化钱包开发
- Aptos 钱包开发实战
- Aptos 交易所钱包开发
- Aptos 去中心化钱包开发
- Atom 钱包开发实战
- Atom 交易所钱包开发
- Atom 去中心化钱包开发
- Dash 钱包开发实战
- Dash 交易所钱包开发
- Dash 去中心化钱包开发
- Dot 钱包开发实战
- Dot 交易所钱包开发
- Dot 去中心化钱包开发
- Egld 钱包开发实战
- Egld 交易所钱包开发
- Egld 去中心化钱包开发
- Fil 钱包开发实战
- Fil 交易所钱包开发
- Fil 去中心化钱包开发
- Icp 钱包开发实战
- Icp 交易所钱包开发
- Icp 去中心化钱包开发
- Mina 钱包开发实战
- Mina 交易所钱包开发
- Mina 去中心化钱包开发
- Near 钱包开发实战
- Near 交易所钱包开发
- Near 去中心化钱包开发
- Nem 钱包开发实战
- Nem 交易所钱包开发
- Nem 去中心化钱包开发
- Sol 钱包开发实战
- Sol 交易所钱包开发
- Sol 去中心化钱包开发
- Sui 钱包开发实战
- Sui 交易所钱包开发
- Sui 去中心化钱包开发
- Tezos 钱包开发实战
- Tezos 交易所钱包开发
- Tezos 去中心化钱包开发
- Trx 钱包开发实战
- Trx 交易所钱包开发
- Trx 去中心化钱包开发
- Eos 钱包开发实战
- Eos 交易所钱包开发
- Eos 去中心化钱包开发
- Xrp 钱包开发实战
- Xrp 交易所钱包开发
- Xrp 去中心化钱包开发
- Qtum 钱包开发实战
- Qtum 交易所钱包开发
- Qtum 去中心化钱包开发
- Rvn 钱包开发实战
- Rvn 交易所钱包开发
- Rvn 去中心化钱包开发
- Xlm 钱包开发实战
- Xlm 交易所钱包开发
- Xlm 去中心化钱包开发
- 交易所钱包链路风控实施策略与项目实战
- Gnosis safe 对接开发实战
- 门限共享秘密代码实战
- 基于门限贡献秘密和 AA 的社交恢复钱包开发实战
- MPC 托管钱包开发实战
- 完整的去中心化钱包开发实战,目前可以参考 the web3 github 仓库的 parapack 项目:https://github.com/the-web3/parapack