Node.js 连接本地以太坊全节点教程
以太坊作为当前最流行的区块链平台之一,其去中心化的特性吸引了大量开发者和研究者的关注。在开发过程中,连接到本地以太坊全节点是进行测试和开发的重要步骤。本文将详细介绍如何使用 Node.js 连接到本地以太坊全节点,并展示一些基本的交互操作。
在进行操作之前,请确保以下环境已正确安装:
在您的计算机上安装 Geth,可以通过以下步骤进行:
1. 访问 Geth 的 GitHub 仓库:[Geth GitHub 仓库](https://github.com/ethereum/go-ethereum)。
2. 克隆仓库到本地:`git clone https://github.com/ethereum/go-ethereum.git`。
3. 进入克隆的目录:`cd go-ethereum`。
4. 编译 Geth:`make`。
5. 安装 Geth:`sudo make install`。
在安装 Geth 后,您需要启动一个全节点来连接到以太坊网络。以下是在 Linux 系统上启动全节点的命令:
```bash
geth --datadir /path/to/your/data --networkid 15 --bootnodes enode://: --bootnodes enode://: --syncmode full
请将 ``, ``, `` 替换为实际的节点信息和端口。
为了在 Node.js 中与以太坊交互,我们需要安装 Web3.js 库。以下是在 Node.js 项目中安装 Web3.js 的命令:
```bash
npm install web3
安装完 Web3.js 后,您可以使用以下代码连接到本地全节点:
```javascript
const Web3 = require('web3');
// 创建 Web3 实例
const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
// 检查连接状态
web3.eth.net.getPeerCount().then(console.log);
确保您的全节点正在运行,并且监听端口为 8545。
以下代码展示了如何获取账户信息:
```javascript
// 获取账户列表
web3.eth.getAccounts().then(accounts => {
console.log('Accounts:', accounts);
// 获取特定账户的余额
web3.eth.getBalance(accounts[0], 'latest').then(balance => {
console.log('Balance:', web3.utils.fromWei(balance, 'ether'));
以下代码展示了如何发送一个简单的以太币交易:
```javascript
const account = accounts[0];
const password = 'your-password'; // 替换为您的账户密码
// 解锁账户
web3.eth.personal.unlockAccount(account, password, 300).then(() => {
// 构建交易对象
const transaction = {
from: account,
to: accounts[1],
value: web3.utils.toWei('1', 'ether'),
gas: 21000,
gasPrice: web3.utils.toWei('50', 'gwei')
};
// 发送交易
web3.eth.sendTransaction(transaction).then(txHash => {
console.log('Transaction Hash:', txHash);
});
通过以上步骤,您已经成功使用 Node.js 连接到本地以太坊全节点,并进行了基本的交互操作。在实际开发中,您可以根据需要扩展这些操作,例如部署智能合约、调用合约函数等。希望本文能帮助您更好地理解以太坊和 Node.js 的结合使用。