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. comparison 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.

Built With

  • axelar
  • gmp
  • polkadotapi
  • polkatools
  • vuejs
  • xcmtools
Share this project:


posted an update

Current progress update:

  • Ability to send a transfer from any account Axelar GMP tech. 70% - Preview concept released

What needs to be figured out for the feature to be released:

  • How to add an unknown account to the localhost network as signer
  • How not to redeploy contracts for the same account once the transfer was issued through them once (send from any account scenario only, send from prefunded scenario does not have this issue)

This is going to be the future work.

Log in or sign up for Devpost to join the conversation.

posted an update

Extra features we decided to implement for this hackaton:

  • insufficient balance warning when sending Axelar GMP transfer: Implemented
  • ability to send a transfer from any account Axelar GMP tech. : 50% Implemented work in progress

Log in or sign up for Devpost to join the conversation.

posted an update

Updates: We successfully implemented the ability to launch Axelar localhost network gateways for all 5 supported nodes (Avalanche, Moonbeam, Ethereum, Polygon, Fantom) along with sender and receiver contracts for all mentioned 5. Next steps:

  • Adding balance display for entered account address & pre-funded account on all chains.
  • Making video explaining all features MoonDo offers

Future steps:

  • Ability to select the account from which you want to transfer funds (Currently from pre-funded account configured on network startup)

Log in or sign up for Devpost to join the conversation.

posted an update

Application deployed on Heroku feel free to try it out. (Notice: You need to have a special account imported in order for Transactor XCM to work, more info in GitHub repo) News about what is planned:

  • Axelar GMP support for transactions between Moonbeam & Cosmos

Log in or sign up for Devpost to join the conversation.

posted an update

Application has now fully implemented XCM message sending through XCM Transactor, Balance transferring through XCM Transactor & Sovereign account generator. Next steps: uploading the application to Heroku & creating application demo video.

Log in or sign up for Devpost to join the conversation.