# Chat history with Shawn Shumo | manta.network shawntabrizi we are here: https://zoom.us/j/93871358213?pwd=VUd1YXN4ZUg0akJTL3VmMVpCNGdyZz09 Shumo | manta.network https://github.com/paritytech/polkadot/blob/master/xcm/pallet-xcm/src/lib.rs#L133 https://github.com/paritytech/polkadot/blob/d0ae2a52fef248bca5d2b4022300af2bc542c75a/xcm/pallet-xcm/src/lib.rs#L68 type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of KSM Fri, Jun 25 2021 Ghz Message deleted Ghz Hey shawntabrizi is there some branch on Statemine where it actually processes incoming XCM mssages, which I am missing? During our meeting on Tuesday it was mentioned Kusama can send KSM to Statemine with teleport_assets extrinsic from pallet_xcm , so I was expecting either an implementation of TransactAsset trait or some kind of match statement in the runtime code, but can't find anything. Wed, Jun 30 2021 shawntabrizi Hey all, sorry for the delay in response. I was traveling back from lisbon this last weekend and fell a little behind my chat do feel free to ping me if you dont hear from me :) anyway, the code you are looking for is in polkadot > xcm-executor 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 (origin, Xcm::TeleportAsset { assets, effects }) => { // check whether we trust origin to teleport this asset to us via config trait. for asset in assets.iter() { ensure!(!asset.is_wildcard(), XcmError::Wildcard); // We only trust the origin to send us assets that they identify as their // sovereign assets. ensure!(Config::IsTeleporter::filter_asset_location(asset, &origin), XcmError::UntrustedTeleportLocation); // We should check that the asset can actually be teleported in (for this to be in error, there // would need to be an accounting violation by one of the trusted chains, so it's unlikely, but we // don't want to punish a possibly innocent chain/user). Config::AssetTransactor::can_check_in(&origin, asset)?; } for asset in assets.iter() { Config::AssetTransactor::check_in(&origin, asset); } Some((Assets::from(assets), effects)) } This is the "default" implementation of the XCM executor logic and here you can see we check the IsTeleporter trait to see if we want to accept a TeleportAsset XCM in the case of statemine, the IsTeleporter trait is configured like so: 1 type IsTeleporter = NativeAsset; // <- should be enough to allow teleportation of KSM Which accepts any "native asset" from another parachain / relay chain: 1 2 3 4 5 6 7 /// Accepts an asset IFF it is a native asset. pub struct NativeAsset; impl FilterAssetLocation for NativeAsset { fn filter_asset_location(asset: &MultiAsset, origin: &MultiLocation) -> bool { matches!(asset, MultiAsset::ConcreteFungible { ref id, .. } if id == origin) } } ^ that is also in polkadot when working on XCM, you need to be looking at a lot of the implementations and stuff in polkadot and following that around Thu, Jul 1 2021 Ghz Yey, thanks for confirming this Shawn. I had gone as far as this but had a mistake in composing the message, which finally revealed itself yesterday and we managed to execute the teleport_assets extrinsic from relay to para chain. Btw i've been trying to step into extrinsics with a debugger, is that possible? Managed to configure LLDB ( I think ) for attach to process, but all of my breakpoints are always grey. Im sure the code in my editor is the same that built the binaries and I saw in the parachain and substrate rooms that one other guy also can't manage to step into extrinsics ( he was on Mac thought, im on Ubuntu) Ghz Oops with Debug builds, the breakpoints are red and stepping through cumulus code works. I was trying with Release initially... Mon, Jul 5 2021 shawntabrizi nice, glad you figured it out. I generally dont use the debugger, but just write unit tests within the runtime as it is faster to iterate imo but it depends on exactly what you are testing and stuff Tue, Jul 6 2021 Shumo | manta.network Hi Shawn, what is a good time for us to meet this week? shawntabrizi lets schedule something reoccuring? when did we say would be good for everyone? shawntabrizi Feel free to book something here: https://calendly.com/shawn-parity/60min Thu, Jul 8 2021 Shumo | manta.network Hi Shawn, we booked Friday 10 AM East Coast time. here is the issue: https://github.com/Manta-Network/Manta/issues/115 shawntabrizi see you then! Shumo | manta.network see you then! Friday Shumo | manta.network https://zoom.us/j/98281013166?pwd=VWs0TlFMQ3BmMGhJMStXbTlnckRSUT09 shawntabrizi nice Shumo | manta.network shawntabrizi we can use this link shawntabrizi was just going to ask Yesterday Shumo | manta.network Hi Shawn, I tried srtool, seems pretty good to build wasm. Do parity also use srtool to build binary? shawntabrizi yup ill find you the CI https://github.com/paritytech/polkadot/releases/tag/v0.9.8 WASM runtimes built with srtool using rustc 1.52.0-nightly (d6eaea1c8 2021-03-14). https://github.com/paritytech/polkadot/pull/1887 Shumo | manta.network BTW, do you know the exact starting date of the next parachain auction (I believe the 6th if statemine is included). shawntabrizi https://github.com/paritytech/polkadot/pull/1887 it appears that only wasm is generated from srtool from the release tag. shawntabrizi Shumo | manta.network BTW, do you know the exact starting date of the next parachain auction (I believe the 6th if statemine is included). the 5th and final auction will be launched right after the one tmrw/tonight ends so basically right away and will last 7 days victor@manta.network then there will be the six one right after the 5th PLO done? shawntabrizi no, there is not schedule yet for auction 6+ we need to evaluate the stability of the network and stuff victor@manta.network I see Today Shumo | manta.network 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 // Don't allow permission-less asset creation. pub struct BaseFilter; impl Filter<Call> for BaseFilter { fn filter(c: &Call) -> bool { !matches!( c, // Monetary Call::Assets(pallet_assets::Call::create(..)) | Call::Balances(_) | // Filter these calls to prevent users from creating assets or making transfers. // Core Call::System(_) | // Filter these calls to prevent users from runtime upgrade without sudo privilege. // pallet-timestamp(_) and parachainSystem(_) could not be filtered because they are used in commuication between releychain and parachain. // Utility Call::Utility(_) | Call::Multisig(_) | // Filter these calls to prevent users from utility operation. Call::Authorship(_) | // Sudo also cannot be filtered because it is used in runtime upgrade. // Collator Call::Session(_) | Call::CollatorSelection(_) | // Filter these calls to prevent users from setting keys and selecting collator for parachain (couldn't use now). //XCM Call::DmpQueue(_) | Call::PolkadotXcm(_) // Filter XCM pallet. ) } } Hi shawn, this is a code snippet that we have to filter out calls in shell-chain Do you think this configuration is reasonable? shawntabrizi shawntabrizi on shell chain, why not filter everything? Shumo | manta.network I think we filtered most of the things except sudo / timestamp / parachain-system. If we block timestamp/parachain-system, the parachain cannot produce blocks sudo is left for runtime upgrade