---
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."