Bringing MoveVM to Substrate and the Polkadot ecosystem

Hi.

We’re from Eiger, and since June we have been working on a pallet which will enable anyone to run Move smart contracts in the Polkadot ecosystem.

Move originated from Facebook as a programming language intended to power the Diem blockchain. Nowadays Move powers high profile blockchains like Aptos and Sui.

We believe that by bringing the MoveVM inside the Substrate stack and making it available to anyone in the Polkadot ecosystem by building a Move parachain, we can extend the computational capabilities of the network. Doesn’t matter what ecosystem they come from, the supercomputer welcomes all developers, languages and programs.

Our goals:

  1. MoveVM Substrate Pallet Development: The core objective revolves around creating the MoveVM Substrate pallet, which will serve as a bridge between the Substrate and the Move VM. This enables the execution of Move smart contracts on Substrate blockchains.
  2. Seamless Integration: We aim to ensure a smooth and intuitive integration process for Substrate developers. The pallet will be designed to seamlessly mesh with existing Substrate frameworks, enhancing the experience of incorporating Move smart contracts.
  3. Compatibility and Flexibility: Our project emphasizes compatibility with a range of Substrate blockchains. The pallet will be designed with flexibility in mind, accommodating diverse use cases and scenarios.
  4. Documentation and Education: We recognize the importance of clear documentation and educational resources. As part of the project, we intend to provide comprehensive guides and resources to facilitate the adoption of Move smart contracts on Substrate blockchains.
  5. Run the pallet in the real-world parachain: The most important is to make the whole Community benefit from our work. Thus, running a parachain capable of executing smart contracts is our priority and long-term objective.

Our current work is focused on the pallet development and we are close to completing that milestone. Next we would like to start development of the parachain but before that we’d like your thoughts and valuable feedback on this topic.

Read more about the design of our solution: https://github.com/eigerco/pallet-move/blob/436e666fba4c28fff6924d93e0d64585d96ad08e/doc/design.md

Keep track of our progress:
Wasm-compatible MoveVM: https://github.com/eigerco/substrate-move

15 Likes

Very excited to see this! I wonder if when the MoveVM pallet is complete it would be possible to try using Aptos’s Block-STM implementation for parallel execution?

1 Like

@sophia, thank you for the kind words!

MoveVM is intended to work as a pallet inside the Substrate runtime. The runtime does not support parallel execution. Well, at least officially - the sp_tasks package is marked experimental.

So, unless Substrate supports production-stage tasks/threads, we probably can’t use block-executor directly as it demands running jobs in parallel.

We’ll keep an eye on that topic, especially when trying to focus on a parachain with the MoveVM pallet utilized.

2 Likes

This is an awesome development to see get further! I was long a slight skeptic of move being more marketing than substance, but after taking an actual technical dive - it’s just incredibly impressive.

I urge anyone with doubts to read this Smart Contract Development — Move vs. Rust | by Krešimir Klas | Medium or just let chatgpt ingest it and ask questions.

The way move has been designed seems to solve so many issues smart contract developers have had in the past, that I truly think this is one big move to make polkadot even more long term proof.

What? https://twitter.com/rushimanche/status/1725090430352511147

Rushi is a huge move advocate, it’s great to see him bring his following over to Polkadot - shows why modularism enabled by substrate pallets is so strong. In the tweet he does erroneously mention that I somehow built this - I am not even a developer :grin:

Like I said, I am also excited about move - so I definitely tried to nudge the Eiger team towards working on this, but I had no part in the team or actual project itself - that’s all on them!

1 Like

Hey, Daren from Eiger here. Just to clarify Joakim has been pushing for the idea but he has no involvement with this project, which is entirely owned and executed by our team at Eiger so the linked tweet is inaccurate in assigning ownership.

3 Likes

Interesting post, Move came out of the facebook engineers that worked on facebook’s Libra project. Is the pallet being used by any live chain?

@RustSyndicate it’s not used by any chain right now as it’s currently under heavy development. We’re heading now towards finishing the second milestone of our work. However, we are very open to anyone who would like to implement Move in his parachain, and even now, we are ready to talk about the possible use cases.

Hello everyone!
This is a quick update from our side.
We’re finishing our next milestone in a couple of weeks from now. We expect a working pallet capable of storing Move modules and executing scripts.
We’re also preparing a testing node codebase for those who would like to check Move pallet capabilities and share some feedback with us and the community.

1 Like

Thanks for the clarification!

Hello everyone!
Karlo from Eiger here - this is a bit bigger update from our side.

We delivered the second milestone last week in which we provided:

  • Substrate-adapted MoveVM fork within the substrate-move repository
  • A working Move pallet with basic support for publishing modules and executing scripts.
    • Substrate accounts are used within the MoveVM context and can store modules and assets in the MoveVM storage.
    • A special MoveVM module defined in the pallet allows Substrate accounts to exchange native funds within the MoveVM context in a safe manner.
  • We prepared a Substrate-specific Move compiler and package tool called smove

Are you a Move developer and want to find out how your scripts would work on Substrate-based chains? Or are you considering setting up your parachain and looking for a robust VM to run smart contracts? We’ve prepared a template node (link in the pallet’s readme) for testing purposes. Give it a try, and let us know what you think.

Or check out our tutorial, if you want to learn more!

What’s in front of us is the next major update that we shall include in the next milestone:

  • Extend handling functionality for Substrate Move standard library.
  • Multi-Signature support - allowing execution of scripts with multiple signers.
  • Benchmarks and proper gas-to-weight calculation.
3 Likes