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
Prerequisites
Operating system: OSX or Linux(Ubuntu, Cenos, ...etc)
Software: node js(npm, yarn) or python
Install node js
Ubuntu
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update
sudo apt-get install nodejs
sudo apt install yarnOSX
brew install node
brew install yarnSetup smart contract project
npm install -g trufflenpm install -g ganache-cliGenerate smart contract
Reference generate blank project
mkdir web3together && cd web3together
truffle initStructures:

/contracts: store original codes of the smart contract. We will place our HelloWorld.sol file here.
/migrations: deploy the smart contract in the “contracts” folder.
/test: test codes for your smart contract, support both JavaScript and Solidity.
truffle.js: configuration document.
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 Web3TogetherCopy 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 - https://github.com/web3together/web3together");
}
function clock() public view returns (uint) {
return block.timestamp;
}
}
Step 3: Compile “HelloWeb3Together” with the following command.
truffle compileThis 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.
Create
2_deploy_contracts.jsunder migrations folders. Truffle is run following orderCopy and past the following deploying content into the “2_deploy_contracts.js”.
const HelloWeb3Together = artifacts.require("./HelloWeb3Together.sol");
module.exports = (deployer) => {
deployer.deploy(HelloWeb3Together);
}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: "127.0.0.1",
port: 8545,
network_id: "*",
},Start Ganache Local network and run following command on other tab or new terminal
ganache-cliDeploy smart contract to local network
truffle migrateif 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 dotenvAdd following content into network sections. reference
rinkeby: {
provider: () => new HDWalletProvider("PrivateKeyToUnlockYourWallet", 'RPC_URL'),
network_id: 4, //check here https://chainlist.org/
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
