中文 / English
HD 钱包(分层确定性钱包),钱包协议:BIP32、BIP44、BIP39。 BIP32中提出的为了避免管理一堆私钥的麻烦提出的分层推导方案。 而BIP44是给BIP32的分层增强了路径定义规范,同时增加了对多币种的支持。 BIP39则通过定义助记词让种子的备份更友好。 钱包原理
- 随机数创建
- 私钥创建
- 助记词创建
- keystore 创建
Keystore 文件是以太坊钱包存储私钥的一种文件格式 (JSON)。使用用户自己设置的密码来加密,以起到一定程度上的保护作用, 而保护的程度取决于用户加密该钱包的密码强度。 - 脑记忆钱包(etherjs 5 已经移除)
- Etherscan Provider:连接 Etherscan API 的 provider,需要 2 个参数,一个是网络名称,一个查询 API 所需的 token(之前的文章 有讲过,查询 Etherscan 的 API 时 apitoken 不是必须的,但如果没有的话会受到每秒 5 次的调用限制)。
- Json Rpc Provider:连接本地以太坊网点的 Provider。
- Infura Provider:连接 Infura 网络的 Provider,Infura 是一套以太坊的基础设施服务,同样有以太坊的主网络和测试网络。
- Web3 Provider:连接已有 web3 对象的 provider。
- Fallback Provider:连接一个可以是多种类型的 provider 集合,如果前面的 provider 有问题,会自动去连接后面的。
const provider = providers.getDefaultProvider();
const wallet = new Wallet(privateKey, provider);
或者
const wallet = new Wallet(privateKey);
wallet.provider = provider;
如果用普通的 JS number 对象来存储操作的话,可能会因为数据溢出而导致结果异常。
执行测试用例
hardhat test