---
# System prepended metadata

title: Chat history with Shawn

---

# 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