Skip to main content

Chain Extensions

Chain extension is a way to extend contracts API to add contracts to runtime pallet interaction. By default, contracts can only do cross-contract calls within their environment (pallet-contracts). Chain extension allows to add custom callable pallet functions.


What chain extensions are available ?


This chain extension enables usage of XVM in your contracts. More info in the ink! XVM SDK repo.


This chain extension adds call to pallet_assets so that you can use Assets in your contracts. More info in the chain-extensions contracts repo.

Account Unification

This chain extension adds query to pallet_unified_accounts so that you can query Unified addresses. Find usage and tests in ink! XVM SDK repo

Availability in networks

Chain extensionShibuyaShidenAstar
Account Unification


There are two implementations: one in the runtime and one on the ink! side.


Implementation of the chain extension on runtime side is available on Astar repository, under chain-extensions folder

ink! implementation

On contract side the implementation is made using ChainExtensionMethod that uses a custom environment (so it can be used with other libraries that use custom environment like OpenBrush). It is implemented as a crate that you can import in you contract. It can be found in chain-extension contracts repository

Contracts examples

Video tutorials

  • dApp Staking Chain Extension on ink! Smart Contracts by @AstarNetwork on Youtube
  • Build a Scheduler Chain Extension by @Parity on Youtube