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

Create random Wallet with connection to a specific provider via ethers.js

问题

我正在尝试通过函数 Ethers.Wallet.createRandom 创建随机钱包并连接到特定网络(例如 Ropsten for example). The docs 指定我可以传递一个可选的 options 对象.

我试过的

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

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

不幸的是,那没有用。

问题

是否可以选择在创建钱包时通过网络或稍后完成?

返回的钱包对象(docs)包含私钥和钱包地址。但是,地址生成算法在所有网络中 通用 。因此,如果私钥 0x123 生成地址 0x456,您始终可以使用相同的 0x123 私钥来签署所有网络上来自 0x456 地址的交易 - 主网,Ropsten , Rinkeby 等

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

添加options参数:在createRandom()source code中,它只使用参数来影响私钥生成的伪随机性。但同样,它与您要使用钱包的网络无关。