• Keith Yeung's avatar
    Ensure MultiLocation always has a canonical representation (#3404) · 0f5e37ce
    Keith Yeung authored
    
    
    * MultiAsset TWO
    
    * Ensure MultiLocation always has a canonical representation
    
    * Remove v1 module
    
    * Draft next MultiAsset API.
    
    * Implement custom encoding/decoding scheme for MultiLocation
    
    * Properly implement IntoIterator for Junctions
    
    * Implement TryFrom<MultiLocation> for Junctions
    
    * Fix spelling mistakes
    
    * Fix tests in xcm-executor
    
    * XCM core builds
    
    * XCM Executor builds
    
    * XCM Builder builds
    
    * Fix xcm-builder tests and compilation
    
    * Make pallet-xcm compile
    
    * Use MultiLocation::default()
    
    * Make polkadot-runtime-common compile
    
    * Make rococo-runtime compile
    
    * Change return type of parent_count to u8
    
    * Change MAX_MULTILOCATION_LENGTH to 255
    
    * Make kusama-runtime compile
    
    * Fix logic in pallet-xcm
    
    * Use MultiLocation::empty()
    
    * Fix logic in location_conversion
    
    * Fix logic in origin_conversion.rs
    
    * Make westend-runtime compile
    
    * Rename prefixes and suffixes variables
    
    * Rename non_parent to interior
    
    * Rename non_parent to interior
    
    * Add test for encode/decode roundtrip and fix decode algorithm
    
    * API changes making their way throughout
    
    * Some TODOs
    
    * Further build fixes
    
    * Rename non_parent/junctions to interior
    
    * Basic compile builds
    
    * First test fixed
    
    * All executor tests fixed
    
    * Typo
    
    * Optimize subsume_assets and add test
    
    * Optimize checked_sub
    
    * XCM Builder first test fixed
    
    * Fix builder tests
    
    * Fix doc test
    
    * Make xcm-simulator compile
    
    * Make xcm-simulator-example compile
    
    * Make spellcheck happy
    
    * cargo fmt
    
    * fix some doc tests
    
    * spelling
    
    * named fields for AllOf
    
    * Fix subtle bug where Null is treated as an identifier
    
    * Add FIXME comment awaiting for const generics eval stabilization
    
    * Update xcm/src/v0/multiasset.rs
    Co-authored-by: default avatarAlexander Popiak <alexander.popiak@parity.io>
    
    * Update xcm/src/v0/multiasset.rs
    Co-authored-by: default avatarAlexander Popiak <alexander.popiak@parity.io>
    
    * Update xcm/src/v0/multiasset.rs
    Co-authored-by: default avatarAlexander Popiak <alexander.popiak@parity.io>
    
    * Update xcm/src/v0/multiasset.rs
    Co-authored-by: default avatarAlexander Popiak <alexander.popiak@parity.io>
    
    * Reformat
    
    * Move to XCM version 1
    
    * Spelling
    
    * warnings
    
    * Replace some more v0->v1s
    
    * warnings
    
    * format
    
    * Add max_assets param
    
    * building
    
    * test fixes
    
    * tests
    
    * another test
    
    * final test
    
    * Update rustdocs and add debug_assert where sensible
    
    * Revert debug_assert in const fn len()
    
    * tests
    
    * Rename Null -> Here
    
    * Introduce
    
    * More ergonomics
    
    * More ergonomics
    
    * test fix
    
    * test fixes
    
    * docs
    
    * BuyExecution includes
    
    * Fix XCM extrinsics
    
    * fmt
    
    * Make Vec<MultiAsset>/MultiAssets conversions safe
    
    * More MultiAssets conversion safety
    
    * spelling
    
    * fix doc test
    
    * Apply suggestions from code review
    Co-authored-by: default avatarAmar Singh <asinghchrony@protonmail.com>
    
    * Apply suggestions from code review
    Co-authored-by: default avatarAmar Singh <asinghchrony@protonmail.com>
    
    * fmt
    
    * Add v0, remove VersionedMultiAsset
    
    * Remove VersionedMultiLocation
    
    * Update xcm/src/v1/order.rs
    Co-authored-by: default avatarAmar Singh <asinghchrony@protonmail.com>
    
    * Update xcm/src/v1/mod.rs
    Co-authored-by: default avatarAmar Singh <asinghchrony@protonmail.com>
    
    * XCM v0 backwards compatibility
    
    * Full compatibility
    
    * fmt
    
    * Update xcm/pallet-xcm/src/lib.rs
    
    * Update xcm/src/v0/order.rs
    Co-authored-by: Shawn Tabrizi's avatarShawn Tabrizi <shawntabrizi@gmail.com>
    
    * Tweaks to versioning system
    
    * Fixes
    
    * fmt
    
    * Fix pallet-xcm tests
    
    * fix
    
    * Substitute with_parent with with_parents_const
    
    * Rename argument name from a to m
    
    * Rename split_last to split_last_interior
    
    * Allow adding multiple parents in MultiLocation
    
    * Rename pop_parent to dec_parent
    
    * Ensure relay chain XCM sender receives a MultiLocation without any parents
    
    * Block only when MultiLocation destination length is 8
    
    * Cargo fmt
    
    * Remove reverse iterators, implement DoubleEndedIterator and add tests
    
    * Fix iter_rev lifetime requirements
    
    * Cargo fmt
    
    * Add an into() method for Junctions for conciseness in const context
    
    * Ensure parent count is 0 while executing who in RelayedFrom
    
    * Appease spellchecker
    
    * Use and_then instead of repeated map_err
    
    * Remove custom codec indices for v1 Junctions
    
    * Add convenience 'contains_parents_only' method to MultiLocation
    
    * Fix merge conflict
    
    * Use more convenience methods
    
    * Remove with_parachain_interior
    
    * Prefer matching against tuple instead of using match guards
    
    * Match against tuple instead of using more match guards
    
    * Update encode/decode test for MultiLocation
    
    * Minor tweaks
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Fix MultiLocation
    
    * Add deprecation note for iter_rev and into_iter_rev
    
    * Update some rustdocs
    
    * cargo fmt
    
    * Fix xcm-executor unit tests
    
    * Fix compilation and unit tests in xcm-builder
    
    * cargo fmt
    
    * Fix tests in xcm-simulator-example
    
    * Publicize MultiLocation fields
    
    * Match on the MultiLocation struct directly in xcm-builder
    
    * Do not dereference undereferenceable types
    
    * Add convenience MultiLocation conversions for tuples
    
    * Use clearer import paths
    
    * Remove unused dependency
    
    * fix junction + response
    
    * Import from latest opaque xcm module
    
    * Update xcm/src/v1/mod.rs
    
    * better comment
    
    * Fix ownership transfer
    
    * Fix merge
    
    * Fix merge
    
    * cargo fmt
    
    * Fix merge
    
    * Fix merge
    
    * Fix integration test
    
    * More readable Parent syntax
    
    * cleanup
    
    * cleanup
    
    * cleanup
    
    * cleanup
    
    * cleanup
    
    * cleanup
    
    * cleanup
    
    * cleanup
    
    * cargo fmt
    
    * Fixes
    
    * Fix doc test
    Co-authored-by: default avatarGav Wood <gavin@parity.io>
    Co-authored-by: default avatarAlexander Popiak <alexander.popiak@parity.io>
    Co-authored-by: default avatarAmar Singh <asinghchrony@protonmail.com>
    Co-authored-by: Shawn Tabrizi's avatarShawn Tabrizi <shawntabrizi@gmail.com>
    0f5e37ce