* typos hardhat-deploy-sbs.md * typos hardhat-testing-sbs.md * typos hardhat-testing-sbs.md * typos ethers.md * typos web3.md
3.0 KiB
title, slug, description, keywords, hide_table_of_contents
| title | slug | description | keywords | hide_table_of_contents | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| web3.js | /tools/web3 | Documentation for using web3.js, a JavaScript library for interacting with EVM-compatible blockchains. This page covers installation, setup, connecting to the Base network and interacting with smart contracts. |
|
true |
web3.js
web3.js is a JavaScript library that allows developers to interact with EVM-compatible blockchain networks.
You can use web3.js to interact with smart contracts deployed on the Base network.
Install
To install web3.js run the following command:
npm install web3
Setup
Before you can start using web3.js, you need to import it into your project.
Add the following line of code to the top of your file to import web3.js:
//web3.js v1
const Web3 = require('web3');
//web3.js v4
const { Web3 } = require('web3');
Connecting to Base
You can connect to Base by instantiating a new web3.js Web3 object with an RPC URL of the Base network:
const { Web3 } = require('web3');
const web3 = new Web3('https://mainnet.base.org');
:::info
To alternatively connect to Base Sepolia (testnet), change the above URL from https://mainnet.base.org to https://sepolia.base.org.
:::
Accessing data
Once you have created a provider, you can use it to read data from the Base network.
For example, you can use the getBlockNumber method to get the latest block:
async function getLatestBlock(address) {
const latestBlock = await web3.eth.getBlockNumber();
console.log(latestBlock.toString());
}
Deploying contracts
Before you can deploy a contract to the Base network using web3.js, you must first create an account.
You can create an account by using web3.eth.accounts:
const privateKey = “PRIVATE_KEY”;
const account = web3.eth.accounts.privateKeyToAccount(privateKey);
:::info
PRIVATE_KEY is the private key of the wallet to use when creating the account.
:::
Interacting with smart contracts
You can use web3.js to interact with a smart contract on Base by instantiating a Contract object using the ABI and address of a deployed contract:
const abi = [
… // ABI of deployed contract
];
const contractAddress = "CONTRACT_ADDRESS"
const contract = new web3.eth.Contract(abi, contractAddress);
Once you have created a Contract object, you can use it to call desired methods on the smart contract:
async function setValue(value) {
// write query
const tx = await contract.methods.set(value).send();
console.log(tx.transactionHash);
}
async function getValue() {
// read query
const value = await contract.methods.get().call();
console.log(value.toString());
}
:::info
For more information on deploying contracts on Base, see Deploying a Smart Contract.
:::