Hello, Viewing Keys
Read the code for this tutorial here
Overview
In this tutorial we are going to learn how to build an application that allows you to connect to Keplr, once connected you can create your viewing key and finally get your account balance.
Requirements
In order to go through this tutorial you'll need to have a React app created. You can find how to do it here. Also, install your dependencies and install Griptape.
Getting started
This tutorial consist of these steps:
Grip you application
Bootstrap the application
Create a contract definition
Build the app
Grip your application
Go to the src/index.js
and import gripApp
and getKeplrAccountProvider
from @stakeordie/griptape.js
package.
You can check how to grip your app here
Bootstrap the application
Open up src/App.js
and add a button to bootstrap the application.
You can check how to boostrap your app here
Create a contract definition
In order to interact with a contract, you first need to create its definition. First we need to import createContract
and snip20Def
APIs from @stakeordie/griptape.js
to our file src/contracts/sscrt.js
Once that is done, we create the definition sscrt
to which we are going to assign an id that can be the name you want, we are also going to assign an address of instantiated contract on the blockchain.
Finally, Griptape has SNIP-20 compliant contract definitions, so you don't need to write it yourself.
Learn more about contract definitions here
Build the application
To start building our application, we need to import bootstrap
, viewingKeyManager
, onAccountAvailable
and coinConvert
APIs from @stakeordie/griptape.js
and also import the contract definition we just made sscrt
from "./contracts/sscrt"
.
We now see that we are using the onAccountAvailable
event which you can read more about here. Inside our event we query the viewingKeyManager
with our address contract sscrt.at
, after that if a key already exists we assign it to state setViewingKey
.
To create a viewing key, we're going to make an asynchronous request to sscrt.createViewingKey()
, if this doesn't return a response, the function ends. If it is the case and if it returns a response then, we parse the result. Now we send our contract sscrt
and our key
. We also need to check if a viewing key already exists so we can add it by viewingKeyManager.add()
or replace it by viewingKeyManager.set()
with the new key.
After having our viewing key, we want to see our balance. For that reason, we create the function getBalance
, within the function, we can see that we make an asynchronous request to obtain the value of our viewing key.
If we do not have a viewing key the function ends, but if this is the case, where we have a viewing key, then we went to consult our amount In sscrt.getBalance()
, then we convert our amount
with the function coinConvert
where ... and finally we assign the value of balance
the state setCoins
.
And this is what our full application should look like, adding a bit of JSX.
Last updated