web3.js实战从0开始!

Web3.js 是一个与以太坊区块链交互的 JavaScript 库。以下是一个简单的 Web3.js 实战示例,包括连接到以太坊节点、获取账户余额、发送交易等操作。

环境搭建

  • 首先,确保已经安装了 Node.js。可以在终端中输入node -v来检查版本,如果未安装则前往Node.js 官方网站进行安装。
  • 创建一个新的目录,在该目录下初始化一个 Node.js 项目,执行命令npm init -y,这将生成一个package.json文件。
  • 安装web3.js库,执行命令npm install web3

连接到以太坊节点

  • 可以使用 Infura 等服务来连接到以太坊节点,也可以在本地搭建以太坊节点。这里以 Infura 为例,创建一个index.js文件,代码如下:

javascript

const Web3 = require('web3');

// 创建一个Web3实例,连接到Infura节点
const web3 = new Web3('https://mainnet.infura.io/v3/YOUR-PROJECT-ID');

// 替换YOUR-PROJECT-ID为你在Infura上创建项目后得到的ID

获取账户余额

  • 要获取账户余额,需要知道账户的地址。以下是获取账户余额的代码:

javascript

const accountAddress = '0xYourAccountAddress';

web3.eth.getBalance(accountAddress)
  .then(result => {
    // 将余额从Wei转换为以太币
    const balanceInEther = web3.utils.fromWei(result, 'ether');
    console.log(`账户余额: ${balanceInEther} ETH`);
  })
  .catch(error => console.error('获取余额错误:', error));

发送交易

  • 发送交易需要有发送者的私钥和接收者的地址等信息。以下是一个发送以太币交易的示例:

javascript

const privateKey = 'YourPrivateKey';
const fromAddress = '0xYourAccountAddress';
const toAddress = '0xRecipientAccountAddress';
const amount = web3.utils.toWei('1', 'ether'); // 要发送的以太币数量,这里是1以太币

const transaction = {
  from: fromAddress,
  to: toAddress,
  value: amount,
  gas: 21000, // 交易所需的gas量
  gasPrice: web3.utils.toWei('50', 'gwei') // gas价格
};

const signPromise = web3.eth.accounts.signTransaction(transaction, privateKey);

signPromise.then(signedTx => {
  web3.eth.sendSignedTransaction(signedTx.rawTransaction)
    .on('transactionHash', hash => console.log('交易哈希:', hash))
    .on('receipt', receipt => console.log('交易收据:', receipt))
    .on('error', error => console.error('交易错误:', error));
})
.catch(error => console.error('签名交易错误:', error));

在实际应用中,需要将YOUR-PROJECT-IDYourAccountAddressYourPrivateKey0xRecipientAccountAddress等替换为真实的值。同时,要注意私钥的安全,不要在生产环境中明文存储私钥。

此外,Web3.js 还可以用于与智能合约进行交互,包括部署智能合约、调用智能合约的函数等。要与智能合约交互,需要知道智能合约的 ABI(应用二进制接口)和地址。可以使用web3.eth.Contract对象来创建一个智能合约实例,然后调用其方法来与智能合约进行交互。

以上只是 Web3.js 的基本实战示例,实际应用中可能会遇到更多复杂的情况和需求,需要根据具体情况进行调整和扩展。

编辑

扫描二维码关注公众号,回复: 17620578 查看本文章

分享

猜你喜欢

转载自blog.csdn.net/2503_91447102/article/details/146985231
今日推荐