通过ethers.js创建与特定提供商连接的随机钱包



问题

我正试图通过连接到特定网络(例如Ropsten(的函数Ethers.Wallet.createRandom创建随机钱包。文档指定我可以传递一个可选的options对象

我尝试了什么

我试着像这样将连接传递到网络:

const networkProvider = await new Ethers.getDefaultProvider(process.env.NETWORK);
const wallet = Ethers.Wallet.createRandom({ provider: networkProvider });

不幸的是,这并没有奏效。

问题

创建钱包时是否有通过网络的选项,或者稍后再进行?

返回的钱包对象(docs(包含私钥和钱包地址。然而,地址生成算法在所有网络中都是通用的。因此,如果私钥0x123生成地址0x456,则您可以始终使用相同的0x123私钥在所有网络(主网、Ropsten、Rinkeby等(上对来自0x456地址的事务进行签名。

您广播交易的网络取决于您的提供商连接到的网络。因此,如果您想限制应用程序可以发送交易的网络,您需要验证提供商的getNetwork()返回值(文档(。

Ad theoptionsparam:在createRandom()源代码中,它只使用param来影响私钥生成方式的伪随机性。但同样,它与你将要使用钱包的网络无关。

import { ethers } from 'ethers';
setWallet(ethers.Wallet.createRandom(['21321']));

createRandom的选项可能具有以下属性:

extraEntropy——加入随机源的附加熵

最新更新