Getting Started in Smart Contract Development with Solidity

This guide is prepared by @BunHouth.

Solidity is an object-oriented, high-level language for implementing smart contracts. Smart contracts are programs which govern the behaviour of accounts within the Ethereum state. Solidity is a curly-bracket language. It is influenced by C++, Python and JavaScript, and is designed to target the Ethereum Virtual Machine (EVM).

web3.js is a collection of libraries that allow you to interact with a local or remote ethereum node using HTTP, IPC or WebSocket.

Setup Development


  • Operating system: OSX or Linux(Ubuntu, Cenos, ...etc)

  • Software: node js(npm, yarn) or python

Install node js


 curl -sL | sudo apt-key add -
 echo "deb stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
 sudo apt-get update
 sudo apt-get install nodejs
 sudo apt install yarn


brew install node
brew install yarn

Setup smart contract project

Install Truffle

npm install -g truffle

Install Ganache Local Network

npm install -g ganache-cli

Generate smart contract

Reference generate blank project

mkdir web3together && cd web3together
truffle init


  1. /contracts: store original codes of the smart contract. We will place our HelloWorld.sol file here.

  2. /migrations: deploy the smart contract in the “contracts” folder.

  3. /test: test codes for your smart contract, support both JavaScript and Solidity.

  4. truffle.js: configuration document.

  5. truffle-config.js: configuration of deployment.

Step 2: Create HelloWeb3Together contract. There are two ways to create a new contract: Directly place HelloWeb3Together.sol” file under “contracts” folder. In the “web3together” folder, run command:

truffle create contract Web3Together

Copy the following codes into HelloWeb3Together.sol”:

pragma solidity >=0.4.22 <0.9.0;

contract HelloWeb3Together {
    function ping() public pure returns (string memory) {
        return ("Web3Together -");

    function clock() public view returns (uint) {
        return block.timestamp;

Step 3: Compile “HelloWeb3Together” with the following command.

truffle compile

This compiles the original code into Ethereum bytecode. If everything goes well, it will create .json file under build/contracts folder. Step 4: Deploy “HelloWeb3Together” contract.

  1. Create 2_deploy_contracts.js under migrations folders. Truffle is run following order

  2. Copy and past the following deploying content into the “2_deploy_contracts.js”.

const HelloWeb3Together = artifacts.require("./HelloWeb3Together.sol");
module.exports = (deployer) => {
  1. Modify truffle-config.js and add following content to network section. If you are using public chain or private chain please add many section as you want.

development: {
     host: "",
     port: 8545,
     network_id: "*",
  1. Start Ganache Local network and run following command on other tab or new terminal

  1. Deploy smart contract to local network

truffle migrate

if contract already deploy and want to redeploy please add --reset option After run truffle migrate we will see deploy log in the same terminal. 6. Additional setup for deploy contract to public chain testnet(rinkeby)

Additional dependency

yarn add @truffle/hdwallet-provider dotenv

Add following content into network sections. reference

    rinkeby: {
      provider: () => new HDWalletProvider("PrivateKeyToUnlockYourWallet", 'RPC_URL'),
      network_id: 4, //check here
      gas: 5500000,
      confirmations: 2,
      timeoutBlocks: 200,
      skipDryRun: true,

RPC Service

🎉Congrats! The “Web3Together” smart contract has been successfully deployed to Ganache.

Running Smart Contract online tool


Last updated