April updates for Substrate and Polkadot devs ⚪️

Welcome to the April edition of the Substrate developer newsletter - the best place to discover the latest news from the Substrate and Polkadot community. We cover everything, from upcoming events and newly released learning material to technical updates for developers building with Substrate and FRAME.

Don’t forget, the newsletter is open to community contributions, so if there’s any news you’d like to see featured, don’t hesitate: make a PR to the next edition here.

:star:TL;DR and important announcements

  • Data collected by SubWallet & Dotinsights showed that Polkadot nomination pools surpassed 3M DOT in total stake with 8K+ pool members.
  • The Web3 Foundation Grants Program achieved its 500 project milestone by the end of Q1 2023.
  • For a panoramic view of growth trends within the Polkadot ecosystem, check out Polkadot Deep Dive Report Q1 2023.
  • Get your ink! Projects funded with ink!ubator which just launched this month.

:calendar: Upcoming events

:flashlight: Community highlights

  • Co-organized by Parity & SubWallet as part of the DOTinVietnam event series with the participation of Moonbeam, Litentry, ArtZero, Gafi Network, MoonFit, StellaSwap, InvArch & Polkadot Insider - Beyond The Chain Vietnam 2023 has concluded successfully with 100+ builders & developers attending to learn Polkadot & Substrate. Check out the highlight thread & highlight video.

ink!ubator launched this month!

  • ink!ubator is an initiative funded by the Polkadot Treasury’s Bounty Program. It is designed to kickstart the ink! ecosystem in the areas of developer growth, security audits, infrastructure, and high profile product launches. It offers grants, technical support from core developers, contract security audits, and much more. You can apply to ink!ubator here and follow updates on Twitter.


:mortar_board: Learning

  • Watch the last Substrate Seminar: Tuxedo: a UTXO alternative to FRAME
  • Watch the latest Polkadot Deep Dives. This past month there’ve been deep dives about the Identity and Nicks pallets, FRAME Benchmarking, the Atomic Swap and Gilt pallets.
  • Learn how to use ChatGPT to write and debug Smart Contracts on Moonbeam in this video.
  • Learn about public credentials and AssetDIDs for NFTs on Kilt video link
  • RMRK’s two EIPs have officially become ERC-5773 and ERC-6059, bringing standards to next generation NFTs in Web3. What is the new ERC-5773? Read this thread by the RMRK team who developed it.

:coffee: Technical updates

In this edition, we’re experimenting with a new way to provide a digest of the latest updates to Substrate. If you have any feedback, please let us know by opening an issue – we welcome your input.

Here are note-worthy runtime PRs in the Substrate repo merged between 2023-04-01 and 2023-04-30.

#13851 Fix fungible and fungibles set_balance return value

This PR fixes a bug in the calculation of the return value of the fungible and fungibles set_balance default implementation.

#13835 RemovePallet migration utility struct

This PR adds a migration utility struct that allows easily removing pallet storage on the next runtime upgrade, useful for things like removing Gov V1 pallet storage after the switch to OpenGov.

#13798 Uniform pallet warnings

This PR introduces proc-macro-warning to emit a warning when using a hard-coded weight on a non-dev-mode pallet (Insert claim_commission weight by rossbulat · Pull Request #13774 · paritytech/substrate · GitHub).
In cases where dev mode is not possible and you explicitly want to ignore this warning; wrap it in curly brackets like {1}.

#13779 Add Freeze/Thaw events and tests

This PR adds a Freeze and Thaw event to the Balances pallet. Each respective event is emitted whenever some balance is frozen or thawed.

#13724 Contracts: add sr25519_verify

This PR adds the ability to do sr25519 (schnorrkel) signature verification as part of the Contract pallet’s core API.

#13722 Implement #[pallet::composite_enum]

This PR adds a couple of new pallet parts: FreezeReason, HoldReason, LockId and SlashReason. The corresponding aggregate enums RuntimeFreezeReason, RuntimeHoldReason, RuntimeLockId and RuntimeSlashReason are also generated by construct_runtime. This is primarily used in pallets that wish to provide a reason for freezing funds, holding funds, locking funds and/or slashing funds in them. #[pallet::composite_enum] is also added as an attribute to put on top of an enum declared in a pallet module.

#13699 Deprecate V1 Weights

This PR is part of the first round of cleanups to get completely rid of 1D weights.

#13610 Refactor: inconsistent BalanceConversion fn

Fixes an inconsistent function naming for BalanceConversion trait: The fn to_asset_balance does not align with generics InBalance and OutBalance as to_asset_balance implies OutBalance to never be the native one.

#13302 Metadata V15: Add Runtime API metadata

This PR collects the runtime API information for the metadata V15 and exposes the metadata under metadata_at_version(u32::MAX).

Here are note-worthy node PRs in the Substrate repo merged between 2023-04-01 and 2023-04-30.

#13925 sc-allocator: Do not panic on invalid header pointer

We should not panic on an invalid header pointer and instead return an error. It is possible that the application modifies the header pointer illegally, but then we should return an error instead of panicking.

#13824 Make blocks per request configurable

Resolves Lost peers due to state-cache · Issue #10130 · paritytech/substrate · GitHub

#13799 Remove deprecated batch verification

This removes the deprecated batch verification. This was actually never really activated. Nevertheless, we need to keep the host functions around to support old runtimes which may import these host functions. However, we do not give access to these functions anymore. This means that any new runtime can not call them anymore. The host function implementations we keep will not do batch verification and will instead fall back to the always existing option of directly verifying the passed signature. finish_batch_verification will return the combined result of all the batch verify calls.

#13794 Fix try-runtime follow-chain, try-runtime upgrade tuple tests, cli test utils

This PR fixes a bug with follow-chain and refactors existing node CLI test utility functions so that they may be used by other packages.

#13769 ProofRecorder: Implement transactional support

This implements transactional support for ProofRecorder. A transaction can be started with start_transaction and then later committed or rolled back. This is important for block producers to not include data from transactions that didn’t make it to the block, because they e.g. panicked or similar.

#13740 Refactor(sc-executor): use wasm executor builder instead of old apis

This PR adds the builder style apis to create runtime executor and deprecates the old new api for executor.

:eyes: Releases

Go to Polkadiff for a full list of merged PRs into Substrate and Polkadot since the last Polkadot release and be sure to read the last Polkadot Release Analysis reports on the Polkadot forum. In this section, we go over updates to various core tools developed by Parity for the ecosystem.

Subxt (v0.28.0) :mailbox:

A Rust library to submit extrinsics (transactions) to a Substrate node via RPC.

This release contains significant changes including: unifying the encoding and decoding of static and dynamic types, new CLI functionality and improvements to DispatchError.

Sidecar (v15.0.0) :red_car:

Sidecar is a REST service that makes it easy to interact with blockchain nodes built using Substrate’s FRAME framework.

Notable changes include fixes for updates to Polkadot-JS and a bug fix related to /blocks/head.

Cargo Contract (v2.2.0) :building_construction:

Cargo Contract is a the setup and deployment tool for developing Wasm based smart contracts via ink!

Notable updates include adding the new info command which exports the build output in JSON format.

ink! (v4.2.0) :squid:

Parity’s ink! to write smart contracts.

New features include the ability to make calls to pallets in E2E testing and adding a default attribute to constructors and messages.

:newspaper: Substrate jobs

Have a look at all the open roles in the ecosystem on the Substrate Job Board.

Got ideas for content you’d like to see in future newsletters? Make a PR to the next edition here – we’d love to include them. :heart:

Previous editions of this newsletter are available in the public archive rendered on this web page as well as on Polkaverse. Join us there to comment, emote or provide feedback on our newsletters – all using a decentralised social media space built with Substrate and IPFS.