Skip to main content

Pontem Network (VM).

  • Team Name: Dfinance (Wings Stiftung).
  • Payment Address: 32AAAxmKJ9XxCsGSwt11oAuovCUHbgsgfY.

Project Overview

Overview

Pontem Network aims to bring the Move VM and Move language, and ecosystem around it to Polkadot.

The Move language and the Move Virtual Machine, both developed by Facebook Libra, are among the safest technologies out there that enable the creation of smart contracts. While having built-in security by design such as resource-oriented architecture and formal verification, Move VM still severely lacks toolsets and documentation.

We are going to create the Move pallet to make it possible for developers to publish their Move VM modules and execute scripts, also, we already built a rich toolset and documentation for Move language, so we will need only adopt it for Polkadot.

This is where our team has a unique experience, due to over 2 years spent working with Move and building tools around it. We have been working closely with Libra (as recognized technical adopters) as part of the Dfinance project which is utilizing the Move language and Move VM in order to run safe and usable smart contracts.

Project Details

Implementation of Move VM pallet won't be an easy task, even taking into account our experience connecting Move VM with Cosmos SDK, achieved via integrating Move VM as GRPC service.

In the case of Polkadot WASM Runtime we can’t repeat the same approach with GRPC due to limitations of Runtime, but we can do a more elegant solution by utilizing Move VM inside Runtime. To be clear let’s see our plan step by step.

  1. Move VM and language written in Rust language and can be compiled to WASM, unfortunately we can’t use crates that depend on runtime. We will create a stable working pallet by forking of Move VM/language and replace creates with ones we can use.
  2. We will make Move VM outputs (writesets) compatible with Polkadot key-value storage, as during our latest research we discovered it’s not going to work “out of the box” and will require some time to build a solution. Same with address format SS58, and non VM balances.
  3. We need to make gas usage of Move VM compatible with Polkadot standards. At least by using the same units like other VMs/pallets using.
  4. Build a documentation around the Move pallet, adopt existing tools and docs about VM and language.

We already have rich experience in these topics because of our current Dfinance project, so far we developed:

Ecosystem Fit

  • Developers can be interested to build their DApps on Polkadot using Move technology stack, as it’s a safe and useful language which is getting more and more adoption.
  • Libra is developing and using Move, so Polkadot will have at least initial compatibility with Libra at least by allowing using the same modules in both networks.
  • Flow - Crypto Kitties creators blockchain also going to utilize Move VM and language, also by creating new language on top of it - Cadence, which can be adopted to Polkadot later.

Team

Team members

  • Oleg Gaidukov - CTO.
  • Boris Povod - R&D Lead and Blockchain developer.
  • Alexander Kozlovsky - Rust developer and Rust community enthusiast.
  • Dmitry Yakushev - Rust developer.
  • Vitaly Rudko - Dev Ops.

Contact

  • Registered Address: Gubbelstasse 11, 6300 Zug, Switzerland
  • Registered Legal Entity: Wings Stiftung

Team’s experience

We are an experienced team, our current project is Dfinance, in the past we've launched Wings platform, and before that we've developed Crypti (which became Lisk).

Team Code Repos

Contributions to other projects (Libra & Cosmos SDK):

Team LinkedIn Profiles

Development Roadmap

Overview

  • Total Estimated Duration: 4 months.
  • Total Effort: 357 days.
  • Total Costs: 1.4658 BTC.

Milestone 1 - Pre-Alpha version of Move pallet

  • Estimated Duration: 1.5 month
  • Working days x ppl. : 28 x 4
  • Effort: 112 days
  • Costs: 0.419 BTC
NumberDeliverableSpecification
0.Crates listBuilding a list of crates we have to replace with analogues could work in runtime or make our own versions which can work in runtime also.
1.Crates developingDuring our research we can use sp-std for part of cases, but unfortunately we will have to fork it and add additional functional or create our analogue crates contains missed functional.
2.Crates replaceAdopt Move VM for runtime using developed crates.
3.Move PalletCreate a Polkadot pallet with Move VM inside. Alpha version, without processing of WriteSets.
4.Addresses supportAdd support of SS58 addresses to Move VM.
5.CompilerAdopt compiler to compile modules/scripts for Move VM inside pallet.
6.Unit-testsBasic unit-tests coverage, at least 30%.
7.DockerDocker-compose to quickly launch standalone version of Move VM.
8.DocumentationInitial documentation how to run Move VM inside Pallet/standalone, execute scripts and publish modules.

Milestone 2 — Alpha version of Move pallet

  • Estimated Duration: 1.5 month
  • Working days x ppl. : 28 x 5
  • Effort: 140 days
  • Costs: 0.5508 BTC
NumberDeliverableSpecification
0.WriteSets processingProcess WriteSets from MoveVM to Polka storage. Read/Write operations, Del operations.
1.Events processingProcess Move events format to Polkadot one and publish them to block.
2.Publish TransactionCreate a transaction type to support Move module publishing.
3.Execute Arguments ParsingTo enable execute script transactions support we need to parse script arguments.
4.Standard LibraryMove Standard Library Module adoption for Polkadot.
5.Execute TransactionCreate a transaction type to execute Move scripts.
6.Unit-testsCover 60% of the pallet functional with unit tests.
7.Resource viewerResource viewer to view Move resources from Substrate node storage.

Milestone 3 — Beta version & Ecosystem

  • Estimated Duration: 1 month
  • Working days x ppl. : 21 x 5
  • Effort: 105 days
  • Costs: 0.496 BTC
NumberDeliverableSpecification
0.Gas compatibilityChange VM gas usage units and math to make it compatible with Polkadot.
1.Non-VM balances compatibilityVM supports native coins inside smart contracts, example: DOT.
2.REST APIREST API to compile, publish/execute modules and scripts.
3.RPCRPC to publish/execute modules and scripts.
4.DocumentationSupplement documentation with all features we provided: txs, compilers, smart contracts examples.
5.Deployment of prod envSpin up instances on the top of DigitalOcean/Kubernetes cluster, set an auto deploy etc.
6.disassembler adoptionAdopt current disassembler for Substrate node.
7.Unit-testsCover 85% of pallet functional with unit tests.

Future Plans

Wings Stiftung plans to continue supporting Move ecosystem. We want to build a bridge between Polkadot and Libra as Parachain, and launch our Parachain with Move VM pallet inside. Also, we going to proceed with further development of toolset (Move debugger, unit-testing framework, etc.) and extend our Wallet with Polkadot-specific features.

Additional Information

Wings Stiftung will be as well supporting financially this project. We are going to apply to another Grant for the implementation of the Pontem network.