24 releases (major breaking)

21.0.0 Jan 13, 2025
20.0.0 Sep 26, 2024
19.0.0 Jul 18, 2024
18.0.0 Jul 12, 2024
0.0.0 Mar 31, 2023

#22 in #swap

Download history 26743/week @ 2024-11-16 28370/week @ 2024-11-23 21864/week @ 2024-11-30 30826/week @ 2024-12-07 23568/week @ 2024-12-14 7241/week @ 2024-12-21 12144/week @ 2024-12-28 22183/week @ 2025-01-04 33896/week @ 2025-01-11 30405/week @ 2025-01-18 27643/week @ 2025-01-25 31149/week @ 2025-02-01 32973/week @ 2025-02-08 36029/week @ 2025-02-15 12871/week @ 2025-02-22 3888/week @ 2025-03-01

92,103 downloads per month
Used in 94 crates (10 directly)

Apache-2.0

3.5MB
56K SLoC

asset-conversion

A swap pallet

This pallet allows assets to be converted from one type to another by means of a constant product formula. The pallet based is based on Uniswap V2 logic.

Overview

This pallet allows you to:

  • create a liquidity pool for 2 assets
  • provide the liquidity and receive back an LP token
  • exchange the LP token back to assets
  • swap 2 assets if there is a pool created
  • query for an exchange price via a new runtime call endpoint
  • query the size of a liquidity pool.

Please see the rust module documentation for full details:

cargo doc -p pallet-asset-conversion --open

License

License: Apache-2.0

Release

Polkadot SDK Stable 2412


lib.rs:

Substrate Asset Conversion pallet

Substrate Asset Conversion pallet based on the Uniswap V2 logic.

Overview

This pallet allows you to:

The quote_price_exact_tokens_for_tokens and quote_price_tokens_for_exact_tokens functions both take a path parameter of the route to take. If you want to swap from native asset to non-native asset 1, you would pass in a path of [DOT, 1] or [1, DOT]. If you want to swap from non-native asset 1 to non-native asset 2, you would pass in a path of [1, DOT, 2].

(For an example of configuring this pallet to use Location as an asset id, see the cumulus repo).

Here is an example state_call that asks for a quote of a pool of native versus asset 1:

curl -sS -H "Content-Type: application/json" -d \
'{"id":1, "jsonrpc":"2.0", "method": "state_call", "params": ["AssetConversionApi_quote_price_tokens_for_exact_tokens", "0x0101000000000000000000000011000000000000000000"]}' \
http://localhost:9933/

(This can be run against the kitchen sync node in the node folder of this repo.)

Dependencies

~19–34MB
~574K SLoC