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 yarn
OSX
brew install node
brew install yarn
Setup smart contract project
npm install -g truffle
npm install -g ganache-cli
Generate smart contract
Reference generate blank project
mkdir web3together && cd web3together
truffle init
Structures:

/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 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 - https://github.com/web3together/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.
Create
2_deploy_contracts.js
under 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-cli
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 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