Create and execute smart contracts locally with Truffle, Ganache and Web3Client

Create and execute smart contracts locally with Truffle, Ganache and Web3Client

Creating and executing smart contracts can be a challenging task, especially if you're new to the world of blockchain development. However, with the right tools and knowledge, the process can be streamlined and made more efficient. In this article, we will explore how to use Truffle Suite and Web3Client to deploy and test Solidity smart contracts locally.

What is the Truffle Suite?

The Truffle Suite is a collection of tools that is designed to ease the testing of your Ethereum Solidity smart contracts. It includes Truffle, Ganache, and Drizzle. Truffle is a development environment, testing framework, and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM). Ganache is a simulated Ethereum blockchain where you can deploy contracts, develop your applications, and run tests. Drizzle is a collection of front-end libraries that make writing dApp front-ends easier and more predictable.

Installing Truffle

To install Truffle, open Terminal and type the following command:

npm install truffle -g

Creating the Working Directory

Create a new directory where you will store your project. In Terminal, type:

mkdir truffleapp

cd truffleapp

Creating the Truffle Project

To create a new Truffle project, type:

truffle init

This will create a bare Truffle project with no smart contracts included.

Writing a Smart Contract

Before we can deploy a smart contract, we need to write one. Solidity is a contract-oriented programming language that is used to write smart contracts on the Ethereum blockchain.

Here is a sample smart contract called "Greeting"

// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.9.0;

contract Greetings {

string public name;

string public gPrefix = "Hello ";

constructor(string memory initName) {

name = initName;


function setName(string memory newName) public {

name = newName;


function getGreeting() public view returns(string memory) {

return string(abi.encodePacked(gPrefix,name));



Writing Migration Script

Migrations are JavaScript files that help you deploy contracts to the Ethereum network. They are responsible for staging your deployment tasks and are written under the assumption that your deployment needs will change over time. The filename is prefixed with a number and suffixed by a description. The numbered prefix is required to record whether the migration ran successfully.

var Greetings =


module.exports = function(deployer) {

deployer.deploy(Greetings, "Web3 World");

// Additional contracts can be deployed here


Setting up Ganache

Ganache is a simulated Ethereum blockchain that we will use to test our smart contract. To install it globally, run:

npm install ganache --global

Once installed, start Ganache from your command line:


Deploying Smart Contract

To deploy the smart contract on the local Ganache network, run the following command in your terminal:

truffle migrate

Executing Smart Contract in Web3Client

To execute the smart contract, we can use is a web-based platform that allows you to interact with the Ethereum blockchain.

Here are the steps to execute the smart contract using

Open in your web browser.

Select "Create new ABI"

Enter the ABI name and Contract ID that you got when you deployed the smart contract.

Select "Add Network Manually" in the "Add Network" section and fill in the Chain Name, Chain ID, and Local RPC URL.

Click "Submit" to create a new ABI.

Click on the created ABI and click "New Method"

Enter the method name and click "Send" to execute.


Method Name : setName

In this greetings example contract, setName method is used to set current name in contract.

Method Name : getGreeting

In this greetings example contract, getGreeting method is used to getGreeting from contract, it returns string

In conclusion, Truffle Suite and Web3Client are powerful tools that make it easy for developers to deploy and test Solidity smart contracts on their local computers. With Truffle, you can easily create a project structure and write smart contracts, while Ganache simulates an Ethereum blockchain environment for testing and development. Using Web3Client, you can interact with your deployed smart contract and execute its methods in a user-friendly web-based platform. These tools greatly streamline the development and testing process for Ethereum DApps and smart contracts, and they are highly recommended for any developer working in the blockchain space.

Github Repo