Account Abstraction Overview

This document assumes a base level knowledge of Solidity/EVM and zkSNARKs.
The purpose of this document is to accelerate the on-boarding process for developers looking to build advanced applications that require directly interacting with lower level functions within RAILGUN, there are less guardrails in place when building these applications. If your application can be implemented as a multicall you should instead go to the cookbook overview.
RAILGUN private balances are a form of ZK based Account Abstraction that pre-dates ERC-4337.
Rather than requiring users to sign transactions with their own wallet and revealing addresses, transaction verification happens through a SNARK Proof verifying against a shielded Merkle Tree of balances. This enables interesting utility like RAILGUN gasless transactions, where private transactions can be sent using stablecoins or any other token accepted by Relayers as opposed to the chain’s native gas token like ETH.
This utility from ZK Account Abstraction can be extended in even more interesting directions than just gasless transactions such as:
  • Private DAO voting using RAILGUN balances, enabling anonymous voting based on ERC-20s or NFTs
  • ZK Payments infrastructure to support use cases like private bounty or salary payments
  • Sealed transfer of tokens between 2 users at a pre-agreed upon price or condition