Solidity

How do you interact with a smart contract using Web3js


Web3.js is a powerful JavaScript library that allows developers to interact with the Ethereum blockchain and smart contracts. Below are the steps to interact with a smart contract using Web3.js:

1. Setting Up Your Environment

  • Ensure you have Node.js and npm installed on your machine.
  • Create a new project directory and initialize it with npm:
  • mkdir myproject
    cd myproject
    npm init -y
  • Install Web3.js:
  • npm install web3

2. Writing the Smart Contract

Here is a simple Solidity smart contract:


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract MyContract {
    uint256 public myNumber;
    constructor(uint256 _myNumber) {
        myNumber = _myNumber;
    }
    function setMyNumber(uint256 _myNumber) public {
        myNumber = _myNumber;
    }
}

3. Deploying the Smart Contract

Use the following JavaScript code to deploy the smart contract:

const Web3 = require('web3');
const web3 = new Web3('http://127.0.0.1:8545/'); // Connect to local Ethereum node
const contractABI = [ /* ABI goes here */ ];
const contractBytecode = '0x...'; // Bytecode goes here
async function deploy() {
    const accounts = await web3.eth.getAccounts();
    const result = await new web3.eth.Contract(contractABI)
        .deploy({ data: contractBytecode, arguments: [42] }) // Initial value
        .send({ from: accounts[0], gas: '3000000' });
    
    console.log('Contract deployed at address:', result.options.address);
}
deploy();

4. Interacting with the Smart Contract

Once the contract is deployed, you can interact with it using the following code:

const contractAddress = '0x...'; // Deployed contract address
const myContract = new web3.eth.Contract(contractABI, contractAddress);
async function interact() {
    const accounts = await web3.eth.getAccounts();
    
    // Get the current value
    const currentValue = await myContract.methods.myNumber().call();
    console.log('Current value:', currentValue);
    
    // Set a new value
    await myContract.methods.setMyNumber(100).send({ from: accounts[0] });
    
    // Get the updated value
    const updatedValue = await myContract.methods.myNumber().call();
    console.log('Updated value:', updatedValue);
}
interact();

5. Conclusion

Interacting with smart contracts using Web3.js is straightforward once you have set up your environment and deployed your contract. This allows you to build decentralized applications (dApps) that can leverage the power of blockchain technology.

Written by Surfside Media

Senior Full Stack Developer specializing in Web Technologies.