4. Deploying BMC Smart contract
4.1 Deploying BMC Smart contract to Klaytn Testnet
After successfully testing the functionalities of our BMC smart contract, let’s proceed to deploy to the Klaytn Testnet Baobab in the following steps:
Step 1 - Creating a .env file
Now create your .env file in the project folder. This file helps us load environment variables from a .env file into process.env.
Paste this command in your terminal to create a .env file
touch .envAfter creating your file, lets configure our .env file to look like this:
BAOBAB_URL= "Your RPC URL"
PRIVATE_KEY= "your private key copied from metamask wallet"Step 2 - Setting up Hardhat Configs
Paste this configurations in your hardhat.config.js file
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();
const BAOBAB_URL = process.env.BAOBAB_URL;
const PRIVATE_KEY = process.env.PRIVATE_KEY;
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.18",
defaultNetwork: "hardhat",
networks: {
baobab: {
url: BAOBAB_URL,
accounts: [PRIVATE_KEY],
}
}
};Step 3 - Creating deployment scripts
To create a new deployment script that deploys this smart contract to a specified network, create a new file scripts/deploy.js and paste in the code below:
Now that we have our configurations all set, let’s deploy to Klaytn Testnet Baobab by running the command below:
Once the contract deploys successfully, your terminal should look like this:
Congratulations on deploying your BMC smart contract on Klaytn Baobab Network! You can verify this transaction on Klaytnscope by pasting your address in the search field.
4.2 Interacting with BMC Smart Contract
In this section, you will learn how to use hardhat scripts to withdraw the coffee tips sent into the smart contract. To get started, create a new file withdraw.js in your scripts folder and paste the code below:
As you can see from the code above, having instantiated the BMC contract, the scripts will execute the withdrawCoffeTips function only when the contract balance is greater than zero. Makes sense right?
Yes! In the event where the contract has no funds, it prints "No funds to withdraw" hence saving us some gas from contract invocation.
To see this in action, lets run the script below:
On successful execution of the scripts, your terminal should look like this:
You can see from the output that the owner balance increased by 2 KLAY after withdrawing the coffee tips.
Now that we have our contract deployed and all functionalities tested, it is time to build out the frontend.
The frontend will bring the BMC functionality to live i.e we can now visualize how we interact with the BMC smart contract.
Last updated
Was this helpful?