Try โ€‚โ€‰HackMD

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"

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More โ†’


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