• Gavin Wood's avatar
    XCM v3 (#4097) · 1a1bfd2a
    Gavin Wood authored
    
    
    * cargo fmt
    
    * Create benchmarks for XCM instructions introduced in v3 (#4564)
    
    * Create benchmarks for BurnAsset and ExpectAsset
    
    * Add benchmarks for ExpectOrigin and ExpectError
    
    * Add benchmarks for QueryPallet and ExpectPallet
    
    * Add benchmarks for ReportTransactStatus and ClearTransactStatus
    
    * cargo fmt
    
    * Use AllPalletsWithSystem in mocks
    
    * Update XCM generic benchmarks for westend
    
    * Remove default impls for some XCM weight functions
    
    * Fix compilation error
    
    * Add weight_args helper attribute
    
    * Remove manually written XcmWeightInfo
    
    * Parse trailing comma
    
    * Revert "Add weight_args helper attribute"
    
    This reverts commit 3b7c47a6182e1b9227036c38b406d494c3fcf6fd.
    
    * Fixes
    
    * Fixes
    
    * XCM v3: Introduce querier field into `QueryReponse` (#4732)
    
    * Introduce querier field into QueryReponse
    
    * Convert &Option<MultiLocation> to Option<&MultiLocation>
    
    &Option<T> is almost always never quite useful, most of the time it
    still gets converted to an Option<&T> via `as_ref`, so we should simply
    make functions that accept Option<&T> instead.
    
    * Fix tests
    
    * cargo fmt
    
    * Fix benchmarks
    
    * Appease spellchecker
    
    * Fix test
    
    * Fix tests
    
    * Fix test
    
    * Fix mock
    
    * Fixes
    
    * Fix tests
    
    * Add test for response queriers
    
    * Update xcm/pallet-xcm/src/lib.rs
    
    * Test for non-existence of querier
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * Fixes
    
    * Fixes
    
    * Add `starts_with` function to `MultiLocation` and `Junctions` (#4835)
    
    * add matches_prefix function to MultiLocation and Junctions
    
    * rename matches_prefix to starts_with
    
    * remove unnecessary main in doc comment
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * Make use of starts_with in match_and_split
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * XCM v3: Bridge infrastructure (#4681)
    
    * XCM bridge infrastructure
    
    * Missing bit of cherry-pick
    
    * Revamped XCM proc macros; new NetworkIds
    
    * Fixes
    
    * Formatting
    
    * ExportMessage instruction and config type
    
    * Add MessageExporter definitions
    
    * Formatting
    
    * Missing files
    
    * Fixes
    
    * Initial bridging config API
    
    * Allow for two-stage XCM execution
    
    * Update xcm/src/v3/mod.rs
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * XCM crate building again
    
    * Initial bridging primitive
    
    * Docs
    
    * Docs
    
    * More work
    
    * More work
    
    * Merge branch 'gav-xcm-v3' into gav-xcm-v3-bridging
    
    * Make build
    
    * WithComputedOrigin and SovereignPaidRemoteExporter
    
    * Remove TODOs
    
    * Slim bridge API and tests.
    
    * Fixes
    
    * More work
    
    * First bridge test passing
    
    * Formatting
    
    * Another test
    
    * Next round of bridging tests
    
    * Repot tests
    
    * Cleanups
    
    * Paid bridging
    
    * Formatting
    
    * Tests
    
    * Spelling
    
    * Formatting
    
    * Fees and refactoring
    
    * Fixes
    
    * Formatting
    
    * Refactor SendXcm to become two-phase
    
    * Fix tests
    
    * Refactoring of SendXcm and ExportXcm complete
    
    * Formatting
    
    * Rename CannotReachDestination -> NotApplicable
    
    * Remove XCM v0
    
    * Minor grumbles
    
    * Formatting
    
    * Formatting
    
    * Fixes
    
    * Fixes
    
    * Cleanup XCM config
    
    * Fee handling
    
    * Fixes
    
    * Formatting
    
    * Fixes
    
    * Bump
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * Bump Substrate
    
    * XCM v3: `ExchangeAsset` and Remote-locking (#4945)
    
    * Asset Exchange and Locks
    
    * Make sure XCM typers impl MaxEncodedLen
    
    * Basic implementation for locks
    
    * Bump Substrate
    
    * Missing files
    
    * Use new API
    
    * Introduce  instruction
    
    * Big refactor
    
    * Docs
    
    * Remove deprecated struct
    
    * Remove deprecated struct
    
    * Repot XCM builder tests
    
    * ExchangeAsset test
    
    * Exchange tests
    
    * Locking tests
    
    * Locking tests
    
    * Fixes and tests
    
    * Fixes
    
    * Formatting
    
    * Spelling
    
    * Add simulator test for remote locking
    
    * Fix tests
    
    * Bump
    
    * XCM v3: Support for non-fungibles (#4950)
    
    * NFT support and a test
    
    * New files.
    
    * Integration tests for sending NFTs
    
    * Formatting
    
    * Broken Cargo features
    
    * Use 2021 edition
    
    * Fixes
    
    * Formatting
    
    * Formatting
    
    * Update xcm/xcm-builder/src/asset_conversion.rs
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * Update xcm/xcm-builder/src/nonfungibles_adapter.rs
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * Update xcm/xcm-executor/src/lib.rs
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Formatting
    
    * Fixes
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * XCM v3: Context & ID hash (#4756)
    
    * send_xcm returns message hash
    
    * cargo fmt
    
    * Create topic register and instructions
    
    * Fix weights
    
    * Use tabs
    
    * Sketch out XcmContext
    
    * Fix doc test
    
    * Add the XCM context as a parameter to executor trait fns
    
    * Fixes
    
    * Add XcmContext parameter
    
    * Revert adding context as an arg to SendXcm trait methods
    
    * Revert adding context argument to ConvertOrigin trait methods
    
    * cargo fmt
    
    * Do not change the API of XcmExecutor::execute
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Remove convenience method
    
    * Fixes
    
    * Fixes
    
    * cargo fmt
    
    * Fixes
    
    * Add benchmarks for XCM topic instructions
    
    * cargo run --quiet --profile=production  --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_xcm_benchmarks::generic --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --template=./xcm/pallet-xcm-benchmarks/template.hbs --output=./runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
    
    * Remove context argument on FilterAssetLocation
    
    * Fixes
    
    * Remove unused import
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Accept XCM hash parameter in ExecuteXcm trait methods
    
    * cargo fmt
    
    * Properly enable sp-io/std
    
    * Fixes
    
    * default-features = false
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Make XcmContext optional in withdraw_asset
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Modify tests to check for the correct XCM hash
    
    * Small refactor
    
    * cargo fmt
    
    * Check for expected hash in xcm-builder unit tests
    
    * Add doc comment for the optionality of the XCM context in withdraw_asset
    
    * Update xcm/src/v3/traits.rs
    
    * Update xcm/src/v3/traits.rs
    
    * Store XcmContext and avoid rebuilding
    
    * Use ref for XcmContext
    
    * Formatting
    
    * Fix incorrect hash CC @KiChjang
    
    
    
    * Refactor and make clear fake hashes
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Fix broken hashing
    
    * Docs
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Formatting
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Remove unknowable hash
    
    * Formatting
    
    * Use message hash for greater identifiability
    
    * Formatting
    
    * Fixes
    
    * Formatting
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    Co-authored-by: default avatarParity Bot <[email protected]>
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Formatting
    
    * Fixes
    
    * Formatting
    
    * Fixes
    
    * Fixes
    
    * Formatting
    
    * Formatting
    
    * Remove horrible names
    
    * Bump
    
    * Remove InvertLocation trait (#5092)
    
    * Remove InvertLocation trait
    
    * Remove unneeded functions
    
    * Formatting
    
    * Fixes
    
    * Remove XCMv1 (#5094)
    
    * Remove XCMv1
    
    * Remove XCMv1
    
    * Formatting
    
    * Fixes
    
    * Fixes
    
    * Formatting
    
    * derive serialize/deserialize for xcm primitives (#5036)
    
    * derive serialize/deserialize for xcm primitives
    
    * derive serialize/deserialize for xcm primitives
    
    * update v3
    
    * update v2
    
    Co-authored-by: default avatarGav Wood <[email protected]>
    
    * Update lock
    
    * Fixes
    
    * Add benchmarks for the ExchangeAsset instruction
    
    * `AliasOrigin` instruction stub (#5122)
    
    * AliasOrigin instruction stub
    
    * Fixes
    
    * Fixes
    
    * Update substrate
    
    * Fixes
    
    * Ensure same array length before using copy_from_slice
    
    * Fixes
    
    * Add benchmarks for the UniversalOrigin instruction
    
    * Remove unused import
    
    * Remove unused import
    
    * Add benchmarks for SetFeesMode instruction
    
    * Add benchmarks for asset (un)locking instructions
    
    * Leave AliasOrigin unbenchmarked
    
    * Fixes after merge
    
    * cargo fmt
    
    * Fixes
    
    * Fixes
    
    * Set TrustedReserves to None on both Kusama and Westend
    
    * Remove extraneous reserve_asset_deposited benchmark
    
    * Fix universal_origin benchmark
    
    * cargo run --quiet --profile=production  --features=runtime-benchmarks -- benchmark pallet --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_xcm_benchmarks::generic --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --template=./xcm/pallet-xcm-benchmarks/template.hbs --output=./runtime/westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
    
    * Don't rely on skipped benchmark functions
    
    * Fixes
    
    * cargo run --quiet --profile=production  --features=runtime-benchmarks -- benchmark pallet --chain=kusama-dev --steps=50 --repeat=20 --pallet=pallet_xcm_benchmarks::generic --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --template=./xcm/pallet-xcm-benchmarks/template.hbs --output=./runtime/kusama/src/weights/xcm/pallet_xcm_benchmarks_generic.rs
    
    * Fix unused variables
    
    * Fixes
    
    * Spelling
    
    * Fixes
    
    * Fix codec index of VersionedXcm
    
    * Allows to customize how calls are dispatched from XCM (#5657)
    
    * CallDispatcher trait
    
    * fmt
    
    * unused import
    
    * fix test-runtime
    
    * remove JustDispatch type
    
    * fix typo in test-runtime
    
    * missing CallDispatcher
    
    * more missing CallDispatcher
    
    * Update comment `NoteAssetLocked` -> `NoteUnlockable`
    
    * Fixes
    
    * Fixes
    
    * Adjust MultiAssets weights based on new wild card variants
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Some late fixes for XCMv3 (#5237)
    
    * Maximise chances that trapped assets can be reclaimed
    
    * Do origin check as part of ExportMessage for security
    
    * Formatting
    
    * Fixes
    
    * Cleanup export XCM APIs
    
    * Formatting
    
    * Update xcm/src/v3/junctions.rs
    
    * UnpaidExecution instruction and associated barrier.
    
    * Tighten barriers (ClearOrigin/QueryResponse)
    
    * Allow only 1 ClearOrigin instruction in AllowTopLevelPaidExecutionFrom
    
    * Bi-directional teleport accounting
    
    * Revert other fix
    
    * Build fixes]
    
    * Tests build
    
    * Benchmark fixes
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * Update Substrate
    
    * Re-export `pub` stuff from universal_exports.rs + removed unecessary clone (#6145)
    
    * Re-export `pub` stuff from universal_exports.rs
    
    * Removed unnecessary clone
    
    * Use 2D weights in XCM v3 (#6134)
    
    * Depend upon sp-core instead of sp-runtime
    
    * Make sp-io a dev-dependency
    
    * Use 2D weights in XCM v3
    
    * cargo fmt
    
    * Add XCM pallet migration to runtimes
    
    * Use from_parts
    
    * cargo fmt
    
    * Fixes
    
    * cargo fmt
    
    * Remove XCMWeight import
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Use translate in migration
    
    * Increase max upward message size in tests
    
    * Fix doc test
    
    * Remove most uses of from_ref_time
    
    * cargo fmt
    
    * Fixes
    
    * Fixes
    
    * Add extrinsic benchmarking to XCM pallet
    
    * cargo fmt
    
    * Fixes
    
    * Use old syntax
    
    * cargo fmt
    
    * Fixes
    
    * Remove hardcoded weights
    
    * Add XCM pallet to benchmarks
    
    * Use successful origin
    
    * Fix weird type parameter compilation issue
    
    * Fixes
    
    * ".git/.scripts/bench-bot.sh" runtime westend-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime rococo-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime polkadot-dev pallet_xcm
    
    * Use benchmarked XCM pallet weights
    
    * Fixes
    
    * Fixes
    
    * Use override instead of skip
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * ".git/.scripts/bench-bot.sh" runtime polkadot-dev pallet_xcm
    
    * Fixes
    
    * ".git/.scripts/bench-bot.sh" runtime polkadot-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime westend-dev pallet_xcm
    
    Co-authored-by: command-bot <>
    
    * Replace Weight::MAX with 100b weight units
    
    * Add test to ensure all_gte in barriers is correct
    
    * Update xcm/src/v3/junction.rs
    
    Co-authored-by: default avatarasynchronous rob <[email protected]>
    
    * Add more weight tests
    
    * cargo fmt
    
    * Create thread_local in XCM executor to limit recursion depth (#6304)
    
    * Create thread_local in XCM executor to limit recursion depth
    
    * Add unit test for recursion limit
    
    * Fix statefulness in tests
    
    * Remove panic
    
    * Use defer and environmental macro
    
    * Fix the implementation
    
    * Use nicer interface
    
    * Change ThisNetwork to AnyNetwork
    
    * Move recursion check up to top level
    
    * cargo fmt
    
    * Update comment
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * Add upper limit on the number of overweight messages in the queue (#6298)
    
    * Add upper limit on the number of ovwerweight messages in the queue
    
    * Add newline
    
    * Introduce whitelist for Transact and limit UMP processing to 10 messages per block (#6280)
    
    * Add SafeCallFilter to XcmConfig
    
    * Limit UMP to receive 10 messages every block
    
    * Place 10 message limit on processing instead of receiving
    
    * Always increment the message_processed count whenever a message is processed
    
    * Add as_derivative to the Transact whitelist
    
    * cargo fmt
    
    * Fixes
    
    * Update xcm/xcm-builder/src/universal_exports.rs
    
    Co-authored-by: default avatarBranislav Kontur <[email protected]>
    
    * Fixes
    
    * Fixes
    
    * Remove topic register and instead use the topic field in XcmContext
    
    * Derive some common traits for DispatchBlobError
    
    * Fixes
    
    * cargo fmt
    
    * Fixes
    
    * Fixes
    
    * Fix comments
    
    * Fixes
    
    * Introduce WithOriginFilter and apply it as the CallDispatcher for runtimes
    
    * Fixes
    
    * Appease clippy and fixes
    
    * Fixes
    
    * Fix more clippy issues
    
    * Fixes
    
    * ".git/.scripts/bench-bot.sh" runtime polkadot-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime westend-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime westend-dev pallet_xcm
    
    * Add benchmark function for ExportMessage
    
    * Fix comment
    
    * Add upper limit to DownwardMessageQueues size
    
    * Add max size check for queue in can_queue_downward_message
    
    * Fixes
    
    * Make Transact runtime call configurable
    
    * Return Weight::MAX when there is no successful send XCM origin
    
    * Update substrate
    
    * Fixes
    
    * Fixes
    
    * Remove ExportMessage benchmark
    
    * Remove assertion on Transact instruction benchmark
    
    * Make reachable destination configurable in XCM pallet benchmarks
    
    * Fixes
    
    * Fixes
    
    * Remove cfg attribute in fuzzer
    
    * Fixes
    
    * Remove cfg attribute for XCM pallet in test runtime
    
    * Fixes
    
    * Use ReachableDest where possible
    
    * Fixes
    
    * Add benchmark for UnpaidExecution
    
    * Update substrate
    
    * Ensure benchmark functions pass filters
    
    * Add runtime-benchmarks feature to fuzzer
    
    * Ensure FixedRateOfFungible accounts for proof size weights
    
    * cargo fmt
    
    * Whitelist remark_with_event when runtime-benchmarks feature is enabled
    
    * Use remark_with_event for Transact benchmarks
    
    * Fix Cargo.lock
    
    * Allow up to 3 DescendOrigin instructions before UnpaidExecution
    
    * cargo fmt
    
    * Edit code comment
    
    * Check check_origin for unpaid execution privilege
    
    * Fixes
    
    * Small nits for xcm-v3 (#6408)
    
    * Add possibility to skip benchmark for export_message
    
    * ".git/.scripts/bench-bot.sh" xcm westend-dev pallet_xcm_benchmarks::generic
    
    * Revert
    
    * ".git/.scripts/bench-bot.sh" xcm westend-dev pallet_xcm_benchmarks::generic
    
    * Add HaulBlobError to `fn haul_blob`
    
    * ".git/.scripts/bench-bot.sh" xcm westend-dev pallet_xcm_benchmarks::generic
    
    Co-authored-by: command-bot <>
    
    * Revert changes to UnpaidExecution
    
    * Change AllowUnpaidExecutionFrom to be explicit
    
    * Fix log text
    
    * cargo fmt
    
    * Add benchmarks for XCM pallet version migration (#6448)
    
    * Add benchmarks for XCM pallet version migration
    
    * cargo fmt
    
    * Fixes
    
    * Fixes
    
    * Fixes
    
    * ".git/.scripts/bench-bot.sh" runtime westend-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime rococo-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime polkadot-dev pallet_xcm
    
    * Fix benchmarks
    
    * Fix benchmarks
    
    * ".git/.scripts/bench-bot.sh" runtime westend-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime kusama-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime rococo-dev pallet_xcm
    
    * ".git/.scripts/bench-bot.sh" runtime polkadot-dev pallet_xcm
    
    Co-authored-by: command-bot <>
    
    * Merge remote-tracking branch 'origin/master' into gav-xcm-v3
    
    * Fixes
    
    * Fix comments (#6470)
    
    * Specify Ethereum networks by their chain id (#6286)
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Use  for Kusama
    
    * Use WithComputedOrigin for Polkadot, Rococo and Westend
    
    * Update lock
    
    * Fix warning
    
    * Update xcm/pallet-xcm/src/tests.rs
    
    Co-authored-by: default avatarSquirrel <[email protected]>
    
    * Update runtime/parachains/src/ump/migration.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Update xcm/pallet-xcm/src/migration.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Fixes
    
    * cargo fmt
    
    * Typo
    
    * Update xcm/src/v3/mod.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Docs
    
    * Docs
    
    * Docs
    
    * Docs
    
    * Docs
    
    * Update xcm/src/v3/multiasset.rs
    
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    
    * Add tests for MultiAssets::from_sorted_and_deduplicated
    
    * Fail gracefully when same instance NFTs are detected during push
    
    * Update Substrate to fix benchmarks
    
    * Apply suggestions from code review
    
    * Update runtime/kusama/src/xcm_config.rs
    
    * Rename arguments
    
    * Attempt to fix benchmark
    
    * ".git/.scripts/commands/bench/bench.sh" runtime polkadot-dev runtime_parachains::ump
    
    * Use actual weights for UMP pallet in Polkadot
    
    * ".git/.scripts/commands/bench/bench.sh" runtime kusama-dev runtime_parachains::ump
    
    * ".git/.scripts/commands/bench/bench.sh" runtime westend-dev runtime_parachains::ump
    
    * ".git/.scripts/commands/bench/bench.sh" runtime rococo-dev runtime_parachains::ump
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    Co-authored-by: default avatarAlexander Popiak <[email protected]>
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    Co-authored-by: default avatarParity Bot <[email protected]>
    Co-authored-by: default avatarstanly-johnson <[email protected]>
    Co-authored-by: default avatarnanocryk <[email protected]>
    Co-authored-by: default avatarBranislav Kontur <[email protected]>
    Co-authored-by: default avatarasynchronous rob <[email protected]>
    Co-authored-by: command-bot <>
    Co-authored-by: default avatarVincent Geddes <[email protected]>
    Co-authored-by: default avatarSquirrel <[email protected]>
    Co-authored-by: default avatarOliver Tale-Yazdi <[email protected]>
    Co-authored-by: default avatarShawn Tabrizi <[email protected]>
    1a1bfd2a