Truffle
Learn how to use Truffle to deploy your smart contracts to a public ethereum network
Before starting, ensure that you have done the following:
Created a Truffle Teams account
Linked a repo that is a Truffle project
Got a passing build with Truffle teams
Have some Ropsten Ether
Network connection stability check
The Deployments Page
Open your Truffle Teams Account, click on DEPLOYMENTS on the left navigation bar
A list of repositories is displayed. Click the one you’d like to deploy
Now you’re at the deployments page. You will see three columns: Commits, Staging, and Production
Commits: Shows a list of all commits that Truffle Teams is processing or processed, as a build. A status icon is present that indicates the status of the build, i.e. if it is in progress, failed, or successful
Staging: Contains a list of all testnet (i.e. Ropsten, Görli, Rinkeby, and Kovan)
Production: Contains a list of all Mainnet deployments
The First Deployment
Here we will guide you how to deploy an application to Ropsten
Click on the parachute icon next to the commit you want to deploy
A wizard will pop up; select Ropsten under Destination Network
Press Connect Wallet
In case you have not logged into MetaMask, a pop-up will appear.
Press Connect to confirm the connection with Truffle Teams
In case you don’t see a button to start deploying, switch your MetaMask network to Ropsten and repeat the above steps
Now when you the wizard prompting for a Deployment Context.
Set it to Create a New Deployment
Press OK, START DEPLOYING button
It might take some time for the Truffle Team to start processing your deployment as they have to process many deployments simultaneously. Make sure you do not lose your internet connection in the meantime.
Once your deployment has started processing, you’ll see a pop-up displaying the list of steps Truffle Teams is doing to prepare for your deployment.
Once all the steps are completed, a screen with a list of your processed migrations appears. A pop-up from MetaMask is also there for your first transaction.
An easy-to-understand interface with MetaMask is visible that is like sending a transaction to any other dapp. Change the GAS FEE to be higher to make your transactions run quicker. For testnets like Ropsten, it’s affordable to always select the Fast option
When you’re satisfied with the transaction gas fee, press the Confirm button to send. As soon as the one transaction is confirmed, you’ll receive the next transaction. Repeat this process until you receive a message that your deployment is being finalized.
After a short while, a window with deployment results appears on the screen.
Your contracts are now deployed. Hit the Great! Go Back to Workflow button or directly close the wizard.
In the Staging column you can now see the results of your deployment. You can check the list of your deployed contracts and their addresses by clicking on the + Contracts bar on the bottom of the card
You can even access the Menu by clicking on the vertical 3 dots in the top right of the card. From the menu, you can:
Download a .zip file of your Truffle
.json artifacts used in your frontend web app
Graduate a deployment to production
Archive the deployment
Deployment Context
To be used for more advanced Truffle applications that use migration system to iteratively migrate more to the blockchain (instead of starting fresh)
In this, you can select an existing deployment on the same network that you’d like to use the deployed artifacts for. As it supports the concept of migrating your application, you can run the new migration scripts from the last deployment (i.e. the deployment context).
Graduating Deployments
Once you are satisfied with a particular deployment in Staging, you can select the Graduate option from the menu. After that the same build will be used as the basis of your deployment into Mainnet. Only selecting a different MetaMask is necessary, rest all steps are the same.
Once done, the production section will show a new deployment.
OpenZepplins
OpenZepplins is a collection of battle-tested libraries of smart contracts for Solidity development. It includes the most used implementations of ERC standards. Wethio’s ZRC20 and ZRC721 find the most obvious use of OpenZepplins.
Installation
Install Truffle
npm install -g truffle
Use Truffle to initialize a new project
mkdir MyProject && cd MyProject
truffle init
Install OpenZepplin in the new project
npm init -y
npm install --save-exact openzeppelin-solidity
Configure Solidity Compiler
OpenZepplin contracts require the Solidity 0.5.2 compiler (solc), however Truffle works with 0.5.0 by default. So it is necessary to configure Truffle to use 0.5.2 in order to use OpenZepplin for contracts.
Let’s add the following to ./truffle-config.js:
Write Smart Contracts
As soon as you initialize a project with Truffle, it creates a ./contracts directory for your Solidity source code. Migrations.sol is present there for managing your contract migrations, don’t delete it.
Import OpenZepplin libraries
Starting to write your own smart contracts eases the use of OpenZepplin. As Truffle is dependent on NPM packages, Solidity libraries installed to ./node_modules are readily available without any configuration.
import 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol';
Deploy with Truffle
Open the Truffle Console
truffle develop
Run Compile
Migrate
Compilation generates the contract bytecode and application binary interface (ABI). Migration sends transactions to the network that create instances of our smart contracts.
Last updated