--- title: Non Problems (Protocolberg 2023) tags: Polkadot description: Protocolberg 2023 Non Problems type: slide --- ### Protocolberg 2023 # Non-Problems ### Gavin Wood #### `@gavofyork` https://hackmd.io/@polkadot/Protocolberg2023np --- # Polkadot ## Substrate ### Frame #### 👆 --- # Frame ## Account Abstraction 🤔 An "Account" generally means "Caller identifier"; confers certain privileges within some logic. --- #### Account (`Signed`) ##### is a type of ### System `Origin` ##### is a type of ### Runtime `Origin` ##### is a type of ## XCM `Origin` Note: In Frame, accounts are a distant second-class citizen, not in the exhaulted place within the EVM EE. This means we can play around with them a lot more or, if we want disregard them completely and use a more effective abstraction. --- ## "Rules like the Account system" {%youtube s7M5wpitHo4 %} --- ## Other Origin Examples - `Root` - `Treasury` - `CollectiveMembers(Amount, Count)` - `Parachain(Index)` - `Person(Alias)` - `Xcm(Location)` - ... --- ### Non-Problems ## Transaction Batching In Frame, just use the `Utility.batch` call. --- ### Non-Problems ## Account Delegation In Frame, just use the `Utility.proxy` call. --- ### Non-Problems ## Multisig / Threshold sig In Frame, just use the `Utility.multisig` call. --- ### Non-Problems ## Account recovery on lost Secret Key In Frame, just use the `Recovery.as_recovered` call. --- ### Non-Problems ## Exotic Signatures In Frame at the level of a chain, we just implement `Verify` for any crypto we wish to support. (Currently this includes Schnorr/Ristretto 25519, Ed25519 and ECDSA/SECP256k1.) --- ### Non-Problems ## Exotic Signatures In Frame if we want to introduce a *module* which allows for using arbitrary new crypto, we just use a `SignedExtension` or `ValidateUnsigned`. (This was used to great effect for claiming DOT tokens from an ETH address.) --- ### Non-Problems ## Paying fees in a non-native token In Frame, paying fees is not a first-class citizen; it's a `SignedExtension`. So paying fees in multiple tokens (either with a multiasset treasury or through an exchange) is a trival reimplementation. --- ### Non-Problems ## Paying someone else's fee In Frame, paying someone else's fees is as trivial as the `Utility.proxy` call. (The main reason this is not yet prevalent on Polkadot is the *transmission* of the intention, but a decentralised and secure system for this is expected soon.) --- ### Non-Problems ## Accounts always require a balance for gas fees Frame has the ability to return `Pays::No` from any calls, meaning the system picks up the tab. Frame can also support not even requiring the sender account to exist prior with an appropriate `SignedExtension`. --- "Some rules can be bent; others broken."