简介
@ethersproject/wallet 是以太坊钱包的一个 npm 包,它提供了以太坊钱包的所有功能,使得我们可以很方便地进行以太坊的操作。
本文将针对 @ethersproject/wallet 包的使用方法进行详细讲解,包括如何创建钱包、发送交易等操作。
安装
@ethersproject/wallet 可以直接使用 npm 安装:
npm install @ethersproject/wallet
在项目中引用:
import { ethers } from 'ethers';
创建钱包
我们可以使用 ethers.Wallet
对象创建一个新的钱包,可以使用以下命令创建一个新钱包:
const wallet = ethers.Wallet.createRandom();
这将生成一个新的、随机的用于钱包的私钥。
我们也可以使用现有私钥创建钱包,使用以下命令:
const privateKey = '0xabcdefg...' const wallet = new ethers.Wallet(privateKey);
这将使用给定的私钥创建一个钱包对象。
连接以太坊
创建钱包后,我们需要连接以太坊网络。我们可以使用以下其中之一连接:
- Infura:Infura 是一个提供公共以太坊节点的在线服务,我们可以使用 Infura 进行连接
- 自己的节点:我们也可以连接自己的节点
Infura
const provider = new ethers.providers.InfuraProvider('ropsten', 'YOUR_INFURA_PROJECT_ID');
注意:我们需要在 Infura 官网上创建一个项目,并在上面获得自己的 Infura 项目 ID。
自己的节点
const provider = new ethers.providers.JsonRpcProvider('https://localhost:8545');
我们需要将节点 URL 替换为自己的节点 URL,节点 URL 可以在自己的节点上找到。
发送交易
创建了钱包并连接以太坊节点后,我们可以使用以下命令发送交易:
const transaction = { to: '0x1234...', value: ethers.utils.parseEther('1.0') }; const txResponse = await wallet.sendTransaction(transaction);
这将发送一个交易到指定地址,并以以太为单位指定了交易金额。
计算 gas
在发送交易之前,我们需要计算 gasLimit 和 gasPrice。可以使用如下命令:
const gasLimit = await provider.estimateGas(transaction); const gasPrice = await provider.getGasPrice();
示例代码
下面给出完整的示例代码:
-- -------------------- ---- ------- ------ - ------ - ---- --------- ----- -------- ------ - ----- ---------- - -------------- ----- -------- - --- ------------------------------------------ -------------------------- ----- ------ - --- ------------------------- ---------- ----- ----------- - - --- ------------ ------ ------------------------------ -- ----- -------- - ----- ---------------------------------- ----- -------- - ----- ----------------------- -------------------- - --------- -------------------- - --------- ----- ---------- - ----- ------------------------------------ ------------------------ ----- --------------------- - -------
总结
本文详细介绍了 npm 包 @ethersproject/wallet 的使用方法,讲解了如何创建钱包、连接以太坊、发送交易等操作。本文提供了完整的示例代码,希望对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedc1cbb5cbfe1ea0611f1b