Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AIP-104][Discussion] Account Abstraction #513

Open
lightmark opened this issue Oct 2, 2024 · 9 comments
Open

[AIP-104][Discussion] Account Abstraction #513

lightmark opened this issue Oct 2, 2024 · 9 comments

Comments

@lightmark
Copy link
Contributor

lightmark commented Oct 2, 2024

AIP Discussion

Account Abstraction (AA) on Aptos allows any account to be authenticated through move code in addition to existing
authentication schemes supported by native code. This AIP will introduce a new authenticator called Abstraction that
delegates the authentication verification to AptosVM running move-based authentication logic.

Read more about it here: https://github.com/aptos-foundation/AIPs/blob/main/aips/aip-104.md

@ch4r10t33r
Copy link

AIP Discussion

Account Abstraction (AA) on Aptos allows any account to be authenticated through move code in addition to existing authentication schemes supported by native code. This AIP will introduce a new authenticator called Abstraction that delegates the authentication verification to AptosVM running move-based authentication logic.

Read more about it here: #512

Hey @lightmark, I just came across this AIP and I'm really excited about it! I have a quick question though—based on an initial high-level read, does this AIP primarily introduce support for multiple authentication schemes? That doesn't seem like full account abstraction per se.

The generally accepted definition of Account Abstraction typically includes a broader range of features beyond multiple signature schemes, such as key rotation (replacing compromised keys, deadman’s switch), various access policies (role-based access, multisig, social recovery), gas abstraction (paying fees with tokens instead of native coins), and execution abstraction (batching calls), among others.

Would it make more sense to call this Authentication Abstraction instead?

@lightmark
Copy link
Contributor Author

lightmark commented Oct 2, 2024

Hey @ch4r10t33r, thanks for your prompt feedback!

Regarding your question, Aptos Move and Ethereum Solidity are distinct smart contract languages with different programming models and designs. The Account Abstraction (AA) feature introduced here allows for the logic to acquire the signer of any account to be customized in a Move function with access to on-chain data.

To clarify, there is no universal consensus on the definition of AA across different blockchains. For instance:

On Aptos, AA extends the following capabilities:

  • Multiple signature schemes: Supports features like key rotation.
  • Customizable access policies: Allows account control logic to be fully represented in Move, enabling fine-grained control over access rights.
  • Security features: With Move, Aptos can enable features like spending limits and shared wallets, similar to those on Solana, by customizing how accounts are managed.

While Aptos also supports execution abstraction (via Aptos Script and BatchedTxn) and gas abstraction (via third-party gas payer), these features are not necessarily tied to ACCOUNT. However, they are often included under the broader AA concept due to their relevance in other blockchains like Ethereum.

We may explore an on-chain version of gas abstraction in the future, but that would require a separate AIP/project.

@ch4r10t33r
Copy link

Thanks for responding @lightmark

To clarify, there is no universal consensus on the definition of AA across different blockchains. For instance:

Fair enough! My main point was that it would be helpful for all chains to agree on a universal definition and terminology to avoid confusion for developers working across them. As the future is multi-chain, having consistent terminology—alongside interoperability—would go a long way in streamlining development and reducing any misunderstandings. :-)

On Aptos, AA extends the following capabilities:

  • Multiple signature schemes: Supports features like key rotation.
  • Customizable access policies: Allows account control logic to be fully represented in Move, enabling fine-grained control over access rights.
  • Security features: With Move, Aptos can enable features like spending limits and shared wallets, similar to those on Solana, by customizing how accounts are managed.

Is the spending limits feature currently available, or is it expected to be released with Move2?

While Aptos also supports execution abstraction (via Aptos Script and BatchedTxn) and gas abstraction (via third-party gas payer), these features are not necessarily tied to ACCOUNT. However, they are often included under the broader AA concept due to their relevance in other blockchains like Ethereum.

Understood. At Kanalabs, we operate a paymaster service that is utilized by several dApps on Aptos to enable gas abstraction.

We may explore an on-chain version of gas abstraction in the future, but that would require a separate AIP/project.

That sounds fantastic! It will definitely elevate the user experience on Aptos to a whole new level. Looking forward to it!

@thepomeranian thepomeranian changed the title [AIP-101][Discussion] Account Abstraction [AIP-X][Discussion] Account Abstraction Oct 3, 2024
@yeptos
Copy link
Contributor

yeptos commented Oct 3, 2024

Hi @lightmark, in the AIP it’s not immediately clear why there should be a fixed global gas limit for move authentication functions. It also seems to imply that the gas fees for these functions aren't paid by the tx signer (or are they?). I'm assuming there must be some security considerations behind this which i hope can be addressed in the AIP if possible.

@yeptos
Copy link
Contributor

yeptos commented Oct 3, 2024

by the way it's really great to see this effort finally coming together, i'm very excited about all the use cases this will enable for us and the ecosystem!

@magnum6actual
Copy link

magnum6actual commented Oct 7, 2024

Trying to wrap my brain around this. Given the function signature:
public fun authenticate(account: signer, signature: vector<u8>): signer

how do I get any information about the entry function being called?

@thepomeranian thepomeranian changed the title [AIP-X][Discussion] Account Abstraction [AIP-104][Discussion] Account Abstraction Nov 12, 2024
@lightmark
Copy link
Contributor Author

Hi @lightmark, in the AIP it’s not immediately clear why there should be a fixed global gas limit for move authentication functions. It also seems to imply that the gas fees for these functions aren't paid by the tx signer (or are they?). I'm assuming there must be some security considerations behind this which i hope can be addressed in the AIP if possible.

I will update that. The reason is security surface of DDoS since those gas should not be charged.

@lightmark
Copy link
Contributor Author

Trying to wrap my brain around this. Given the function signature: public fun authenticate(account: signer, signature: vector<u8>): signer

how do I get any information about the entry function being called?

it's the function_info stored in DispatchableAuthenticator

@nhandl3
Copy link

nhandl3 commented Dec 10, 2024

Hi @lightmark

Multiple signature schemes: Supports features like key rotation.

Can you elaborate on this application of AA, how it is different from Account Key Rotation or current multisig?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants