📅  最后修改于: 2023-12-03 15:05:55.077000             🧑  作者: Mango
Web3 是一个用于连接以太坊网络的 JavaScript 库。通过 Web3,开发者可以连接到以太坊网络并与智能合约进行交互。
要使用 Web3,需要先安装它。可以使用 npm 在命令行中安装 Web3:
npm install web3
在连接到以太坊网络之前,需要先创建一个 Provider 对象。Provider 对象负责与以太坊节点进行通信。你可以使用 Infura 来获取您自己的专用 Provider 对象。
const Web3 = require('web3'); // 引入 Web3
const provider = new Web3.providers.HttpProvider('https://ropsten.infura.io/v3/<your_project_id>'); // 连接到 Infura
const web3 = new Web3(provider); // 创建 Web3 实例
web3.eth.getBlockNumber().then(console.log); // 打印当前区块高度
一旦连接到以太坊网络,开发者就可以连接到智能合约并与之进行交互。为此,我们需要合约的 ABI 和地址。
const contractABI = [ // 合约 ABI
{
"inputs": [],
"name": "getGreeting",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_greeting",
"type": "string"
}
],
"name": "setGreeting",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
];
const contractAddress = "0x1234567890abcdef1234567890abcdef12345678"; // 合约地址
const contract = new web3.eth.Contract(contractABI, contractAddress); // 创建合约实例
现在,我们已经可以使用合约实例与智能合约进行交互了。
在调用智能合约函数之前,需要确保您的以太坊账户有足够的 ETH 来支付 gas 费用。否则,调用智能合约函数将会失败。
const greeting = await contract.methods.getGreeting().call(); // 调用合约的 getGreeting 函数
console.log(greeting); // 打印返回结果
如果您需要修改智能合约的状态(即调用一个写入函数),则需要发送一笔交易。在发送交易之前,还需要确保您使用的以太坊账户有足够的 ETH 来支付 gas 费用。
const tx = await contract.methods.setGreeting("Hello, World!").send({ from: "Your Ethereum Address" }); // 发送交易
console.log(tx); // 打印交易信息
使用 Web3 可以连接到以太坊网络,与智能合约进行交互,并进行读写操作。开发者需要确保他们的以太坊账户具有足够的 ETH 来支付 gas 费用。