Understanding Visa's Proposed Account Abstraction: How to Transform Ethereum into an Automated Payment System?
Original authors: Visa, Andrew Beams, Catherine Gu
Original compilation: PANews, Jordan
As the adoption rate of blockchain continues to rise, the demand for excellent user experiences and products that support real use cases is also growing. Visa has provided convenient automatic debit and recurring payment features for its customers, especially younger ones, but implementing this functionality on blockchains like Ethereum still seems challenging. Ethereum is the blockchain network with the highest payment volume, and for certain types of on-chain digital wallets, automatically withdrawing payments from user accounts on a regular basis remains a "big project."
In response, Visa has proposed the concept of Account Abstraction and is exploring how to achieve automated programmable payments using smart contracts, as well as demonstrating how to write smart contracts for self-custody wallets that support automatic fund withdrawals.
Use Case Scenario
Consider a scenario: Suppose today is February 25, and Alice is going on vacation to the Alps. She will return on March 10 but must pay her mortgage, cable bill, and utility bills before the 5th of each month. The problem is that she does not have enough money to make the payments before her vacation, but she will have enough when she receives her salary on March 1. Now the question is, how can Alice enjoy her vacation without missing her payments?
That's right, the answer is------automatic debit. In fact, if Alice had a bank account, automatic debit would be a very simple process; she would just need to link her debit account to her Visa card. However, executing such an operation on a blockchain is not that straightforward. As a new technology, it is worth exploring blockchain smart contract solutions for the above scenario.
Before diving into the details, let’s first understand the concept of Ethereum accounts. Currently, there are two types of accounts on the Ethereum network:
Externally Owned Accounts (EOAs), commonly referred to as "user accounts."
Contract Accounts, commonly referred to as "smart contracts."
User accounts controlled by private keys can send transactions, while smart contracts require associated code to execute. However, smart contracts cannot "initiate transactions themselves," as transactions must always originate from user accounts and be signed by users. These transactions include simple token transfers between user accounts on the Ethereum blockchain or triggering a series of different operations executed through smart contracts, which are more complex transactions.
So, how can we achieve automatic payments on the Ethereum blockchain?
Let’s revisit Alice's situation.
Suppose Alice has a user account on the Ethereum blockchain and keeps her salary in that account to pay her mortgage, cable bill, and utility bills. Today, to pay her bills, she must initiate a transaction to transfer tokens from her "Externally Owned Account" to the recipient's user account.
To elaborate, Alice's "Externally Owned Account" has a key/private key that only she knows, and only she can use this private key to generate an Elliptic Curve Digital Signature Algorithm (ECDSA) signature, which is crucial for creating valid transactions. However, if Alice is on vacation, who will generate this signature and create the payment transaction?
Currently, one solution is for Alice to use a custodial wallet, meaning a third party controls Alice's private key. In other words, Alice trusts a third party to safeguard her funds and execute transactions or send funds to designated accounts when she wants. The benefit of this approach is that Alice can have the custodian generate the signature required to create the scheduled automatic payment transaction, but the downside is that she must fully trust this third party.
So, what if Alice does not want to use a custodial wallet due to concerns about risk and instead wants to use a self-custody wallet to arrange automatic payments? Next, let’s introduce another concept------Account Abstraction.
What is Account Abstraction?
Account Abstraction is an attempt to make user accounts operate like smart contracts and to merge user accounts and smart contracts into a new type of Ethereum account. In the future, Account Abstraction will enable us to design a streamlined solution for automatic payments and provide greater flexibility in the on-chain transaction verification process, such as:
Enabling multi-owner accounts through multi-signature verification.
Allowing the use of post-quantum signatures to verify transactions.
Allowing a so-called public account, where anyone can transact through complete cancellation of signature verification.
Essentially, Account Abstraction allows programmable validity to verify and confirm any blockchain transaction. Transactions based on the Ethereum protocol do not have to be entirely based on hard-coded validity conditions but can instead write some conditions into the account smart contract in a "customized" manner.
More importantly, since validity rules can be set that no longer include signature verification, Account Abstraction supports automatic payments. Let’s take a look at how to implement this.
Delegable Accounts------Implementing Automatic Payment Functionality on Ethereum Using Account Abstraction
Visa's Ethereum automatic payment solution utilizes the concept of Account Abstraction to create a new type of account contract------Delegable Accounts. The main idea is to extend the programmable validity rules of transactions to include a pre-approved allowlist. In simple terms, Account Abstraction can delegate automatic payment operations initiated by user accounts to pre-approved automatic payment smart contracts.
First, merchants need to deploy automatic payment smart contracts. When users with Delegable Accounts visit the merchant's website, they will see a request to approve automatic payments------similar to bills accepted by Visa. At this point, users can see that the automatic payment contract will execute operations on their behalf, with parameters that can be set according to user needs, such as charging the user only once per month or not exceeding a set maximum amount. Most importantly, since this is a smart contract, users can be assured that the automatic payment contract will not be executed in any other way.
If the user agrees to approve the automatic payment, the wallet will add the address of the automatic payment contract to the user's Delegable Account's allowlist.
Next, the merchant triggers the payment by calling the charge function of the automatic payment contract. The automatic payment contract will then trigger the user's account to initiate a push payment transaction, which will be a valid transaction since it has been pre-added to the allowlist.
In addition to recurring payments, this solution can also meet various other real-world applications. Visa's Delegable Account solution could even expand to services like third-party account recovery in the future.
Implementing Account Abstraction on StarkNet
Since Ethereum does not yet support Account Abstraction, Visa has implemented the Delegable Account solution on StarkNet, a Layer 2 blockchain built on top of the Ethereum blockchain to improve transaction throughput and other functionalities to enhance the underlying blockchain settlement layer, developed by the crypto startup StarkWare. The account model of StarkNet is what Visa currently refers to as Account Abstraction, where abstract accounts check whether transactions come from a given address.
For concrete accounts, if someone sends tokens to a user account, it will interact with the token contract, which will check whether the identity (key) used to sign the transaction for this transfer is recorded as the current owner of the token. For abstract accounts, if someone sends tokens to your account, it will also interact with the token contract, which will check whether the identity (contract) used for this transfer is recorded as the current owner of the token. For abstract accounts, what matters is who (address) is executing the transaction, not how (signature) the transaction is executed.
With the StarkNet account model, Visa is able to implement the Delegable Account solution, thereby enabling automatic payment functionality for self-custody wallets.
Conclusion
As one of the world's largest payment networks, Visa is actively exploring innovative smart contract solutions to drive the realization of programmable money and payments.
Automatic payments are one of the core functionalities lacking in existing blockchain infrastructure, but the concept of Account Abstraction can provide automatic recurring payment capabilities for self-custody wallets and even introduce other real-world applications beyond automatic payments to the blockchain, thereby creating a better user experience for both traditional and emerging payment channels.