MoonDo Home screen
Axelar GMP transaction /w ballance on source account
Axelar GMP transaction /w ballance on destination account
MoonDo XCM Transactor screen /w scenario of XCM transfer
MoonDo XCM Transactor screen /w scenario of Balance transfer
MoonDo Sovereign generator screen I
MoonDo Sovereign generator screen II
There are not that many XCM tools/dApps focusing on Moonbeam's XCM Transactor, Axelar's GMP or Sovereign account generating. Moon🌕️Do focuses on ease of use, being fast, secure & user friendly. User no longer needs to go through a lengthy process to generate a sovereign account manually. They can do it with a few specific details & simple click of a button. Moreover, they can execute XCM or many else calls with XCM Transactor from a different chain with a user-friendly UI. Lastly, user can use Axelar's GMP technology to pass assets between Moonbeam & other supported nodes.
What it does
The project allows user to start application, that can right out of the box generate sovereign account addresses for cross-chain transfers to & from the Relay chain. User can also create XCM Transactor calls from Parachain to do actions on the Relay chain. Currently available call options that can be executed through XCM Transactor from Moonbase Alpha Parachain through Moon🌕️Do:
- XCM Transfer Call from Relay Chain to any Parachain connected with HRMP channels
- Balance transfer between Relay Chain accounts
Another beneficial feature is Axelar's GMP to transfer assets cross-chain between all currently supported nodes(Moonbeam, Avalanche, Polygon, Ethereum, Fantom, Aurora & Binance).
Every screen has notifications for important actions (eg. copied address to clipboard, information, that sovereign addresses are generating, information about block finalization of XCM Transactor call, information about tx hash of XCM Transaction call).
Instead of filling lengthy calls Moon🌕️Do fills them for you. This for example involves constructing API calls you wish to perform on the Relay chain and computing encoded call data from them. This encoded call data is then used in a call executed on Parachain (XCM Transactor scenario).
In the picture below on the left is the amount of data Moon🌕️Do requires & on right is the amount of data you would have to fill to create two calls necessary for XCM call execution through XCM Transactor pallet. You can click on the image to see it in full resolution. This is what Moon🌕️Do focuses on with all other scenarios as well.
More exciting features to come with time and research!
How we built it
The application was built on the Vue.js framework for front end development. For communication with blockchain, we used Polkadot API libraries. To calculate sovereign accounts we intended to use a back end that would calculate addresses but we were successful in integrating necessary function to the fron-end only. We derived & modified some functions for sovereign calculation use case from repositories xcmTools & PolkaTools. We ensured that they are open source by contacting their author. Lastly, we used Axelar's token transfer example to enhance their technology & with some modifications fitted it into our Moon🌕️Do XCM UI enhancement tool.
Challenges we ran into
- The first issue was, that we were unable to make Metamask work with Polkadot API securely.
- The second issue was, that when we decided to use the PolkadotJS wallet instead, we were receiving some issues due to AccountKey20 address formats which are not default for the Substrate ecosystem. These issues were resolved by using Talisman wallet instead.
- The third issue was, that if we were to use without modifications necessary already mentioned xcmTools & PolkaTools functions for the sovereign use case we would have to integrate back end for the application which isn't always ideal use case. With few modifications, we were able to fit & reconstruct necessary sovereign use case functions into the front end solely which provided us with a huge benefit regarding speed & safety, since integrating the back end might expose some dangerous back doors if not programmed properly.
- The fourth issue was, that implementing Axelar's GMP technology required smart contract knowledge. We used smart contracts in projects quite some time ago so our knowledge needed dusting.
Accomplishments that we're proud of
- We were successfully able to execute XCM messages from Moonbase Alpha with XCM Transactor.
- We successfully built a sovereign account generator solely working on the front end without the need for any back end.
- We successfully implemented Axelar's GMP into the localhost version of our project (we plan to release it into test net as soon as we merge this project with ParaSpell, more on this later in this post)
- A new concept, that can be used in other projects was born.
- We created a platform that can and will continue to be researched.
What we learned
We dived into the Moonbeam ecosystem a lot more than we were used to and learned critical structures which will certainly help us with future development on this platform. Moonbeam & Axelar document everything very well, however, some areas required further research than what was written. Both Axelar's GMP & XCM Transactor for example is an entirely new technology for us, so it was amazing to explore them more.
What's next for MoonDo
Moon🌕️Do will continue to evolve. A few more features in regard to the Moonbeam & Axelar ecosystem are planned. For example for Moonbeam, we wish to research & bring native XCM transfer scenarios for Testnet. These scenarios are the following: Relay to Para, Para to Relay & Para to Para XCM transfer possibility (Moonbase Relay, Moonbase Alpha & other Parachains connected to Moonbase Relay). Once the application is fully finished, it will merge into our already established & funded main project called ParaSpell ✨, a Cross-blockchain transfer tool for Substrate developers/users that we want to connect Substrate ecosystem with.
Log in or sign up for Devpost to join the conversation.