• Squirrel's avatar
    Asset Conversion pallet (#12984) · ef1e4e8b
    Squirrel authored
    
    
    * Add pallet dex
    
    * Fmt
    
    * Add RPC endpoint
    
    * Fix RPC
    
    * Fix the build
    
    * Some more fixes
    
    * Add a method to topup pallet's account
    
    * Add support for multi-currency into Uniques
    
    * Fix the build
    
    * Add [transactional] + setup() + fix balances
    
    * Improve tests
    
    * Fix price quotation
    
    * Code clean up
    
    * Validate swaps
    
    * Fmt
    
    * Update README
    
    * add test
    
    * mint LP assets in a different instance
    
    * remove transactional as now the default
    
    AssetsLocal renamed to Assets
    
    * merge master
    
    * Revert "Merge master"
    
    * fix tests post merge.
    
    * attempt to set create origin
    
    * Internally allocate lp asset id.
    
    * Simplify
    
    * Bump to be in line
    
    * additional bumps to make compile
    
    * fix compile
    
    * less bounds
    
    * use fungible crates
    
    * multiasset enum
    
    * only allow native currency pairs
    
    * added slippage tests
    
    * transfer into separate method
    
    (Also fee not set in 2 places now.)
    
    Added test where lp and user are different users.
    
    * Add benchmarks + weights
    
    * Typos
    
    * Clean up
    
    * More tests,
    
    split error into two because it wasn't clear which parameter.
    
    renamed liquidity to lp_tokens_minted or lp_tokens_burned in events.
    
    * tighten up naming
    
    * Default, zero, square root traits not needed
    
    Also let's not force people to be compact
    
    * add keep-alive param
    
    * add insufficient liquidity test
    
    * Fix quote() to support u64
    
    * Avoid recording balances twice
    
    * cargo fmt
    
    * Didn't mean to change error type
    
    * temp
    
    * Less
    
    * Rework get_amount_in/get_amount_out
    
    * Convert other places
    
    * Rework the last piece
    
    * Typo
    
    * Fix benchmarks
    
    * use hash trait
    
    * Extract a native asset check into the runtime setting
    
    * Don't set the metadata
    
    * Remove spec file
    
    * Enable multi-assets swaps by default
    
    * Refactor conversion into u128
    
    * Add path param to swap_token_for_exact_tokens
    
    * Fix typo + a bit of refactoring
    
    * Implement path param for swap_exact_tokens_for_tokens()
    
    * Deref
    
    * Minor fixes
    
    * Add test with sensible scale values
    
    * Use .windows()
    
    * Fix benchmarks
    
    * update docs
    
    * Fix everything :)
    
    * Chore
    
    * Revert
    
    * Chore
    
    * prev way of creating sub accounts lead to collisions
    
    * Update frame/dex/src/lib.rs
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    
    * Update frame/dex/src/lib.rs
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    
    * Chore
    
    * Fmt fix on Uniques
    
    * add call_index
    
    bring code up to date with latest master
    
    * revert readme changes
    
    * add cr
    
    * revert uniques changes
    
    * reducing noise
    
    * no need for deadline (#12990)
    
    (there's generic transaction deadline functionality already)
    
    * fix kitchen sink (#12991)
    
    * fix kitchen sink
    
    * Only the dex can mint lp_tokens
    
    * add BenchmarkHelper for second instance (#12998)
    
    * update mock to latest master
    
    * less indirections (#13012)
    
    * remove dex PR's custom RPC (#13050)
    
    * As we have state_call we don't need a custom RPC
    
    * fix docs
    
    * no longer a need to upgrade rpc version (#13053)
    
    * add CallbackHadle
    
    * quote bugfix (#13191)
    
    quote was giving same price in both directions as we were inverting needlessly.
    
    * merging in dex specific changes due to pay by dex
    
    * update lock file
    
    * merging in kitchen sink changes
    
    * Add get_reserves() api method
    
    * Partial updating of the benchmarks
    
    * Fix tests
    
    * clippy
    
    * Temp fix weights
    
    * Fix benchmarks
    
    * Add pool setup fee
    
    * Money upfront
    
    * Address some comments
    
    * Use u128 in mock
    
    * Fix benchmarks
    
    * Change error message
    
    * Update comments
    
    * Change error names
    
    * Implement PartialOrd for NativeOrAssetId
    
    * add note
    
    * Update errors
    
    * More tests for assets sorting
    
    * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_dex
    
    * Change the way we generate pool accounts
    
    * Improve the liquidity removal method
    
    * Extract MintMinLiquidity to config, rework all tests
    
    * Add comments
    
    * Validate provided amount
    
    * Rename to asset-conversion
    
    * Validate ED
    
    * Improve handling the ED related errors
    
    * typos
    
    * Try to fix benchmarks
    
    * Another try
    
    * Another day, another try
    
    * Fix benchmarks
    
    * Expose fee related params
    
    * Validate token's minimal amount the same way as ED
    
    * fix typo
    
    * Use longer path for swaps in benchmarks
    
    * need to ref sp_std's vec.
    
    * Remove From<u32> requirement when benchmarking
    
    * impl BenchmarkHelper for ()
    
    * only for runtime benchmarks
    
    * MultiLocation: !MaybeDisplay
    
    Looks like we might not need this bound from initial testing.
    
    * Update frame/asset-conversion/src/lib.rs
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    
    * Update frame/asset-conversion/src/lib.rs
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    
    * Add documentation links
    
    * add collision test
    
    * Revert "[Enhancement] Throw an error when there are too many pallets (#13763)"
    
    This reverts commit cc3152bc
    
    .
    
    * [Enhancement] Throw an error when there are too many pallets (#13763)
    
    * [Enhancement] Throw an error when there are too many pallets
    
    * fix ui test
    
    * fix PR comments
    
    * Update frame/support/procedural/src/construct_runtime/mod.rs
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * Update frame/support/procedural/src/construct_runtime/mod.rs
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * ".git/.scripts/commands/fmt/fmt.sh"
    
    ---------
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    Co-authored-by: command-bot <>
    
    * add benchmark helper
    
    + doc fix
    
    * cargo fmt
    
    * Fix adding liquidity to non-empty pool
    
    * Fix compilation error
    
    * Fix params ordering issue
    
    * additional docs
    
    * The swap path elements should be unique
    
    * Fix account collision
    
    * Validate all the pool in a swap path are unique
    
    * Change the way we add liquidity to empty pools
    
    * Improve docs
    
    * remove unnessisary Display impl
    
    * cargo fmt
    
    * remove unused imports
    
    * Make api consistent
    
    * Chore
    
    * Touch the pool account so it could hold the pair tokens
    
    * Check the balance before touching the pool's account
    
    * Introduce liquidity provision fee
    
    * Touch the pool acc one more time
    
    * Apply suggestions from code review
    
    Co-authored-by: default avatarSam Johnson <[email protected]>
    
    * Update frame/asset-conversion/README.md
    
    Co-authored-by: default avatarSam Johnson <[email protected]>
    
    * Use ContainsPair instead of the balance checker
    
    * Remove old Currency trait
    
    * Add liquidity withdrawal fee
    
    * Update docs
    
    * Use 0 withdrawal fee in mock
    
    * Rename vars
    
    * asset id not clone
    
    * fix: shadow var was being used
    
    * correct tests
    
    * fix benches
    
    * merge master
    
    * neater
    
    ---------
    
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    Co-authored-by: default avatarJegor Sidorenko <[email protected]>
    Co-authored-by: parity-processbot <>
    Co-authored-by: default avatarRoman Useinov <[email protected]>
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    Co-authored-by: default avatarSam Johnson <[email protected]>
    ef1e4e8b