Web3.js is a powerful JavaScript library that allows developers to interact with the Ethereum blockchain. When working with Web3.js, it's crucial to use a secure wallet to protect your private keys and manage your assets. This guide will explain how to use Web3.js with a secure wallet, such as MetaMask, and provide sample code to demonstrate the integration.
1. Prerequisites
- Basic understanding of JavaScript and Ethereum.
- Node.js installed on your machine.
- A browser with MetaMask installed or another secure wallet.
2. Setting Up Your Project
First, create a new directory for your project and initialize it:
mkdir web3-secure-wallet
cd web3-secure-wallet
npm init -y
npm install web33. Create an HTML File
Create an index.html file in your project directory. This file will serve as the frontend for interacting with the Ethereum blockchain:
<!doctype html>
<html lang=`en`>
<head>
<meta charset=`UTF-8`>
<meta name=`viewport` content=`width=device-width, initial-scale=1.0`>
<title>Web3.js with Secure Wallet</title>
<script src=`https://cdn.jsdelivr.net/npm/web3/dist/web3.min.js`></script>
</head>
<body>
<h1>Connect to Ethereum Wallet</h1>
<button id=`connect-button`>Connect Wallet</button>
<div id=`wallet-info`></div>
<script src=`app.js`></script>
</body>
</html>4. Create the JavaScript File
Create an app.js file in your project directory. This file will handle the connection to the Ethereum wallet and interact with Web3.js:
const connectButton = document.getElementById('connect-button');
const walletInfo = document.getElementById('wallet-info');
async function connectWallet() {
if (typeof window.ethereum !== 'undefined') {
try {
// Request account access
const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
const account = accounts[0];
walletInfo.innerHTML = `Connected: ${account}`;
const web3 = new Web3(window.ethereum);
// Now you can use web3 to interact with the Ethereum blockchain
console.log(web3);
} catch (error) {
console.error('User denied account access or error occurred:', error);
}
} else {
walletInfo.innerHTML = 'Please install MetaMask!';
}
}
connectButton.addEventListener('click', connectWallet);5. Running the Application
To run your application, you can use a local server. If you have Python installed, you can run:
python -m http.server 8000Then open your browser and navigate to http://localhost:8000. Click the `Connect Wallet` button to connect to your MetaMask wallet.
6. Interacting with Smart Contracts
Once connected, you can interact with smart contracts. Here’s an example of how to send a transaction:
async function sendTransaction() {
const web3 = new Web3(window.ethereum);
const accounts = await web3.eth.getAccounts();
const tx = {
from: accounts[0],
to: '0xRecipientAddress', // Replace with the recipient address
value: web3.utils.toWei('0.01', 'ether'),
gas: 2000000,
};
try {
const receipt = await web3.eth.sendTransaction(tx);
console.log('Transaction receipt:', receipt);
} catch (error) {
console.error('Transaction failed:', error);
}
}7. Conclusion
Using Web3.js with a secure wallet like MetaMask allows you to interact with the Ethereum blockchain safely. By following the steps outlined in this guide, you can connect to a wallet
