Web3.js API 中文文档

Web3.js 是一个用于与以太坊区块链交互的 JavaScript 库。它提供了一整套 API,可用于访问以太坊区块链上的账户、合约以及执行交易。本文将详细介绍 Web3.js 的 API,并提供使用方法和案例说明。

一、Web3.js 的安装和初始化

要使用 Web3.js,首先需要安装它。可以使用 npm 安装,命令如下:

```

npm install web3

```

安装完成后,可以在你的 JavaScript 文件中引入 Web3.js:

```

const Web3 = require('web3');

```

然后,可以通过以下方式进行初始化:

```

// 使用 Infura 节点初始化

const web3 = new Web3(new Web3.providers.HttpProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'));

// 或者使用本地节点初始化

const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));

```

在上述代码中,可以选择使用 Infura 节点或本地节点来初始化 Web3.js 实例。

二、账户操作

1. 获取账户列表

使用 `web3.eth.getAccounts()` 可以获取当前节点上的所有账户列表。例如:

```

web3.eth.getAccounts()

.then(accounts => {

console.log(accounts);

})

.catch(err => {

console.error(err);

});

```

2. 创建账户

使用 `web3.eth.accounts.create()` 可以创建一个新的账户。例如:

```

const newAccount = web3.eth.accounts.create();

console.log(newAccount.address); // 输出新账户的地址

console.log(newAccount.privateKey); // 输出新账户的私钥

```

3. 获取账户余额

使用 `web3.eth.getBalance()` 可以获取指定账户的以太币余额。例如:

```

web3.eth.getBalance('0x0123456789abcdef...')

.then(balance => {

console.log(balance); // 输出账户余额

})

.catch(err => {

console.error(err);

});

```

三、合约操作

1. 部署合约

使用 `web3.eth.Contract` 可以创建一个新的合约对象,并使用 `new` 关键字部署合约。例如:

```

const myContract = new web3.eth.Contract(abi);

myContract.deploy({

data: '0x1234567890abcdef...',

arguments: [param1, param2, ...]

})

.send({

from: '0x0123456789abcdef...',

gas: 1500000,

gasPrice: '30000000000'

})

.then(newContractInstance => {

console.log(newContractInstance.options.address); // 输出新合约的地址

})

.catch(err => {

console.error(err);

});

```

这段代码中,我们首先创建了一个合约对象 `myContract`,然后使用 `deploy` 方法来部署合约,并指定部署合约的参数。

2. 调用合约方法

使用合约对象的方法来调用合约方法。例如:

```

myContract.methods.myMethod(param1, param2, ...)

.send({

from: '0x0123456789abcdef...',

gas: 1500000,

gasPrice: '30000000000'

})

.then(receipt => {

console.log(receipt); // 输出交易收据

})

.catch(err => {

console.error(err);

});

```

这段代码中,我们调用了合约的 `myMethod` 方法,并且指定了调用合约方法的参数。

四、交易操作

1. 发送交易

使用 `web3.eth.sendTransaction` 方法发送一笔交易。例如:

```

web3.eth.sendTransaction({

from: '0x0123456789abcdef...',

to: '0x9876543210fedcba...',

value: '1000000000000000000', // 1 ETH

gas: 21000,

gasPrice: '30000000000',

})

.on('transactionHash', hash => {

console.log(hash); // 输出交易哈希值

})

.on('receipt', receipt => {

console.log(receipt); // 输出交易收据

})

.on('confirmation', (confirmationNumber, receipt) => {

console.log(confirmationNumber); // 输出确认次数

})

.on('error', err => {

console.error(err);

});

```

2. 监听交易状态

可以使用 `web3.eth.getTransactionReceipt` 方法来获取交易收据,从而获得交易的状态信息。例如:

```

web3.eth.getTransactionReceipt('0x0123456789abcdef...')

.then(receipt => {

console.log(receipt); // 输出交易收据

})

.catch(err => {

console.error(err);

});

```

以上就是 Web3.js 的一些常用 API 的介绍和使用方法。下面,我们将通过案例来说明这些API的用法。

案例一:查询账户余额

```

web3.eth.getBalance('0x0123456789abcdef...')

.then(balance => {

console.log(`账户余额为:${web3.utils.fromWei(balance, 'ether')} ETH`);

})

.catch(err => {

console.error(err);

});

```

案例二:查询合约方法返回值

```

myContract.methods.myMethod(param1, param2, ...)

.call({

from: '0x0123456789abcdef...'

})

.then(result => {

console.log(`方法返回值为:${result}`);

})

.catch(err => {

console.error(err);

});

```

案例三:监听合约事件

```

myContract.events.MyEvent()

.on('data', event => {

console.log(`收到事件:${event}`);

})

.on('error', err => {

console.error(err);

});

```

以上案例介绍了 Web3.js 的一些常见用法,包括账户操作、合约操作和交易操作。希望通过以上内容可以帮助您更好地理解和使用 Web3.js。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/

点赞(68) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部