After our second on-chain upgrade, Morpheus “Apollo”, our testnet, could not connect to other chains using IBC. After identifying the bug that caused this, our team reported it to the Cosmos team and helped debug it to find its root cause. Luckily, the Cosmos Network team was very fast in releasing a fix, and this allowed us to plan a third on-chain upgrade that was successfully executed on Saturday 7th August.
Thanks to this last upgrade, our chain is now able again to connect to any other IBC -enabled chains. This is particularly important for Desmos because we rely on Band Protocol to allow users to verify their Desmos profile with external applications. For this reason, having IBC enabled on Morpheus “Apollo” is of essential importance.
Today, we are going to understand together how this mechanism works by going through the procedure that allows you to verify your Desmos profile and connect it to your Discord account. After your have completed this guide, you will have your Discord account linked to your Desmos profile, and you will earn a special role inside our Discord server! 🎉
Without further ado, let’s get started!
Creating your profile 👤
The first thing you need to do is to create your Desmos profile. To do this, you can use the following command:
desmos tx profiles save <DTag> --from <your-key> --chain-id morpheus-apollo-2 --fees 500udaric
Note that when executing the command you need to specify a
DTag which is a custom value that should uniquely identify you. You can refer to it as something similar to your Twitter handle.
When saving your profile you can also specify optional data with the flags provided. These include but are not limited to
You can use
desmos tx profiles save --help to see all the available flags and how they work.
Connecting your profile to Discord 🔗
Once you have a profile associated to your Desmos address, you are now ready to connect it to Discord. This process is composed of three steps:
- Proving the ownership of your Desmos profile.
- Associate the ownership proof to your Discord account.
- Verify the link between Discord and Desmos.
Proving the ownership of your profile 🔐
Since the verification of a Desmos profile is a fully decentralized process that runs mainly on another chain (Band Protocol), you first need to prove that you actually own your profile. This is done by simply signing a message using the private key associated to your profile, and it can be done with the following command:
desmos sign "<value>" --from <your-key>
You need to replace
<value> with the value you want to sign. In this case, you need to sign your Discord username which should be in the form of
Foo#123). Here is a full example:
desmos sign "Jack#123" --from jack
To find your username, you can simply get it by clicking on it in the lower bar of your Discord client, over your username. You can also see it inside the My Account page of your Discord settings.
This command will output a JSON containing the signed value along with the signature, your public key and address as hex-encoded values.
Associating your ownership proof to your Discord account 🤝
The next thing you need to do is associate the ownership proof of your Desmos profile to your Discord account. To do this, you can join our Discord server, hop into the Verification channel and send the following command inside the chat:
You need to replace
<JSON> with the output of the
sign command that you used previously.
This will be picked up by our bot and stored on our servers so that it can be used later to verify your account from our Band Protocol oracle script.
Verify the link between Desmos and Discord ✅
If everything has gone properly and the data was valid, the bot should send you a private message containing a Desmos command that you need to execute. It should look something like this:
desmos tx profiles link-app ibc-profiles [channel] discord "Jack#123" 7b22757... --from <your-key>
What you need to do now is copy that command and run it using the Desmos CLI. The only thing you need to make sure is to use
channel-4 and the value of
[channel]. This way, the command should look something like this:
desmos tx profiles link-app ibc-profiles channel-4 discord "Jack#123" 7b22757... --from <your-key>
This will start the verification process by creating an IBC transaction that will be picked up by our relayer and sent to Band Protocol. You can keep a look at such verification process by running the following command:
watch -n.5 "desmos q profiles app-links $(desmos keys show <your-key> -a)"
This will constantly query the node and output the state of your application link. The link should assume the following values for the
APPLICATION_LINK_STATE_UNINITIALIZED_UNSPECIFIED, when the link is just created
APPLICATION_LINK_STATE_VERIFICATION_STARTED, when the IBC transaction has been sent to Band Protocol
APPLICATION_LINK_STATE_VERIFICATION_SUCCESS, when the verification on Band Protocol has terminated successfully.
Please note that the whole process might take some minutes due to the fact that our relayer is currently set to relay packets every 60 seconds, and there are two packets that need to be relayed: one from Desmos to Band Protocol, and one from Band Protocol back to Desmos.
Getting your special role inside our server
Now that you have been able to successfully connect your Desmos profile to Discord, you can claim a special role inside our Discord server. To do this, simply hop into the Verification channel and type
This will check if your application link has been successful, and give you a Verified user role if you have linked your personal profile, or a Verified validator role if you have linked the Desmos profile associated with your validator!
We really hope this guide has been sufficiently clear to allow you to connect your Desmos profile to Discord. This is just an example of what Desmos can achieve using IBC, and just the first of many verification processes that we will explore in the future.
If you have any question about this process or Desmos in general, don’t forget to join our Discord server and ask there! We will be willing to help anyone testing our platform and the ways it can integrate with other projects.