Make cross-chain SDK featuring Basilisk support
Treasury
0 Comments
Awarded
banner image

Our team called ParaSpell✨ wishes to include support for Basilisk on our way to make a cross-chain SDK that will serve every dApp developer in Polkadot ecosystem.

TL;DR:

We wish to make our already established SDK more robust and add features that will connect an entire Substrate while being as secure as possible. Our most beneficial features are/will be (some are already implemented):

  • Support for nodes with xTokens pallet - (In two scenarios - Parachain to Parachain transfer, Parachain to Relay chain transfer)
  • Support for nodes with polkadotXCM pallet (In two scenarios - Parachain to Parachain transfer, Parachain to Relay chain transfer)
  • Support for transfers from Relay chains (Kusama & Polkadot respectively)
  • Ability to use Basilisk´s XYK pallet through SDK (Along with Wiki guide)
  • Support for all nodes out of the box (Without need of adding them manually)
  • All in one npm package along with proper documentation
  • This SDK is mostly beneficial to substrate developers however users can enjoy fast & secure cross-chain transactions and dApps created by those developers that are able to them quickly for users once SDK is built.

ParaSpell XCM & XCMP SDK

  • Team Name: ParaSpell✨
  • SDK Name: @paraspell/sdk
  • Beneficiary Address: bXjbnJk9vZ3inrbaoJxjcckhn832bM2mjfhTZ8GBMCkNWXkXN (BSX)
  • Total sum: 9 000$
  • Initial request sum: 2 000$
  • After delivery request sum: 7 000$

Project Overview 📃

How will SDK benefit Basilisk

This SDK will benefit Basilisk in various ways, for example:

  • It would be very easy to build cross-chain dApps that can implement Basilisk
  • It could help speed up development for internal basilisk team
  • It will benefit users with expandability of possible use cases
  • Asset sharing between Basilisk and other compatible nodes will be easier

What is ParaSpell

XCM & XCMP related development tool with SDK and UI created for developers.

ParaSpell main advantages can be summarized in the following list:

  • ParaSpell is a platform that allows developers to use specific XCM & XCMP related tasks from a user-friendly interface.
  • ParaSpell focuses on ease of use, broad scale of use cases, and bringing XCM & XCMP utilization & documentation closer to developers.
  • ParaSpell guarantees to be a completely decentralized, open-source platform that does not collect any user data.
  • ParaSpell allows other substrate projects to easily implement XCM & XCMP functionality with ParaSpell SDK

One of the ParaSpell main goals is to reduce the time necessary to create XCM calls or open HRMP channels.
Another goal is to make XCM calls as easy as possible to construct via SDK while retaining full customizability of what is transferred through XCM message and where.

comparison

As we can see in the figure above, the amount of details the user has to fill to transfer the XCM message is drastically reduced. As an example, users do not need to specify a specific route from origin to destination chain. These details are filled for them.

Another goal of ParaSpell is having network installation, compilation & startup done as simply as possible. This is achieved by makefile that groups commands into fewer much more intuitive commands and by network startup configuration file. Together, these two files take care of the network side, and adding new nodes into these files is intuitive. Starting the application is also very simple and done by one command. Communication between application and network is made possible with Polkadot API libraries. This can help future Parachain developers with testing.

ParaSpell focuses mainly on substrate developers. Added value comes from being user friendly SDK for simplifying development by saving time necessary to install & launch network, open HRMP channels or create XCM transfers between nodes available in network.
Another added value comes from SDK that aims to connect entire Substrate ecosystem and in future also EVM with Substrate.

Overall ParaSpell is all about developer experience.

Project Details

ParaSpell in its current form allows developers to install all dependencies as well as a network consisting of Rococo, Pichiu(Kylin network), Bifrost & Acala nodes with one command. Launching a network is also done by one command. Once the network is installed and started ParaSpell application allows developers to open/close HRMP channels between mentioned parachains. In current progress ParaSpell already has user interface and main functionality almost finished.

The following screen allows the user to open the HRMP channels between list of parachains pulled from Rococo by API call.
open channel

Closing HRMP channels is just as simple as opening them. One button click to close the required channel.
close channel

If the user decides to transfer funds from Relay chain to Parachain they can do so by filling following details. These required details are way faster to fill than filling a full XCM call which requires a complete route and selection of concrete token.
relay to para

The opposite, but nearly the same scenario is sending tokens from Parachain to Relay chain. It is just as simple, however.
para to relay

The last transaction scenario is the transfer of funds between Parachain and another Parachain.
para to para

Architecture 🏗️

screenFlow

UI is purposely designed to be as simple as possible. This guarantees, that all tasks can be done quickly and without extended searching. All necessary screens also feature notifications which will as a milestone explain be callback reactive. The loading screen is only present on the first application & network startup, once accessing the same screen after the application was loaded it will be skipped automatically. The screen serves to register necessary assets in parachain nodes. This is only required to be run once per network startup.

SDK currently handles transfers to 29 compatible Parachains (ones that have xTokens pallet) and also can transfer to both Relay chains. It is easy to construct calls as is but we want to make it even easier and more developer friendly.

Technology Stack 💻️

  • Vue.js
  • Node.js
  • Typescript
  • Polkadot api libraries
  • Make
  • Polkadot launch
  • Substrate compatible nodes (For now Rococo, Pichiu(Kylin network), Bifrost & Acala)

Ecosystem Fit 🌳

There are not many XCM & XCMP related development tools released currently. We aim to aid this mostly empty space and help developers to understand XCM & XCMP as the current state-of-the-art technology by providing documentation and a user interface in which they can do development tasks more easily and faster.

In Polkadot and Kusama ecosystem, there are few XCM related tools in development. For example Moonbeam XCM SDK was released only recently. We bring comparison table that compares our ParaSpell SDK to Moonbeam SDK
Screenshot from 2022-11-25 00-37-42

Unlike the already mentioned "Moonbeam XCM" platform ParaSpell provides UI enhancement that uses our XCM SDK and users can try/learn technology from it. ParaSpell also includes support for all 29 Substrate Parachains that have xTokens pallet compared to Moonbeam XCM to which users have to implement compatible nodes manually. ParaSpell SDK only needs one package compared to Moonbeam XCM which has total of two. Compared to Moonbeam XCM which contains only XCM calls ParaSpell also contains calls that can open or close HRMP channels. We also want to include support for Parachains that have template pallet for XCM called polkadotXCM this pallet is a little harder to work with than xTokens, even more for inexperienced developers.

Another comparison worth mentioning is UI vs Morph which is also enhancement of XCM UI Transfer tool
Screenshot from 2022-11-25 00-37-58

Unlike the already mentioned "Morph" platform ParaSpell focuses more on developers. ParaSpell features complete network install and startup configuration in one single command. This automatization ensures, that developers do not need to do any extra tasks when they wish to run development nodes locally. ParaSpell also allows developers to open and close HRMP channels between Parachains they connected. Like "Morph", ParaSpell can also transfer fungible tokens in three scenarios. From Parachains to Relay chain, from Relay chain to Parachains & from Parachains to Parachains.

We are currently in talks with several Parachain teams that like the idea of unified SDK for XCM transfers as much as we do. SDK that unifies XCM can be very helpful for entire ecosystem in our opinion.

Our target audiences are Web3 projects and starting/current blockchain developers.

Team 👥

Team members

Dudo50 - Student, project Core Dev. Faculty of Informatics and Information Technologies STU in Bratislava

Viki Val - Supervisor, founder of KodaDot. Faculty of Informatics and Information Technologies STU in Bratislava

Team's experience

  • Dudo is the programmer & researcher behind this project and has successfully presented it at the international conference ICECET2022 held in Prague from which there is an article regarding XCMP & our project. It is published on IEEE. Dudo also studies Blockchain technology and had a bachelor thesis about cross-blockchain sharing from which this idea was born. Dudo is actively working on ParaSpell full-time & have also created project called MoonDo which he works on & researches during free time, research from it will be used in ParaSpell. MoonDo won second place bounty for Axelar in Moonbeam connected contracts hackathon link.
  • Viki (@vikiival) is building open-source software in the Polkadot ecosystem since 2019. Viktor is also Dušan's supervisor, Co-Founder of KodaDot, and co-author of our XCMP ICECET2022 article publication.

Team Code Repos

Team Github Profiles 🧑‍🎓

Development Status 📖

UI that uses XCM SDK has it's functionality implemented already which was main goal of our first proposal. We will shift it towards new version of Vue which is state of the art during fufillment of this proposal. SDK has beta pre-release phase released, it features all 29 nodes that implement xTokens pallet, ability to transfer to & from Relay chains, ability to open & close HRMP channels.

Development Roadmap 🛠

  • Estimated duration: 4 months ⌛️
  • Full-Time Equivalent (FTE): 2
  • Total costs: 9 000 USD 💰️

Basilisk specific delivery

  • 0a. License: MIT
  • 0b. Article: We will mention Basilisk as supporting chain in Medium article about SDK development
  • 0c. Badge: We will add Basilisk as supporting chain in readme of both SDK & UI repository
    1. Implement support for checking asset compatibility on Basilisk through asset pallet: Check which tokens are supported and allow user to use them through SDK
  • 2.a Implement support for Basilisk's XYK pallet: Add ability to exchange asset for another, create pool and more through Basilisk XYK Pallet
  • 2.b Wiki guide Basilisk's XYK pallet: Add comprehensive guide on usage of XYK Pallet via SDK
  • 2.c UI Example on Basilisk's XYK pallet: Create simple UI example that allows for quick demonstration of XYK Pallet and users are able to see how it can be implemented into dApp

General delivery

  • 0a. License: MIT
  • 0b. Testing and Testing Guide: Core functions of new version will be implemented into ParaSpell UI and so they will be easy to test. We will also provide unit tests for every SDK functionality
  • 0c. Article: We will publish Medium article about development of SDK
    1. Add SDK ability to transfer different token types: Nodes, that support different token type transfers will have ability to customize this
    1. Make SDK easier to use: Merge Parachain to Parachain & Parachain to Relay chain scenarios in SDK into one scenario that will be able to adapt based on details provided (if destination node id not provided, then assume transfer is for relay chain, also if token is compatible with relay chain), this will replace need for calling two functions for each scenario with only one function covering both scenarios eg. send() instead paratopara() & paratorelay()
  • 3.a Add support for nodes without xTokens pallet I: We will implement support for transfer scenario Parachain to Relay chain for nodes that do not have xTokens pallet but have polkadotXCM prebuilt template pallet. (SDK will be able to determine which pallet to use on which Parachain automatically)
  • 3.b Add support for nodes without xTokens pallet II: We will implement support for transfer scenario Parachain to Parachain for nodes that do not have xTokens pallet but have polkadotXCM prebuilt template pallet. (SDK will be able to determine which pallet to use on which Parachain automatically)
    1. Add support for checking data that does not change: There are things that do not change, such as base token configuration (Polkadot, DOT token, 10 decimals), (Basilisk, BSX, 12 decimals), (Astar, ASTR, 18 decimals) This can be imported from @polkadot/network to have better support for different transfer scenarios
    1. Rewrite SDK to builder pattern: Best thing we can do to support multiple pallets and make it simplier for developers would be a Builder pattern functionality would look like: import { Builder } as ‘@paraspell/sdk’ and then building of call would be something in sence: const call = Builder(api).from(‘bsx’).to(‘ksm’).teleportTokens(‘KSM’).addr('destinationAddr').sum(currencySum).asV3().build()
    1. Make a map of compatible <chain, pallet>: Before each SDK release there should be a script that connects to the compatible nodes, checks all relevant available pallets xTokens, polkadotXCM, asset pallets, HRMP pallets) and saves them to the map.
    1. Use turborepo : Remake package into monorepo for easier importing and cleaner use
    1. Add Wiki guide : We will provide useful Wiki guide that will explain data that is used by different transfer scenarios. We will also explain how to add new nodes that will be compatible
  • ✨. Bounty funding in BSX: Part of Milestone delivery cost will go on Bounty funding to enhance contribution to the ecosystem & new potential developers.

Future Plans 🔭

Once everything will be implemented according to the proposed plan application will still be under constant improvement as technology will progress. For example, once the XCMP protocol will be released we wish to deprecate the HRMP protocol we currently use for channels.

In a long run, we also want to improve design, add new features that can be useful for developers and support for new nodes.

Project goal is that UI will be released to Test net and later on to Main net. It would then be usable for every use case and for everyone.

Project achievements in chronological order ⌛️
  • 📙 Article about project created & presented on international conference ICECET2022 held in Prague (450 out of 1000+ articles accepted) Link to IEEE publication - IEEE - Sharing Fungible Assets Across Polkadot Paraverse
  • 🥈 2nd Prize, Build a XCM related Tool for Moonbeam - Polkadot North America Hackaton Hackaton entry
  • 🥉 3rd Prize, EVM+ DApp for aUSD yield - Polkadot North America Hackaton Hackaton entry
  • 🎈 Web 3 Foundation base grant funded link, link2.
  • 🥈 Second place bounty in Moonbeam connected contracts Hackathon - Build Cross-chain application with Axelar Link to hackathon post
Edited
Reply
Up
Share
Metadata
TimelineLatest activity undefined
2022-11-25 01:11:24
Proposed
Index
#2
2022-11-26 18:00:00
approveProposal
5/5
Aye(5)
Nay(0)
2022-11-26 18:37:42
Vote
2022-11-27 07:13:54
Vote
2022-11-27 22:01:36
Vote
2022-11-29 12:32:18
Vote
2022-11-29 12:37:18
Vote
2022-11-29 12:37:54
Closed
2022-11-29 12:37:54
Approved
2022-11-29 12:37:54
Executed
Result
Succeed
2022-11-30 05:48:06
Awarded
Beneficiary
Award
20600000 BSX
Comments
There are no comments here