
What Is Web3.js?
Web3.js is a JavaScript library that allows your DApp to interact with Ethereum-compatible blockchains. It enables:
✅ Reading blockchain data (balances, transactions)
✅ Sending transactions (token transfers, smart contract calls)
✅ Listening to events (real-time updates)
Key Features:
- Works with MetaMask and other wallets
- Supports Ethereum, Polygon, BSC
- Open-source (GitHub)
Prerequisites for Web3.js Integration
1. Development Tools
| Tool | Purpose | Link |
|---|---|---|
| Node.js | JavaScript runtime | Download |
| MetaMask | Browser wallet | Install |
| Hardhat | Local blockchain | Docs |
2. Basic Knowledge
- JavaScript/TypeScript
- Smart contract basics
- Ethereum RPC endpoints
Step-by-Step Integration Guide
Step 1: Install Web3.js
bash
npm install web3 # or yarn add web3
Step 2: Connect to Blockchain
javascript
import Web3 from 'web3';
// Connect to MetaMask
const web3 = new Web3(window.ethereum);
// Or use a provider like Infura
const web3 = new Web3('https://mainnet.infura.io/v3/YOUR_API_KEY');
Step 3: Interact with Smart Contracts
javascript
const contractABI = [...]; // From your compiled contract
const contractAddress = '0x...';
const myContract = new web3.eth.Contract(contractABI, contractAddress);
// Call a view function
const data = await myContract.methods.myFunction().call();
// Send a transaction
await myContract.methods.updateFunction(newValue).send({ from: userAddress });

Key Web3.js Methods
1. Wallet Interactions
javascript
// Request account access
const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
// Get balance
const balance = await web3.eth.getBalance(accounts[0]);
2. Transaction Handling
javascript
// Send ETH
await web3.eth.sendTransaction({
from: accounts[0],
to: '0x...',
value: web3.utils.toWei('1', 'ether')
});
3. Event Listening
javascript
myContract.events.MyEvent()
.on('data', event => console.log(event))
.on('error', console.error);
Common Issues & Solutions
| Problem | Solution |
|---|---|
| “Provider not set” | Check MetaMask installation |
| “Invalid ABI” | Verify contract compilation |
| “Gas estimation failed” | Increase gas limit |
Advanced Tips
1. Error Handling
javascript
try {
await myContract.methods.fail().send();
} catch (error) {
console.error('Transaction failed:', error.message);
}
2. Gas Optimization
javascript
// Estimate gas first
const gas = await myContract.methods.update().estimateGas();
await myContract.methods.update().send({ gas: gas + 10000 });
3. Unit Testing
javascript
// Using Hardhat + Ethers.js
const { expect } = require('chai');
describe('MyContract', () => {
it('Should return correct value', async () => {
expect(await contract.myFunction()).to.equal(42);
});
});
Conclusion
You’ve learned how to:
✔ Install and configure Web3.js
✔ Connect to wallets and blockchains
✔ Interact with smart contracts
✔ Handle transactions and events
Next Steps:
- Explore Web3.js Documentation
- Build a full-stack DApp with React

