A smart contract is the backend of any decentralized app. The website and front-end of a dapp are there to serve as a user-friendly and easy way of interacting with the smart contracts. But what if the website goes down? Or what if you're just curious about the "behind the scenes" of a dapp?
In this article, I cover how to use a blockchain explorer (like bscscan or etherscan) to manually call functions on a smart contract.
There are two types of functions you can call in a smart contract, a read operation and a write operation. I'll go through each in more detail below so you can understand how to interact with a smart contract manually if needed.
A read operation is providing some data from what is already present on the blockchain. For instance, how much of a certain token your wallet contains is information already on the blockchain.
I'll do just that by checking how much CAKE I have in my Metamask wallet.
The first thing I need is the smart contract address for CAKE.
I can use a site like CoinGecko to see that
the address is
Then I'll look that address up on bscscan. If I was
looking up a smart contract on the ethereum blockchain I would go to etherscan
Next on that address page, I'll click on "Contract" and then on "Read Contract". This page will display all of the read functions. Shown below.
For my example, I'm going to find the
balanceOf function, then enter my wallet address
and get the amount of CAKE in my wallet.
Now as we can see from the screenshot above it's letting me know I have
146800968875596945 CAKE. I wish this was true.
But this number actually has 18 decimals in it (we can tell that from another read function called
so the real number is
146800968875596945 / 10 ** 18 = .146 CAKE.
A write operation adds a new transaction onto the blockchain and is therefore adding new information. An example of this is harvesting tokens from a yield farm. The transaction adds proof on the blockchain that I have harvested these pending tokens and that they are now in my wallet.
I'm going to complete an example of this below. Specifically, I'm going to harvest from the CAKE pool that I've been using on PancakeSwap.
First I need to find the smart contract address of the CAKE pool that I want to harvest from.
I know from previous interaction with this pool
that this address is
Then I'll search this address, go to "Contract" and then "Write Contract".
Now for write operations I'll need to connect bscscan with my Metamask wallet. This is the same as connecting any other application to Metamask.
Important: please do not call these functions unless you are absolutely confident in how they work and what input to provide. Providing the wrong input can result in losing tokens.
I know from looking at my previous transactions harvesting from this pool, that I need
to call the
leaveStaking function with an input of
0. This will then send all the pending
tokens to my address. Again, it's important to know what to input when performing a write
Input shown above, this will then pop up a Metamask window to confirm the transaction just like on any dapp. I click confirm and transaction is created. Once it's done, I'll have harvested my tokens just like I could have on the website.