New Product Releases: Staking & Vesting Functionality & Keeping Up With the Latest Diem Developments

Announcements

We are excited to announce our latest product release. We have been working hard on improving our Move VM, tooling and Substrate pallets. This release will not only maintain network compatibility with the latest Diem Blockchain developments, but also add new functionality for staking, vesting and Polkadot Parachain data transfers through XCMP. We will also share some of the challenges we are facing with adopting the new Diem standard library and how we plan to solve them.

Chat with us about these updates: TWITTER | TELEGRAM | DISCORD

Move Tech

Move VM: We finished upgrading our Move VM. Given we are using our own fork of the Diem Move VM that works in a WebAssembly (WASM) runtime, we wanted to make sure that our codebase could be upgraded to the latest updates from the Diem Association without breaking backwards compatibility. In this update we also refactored native balances logic, added genesis initialization logic, allowing users to upload custom standard libraries alongside the rest of the standard library configuration like initialization of modules and accounts in the genesis block.

Move Tools: We updated our Move tooling to be compatible with the latest version of the aforementioned Move VM. This includes updates to the Dove package manager, compiler and disassembler. We also refactored the compiler, improved commands, and added more validations. For a list of all the updates, read the full version changelog.

Substrate Pallets

*New* Staking Pallet: Our Substrate node now has staking functionality (Yay! 🥳). Changes are in PR, as we first need to prepare our DevOps infrastructure for staking and restart our testnet in the near future. We had initially planned to customize the staking economic model, but we decided to adopt the standard Substrate staking and inflation model since it is optimal for our use case.

*New* Vesting Pallet: We have successfully added a vesting pallet to our Substrate node. This allows us to generate a genesis block with vested balances in PONT tokens, a useful feature for current and future investors.

Move Pallet: We will soon finish updating the Move VM pallet with the latest Move VM version. We are finalizing tests and connecting native balances after refactoring.

Parachain Functionality

We are making good progress on this feature, already achieving the milestone of implementing cross chain messaging between two parachains with XCMP evidenced by a successful test message delivered. Next, we are working on enabling basic asset transfers between parachains and resolving issues with implementing smart contract execution. A big thank you to the Parity team for helping us with this.

Challenges Adopting the Diem Standard Library

Given the more centralized permissioned architecture of the Diem Blockchain, we are running into issues adopting their new standard library. The latest release contains changes that ensure the code adheres to the regulatory compliance framework set by the Diem Association which requires a lot of functions to be called or executed only with signed permission from the Diem Root Account or Diem Treasury Accounts. This is breaking logic and compatibility for our permissionless system, since we had planned to allow for functionality to work without permissions from the treasury and root accounts.

Our plan to solve this challenge:

  1. At this current stage, we are adopting the current Diem Standard Library for our needs by temporarily losing some compatibility.
  2. At a later stage, we are going to enable language macros in our compiler that will allow our tools to disable requirements of root and treasury account signatures without changing the code of the standard library. This is similar to macros in the Rust language. This will allow Pontem to maintain compatibility with Diem. We are still researching this solution, and estimate it will take 1–2 months to develop, but as a proof of concept, we created this code snippet which creates a Virtual Asset Service Provider (VASP) account:

//#REPLACE(SIGNATURE(tc_account=TREASURY_COMPLIANCE_SIGNATURE)
// The macro disables requirements of tc_account signature (Treasury Compliance Account).public(script) fun create_parent_vasp_account<CoinType: store>(
       tc_account: signer,
       new_account_address: address,
       auth_key_prefix: vector<u8>,
       human_name: vector<u8>,
       add_all_currencies: bool
   ) {
       DiemAccount::create_parent_vasp_account<CoinType>(
&tc_account,
           new_account_address,
           auth_key_prefix,
           human_name,
           add_all_currencies
       );
   }

Looking ahead at future releases:

  1. Update our testnet with the latest Move VM and staking
  2. Update to documentation following the standard Library and Move syntax changes from the Diem Association
  3. Update our testnet user interface in the Polkadot JS app
  4. Minimum Viable Product (MVP) implementation of macros for maintaining Diem compatibility to test our hypotheses.
  5. We will soon complete research for the Pontem ↔ Diem bridge and be able to write basic token transfer / federation smart contracts. Currently given the uncertainty with the Diem business roadmap, we are not 100% certain that these smart contracts will be allowed to be deployed on the Diem Blockchain to enable this bridge, but we will nonetheless be prepared to deploy to be first to market with a working bridge.

Conclusion

In conclusion, the Pontem Network core protocol and developer tooling updates we have been working on will be the backbone of the Pontem vision. The new Move language and the tech we are building is at the forefront of blockchain innovation and we are happy to be contributing our expertise to this open source ecosystem. Our commitment to continue building the novel Substrate framework is also testament to our shared vision of a multi-chain future with Parity and Polkadot, and we will continue to share more updates on this shared vision very soon 😉. Finally we are also committing to full transparency in our technical and business challenges and how we are aiming to solve them in this shared journey with you. We do this to invite you all to get involved in our shared success, because we can’t do this alone and we believe that by staying true to the core values of trust and transparency of blockchain we will go far beyond the moon.

Our vision to become the Experimentation platform for facebook-backed Diem can only be realized with your help and support. Please spin up a node on our testnet and give our products a try. Talk to us on Telegram, Discord, or anywhere else you can find us on the Metaverse. We welcome all questions, positive feedback and constructive inputs in our journey to become the metaverse bridge from permissionless crypto to the new permissioned ecosystem that Facebook is seeding in partnership with other Diem Association members including Uber, Shopify, Kiva, and Andreesen Horowitz among others.