The public history carried kat/__pycache__/mlkem768_reference.cpython-314.pyc, a compiled Python artifact embedding the operator's absolute local path. Text secret scanners do not read compiled binaries, which is exactly how it slipped through, and removing it from the tip would have left it reachable through the old root commits. So this repository is republished from a single clean root. This root also carries, from the previously unpublished line of work: - corrected LICENSE year, LICENSING.md, VERIFY-POLICY.md, and CITATIONS-UNRESOLVED.md remeasured 2026-08-11 (101 paths, README aligned) - O-018: run_consensus_verification.py ran 19 of 29 models and reported PASS; it now runs all 29, and computemarket_smt.py gains resolveByTimeout / reclaimUnsettled cases plus a negative control - O-006: the word 'audited' removed from next to Bouncy Castle, twice, after a concurrent edit resurrected it - O-014: prior art named and dated - Algorand's native falcon_verify shipped about ten months before AERE's precompiles; the primacy claim is withdrawn where it was implied - bench/ scripts parametrized so they actually run for an outsider (the earlier textual sanitization left $STAGING unexpanded inside Python strings) - AIP-2/AIP-3 errata with measured figures, spec remeasurements at 2026-08-01, and the spec-zk-stack retractions (owner is an operational key, not the Foundation; 'maximally sound' withdrawn; aggregator V1 deprecated) The redacted bench-host environment files from the sanitized line are kept exactly as published; the unredacted local variants are not carried.
7.5 KiB
AIP-6: ERC-4337 Passkey and Gasless Onboarding Stack
Preamble
| Field | Value |
|---|---|
| AIP | 6 |
| Title | ERC-4337 Passkey and Gasless Onboarding Stack |
| Author | AERE Foundation |
| Type | Standards Track |
| Category | ARC |
| Status | Final |
| Created | 2026-07-11 |
| Requires | None |
| Ratification | Foundation-ratified (pre-decentralization) |
Abstract
This AIP documents AERE's account-abstraction onboarding stack: ERC-4337-shaped EntryPoints, passkey (WebAuthn / secp256r1) smart accounts that use the Fusaka P-256 precompile, and a set of paymasters that let a new user transact without first holding AERE for gas. It is a retro-filed record of contracts already live on chain 2800.
Motivation
The single hardest step in crypto onboarding is the cold start: a new user needs gas to make their first transaction, but they cannot get gas without already transacting or bridging in. AERE's answer is account abstraction plus paymasters, so a user can create a wallet secured by a device passkey (Face ID, Touch ID, Windows Hello, a security key) and have their first transactions sponsored, with no seed phrase and no pre-funded gas.
Fusaka makes the passkey half cheap. Its RIP-7951 precompile at address 0x100
verifies a secp256r1 / P-256 signature natively for a fixed cost of about 3,450
gas, versus roughly 250,000 gas to do the same check in Solidity. That is what
makes a passkey-signed userOp economical.
Specification
EntryPoints
- AereEntryPoint at
0x19773ba45287A64B05d0BCBD59D1371BF51Bd5D2. A lightweight ERC-4337-compatible EntryPoint used by the paymasters. - AereEntryPointV2 at
0x8D6f40598d552fF0Cb358b6012cF4227B86aF770. The current ERC-4337-shaped EntryPoint that the V2 accounts validate against.
Passkey accounts
- AerePasskeyAccountFactory at
0xfB0eF980667A79Fe1AB69c5f2d512118F1B30739. V1, legacy. Single-passkey-owner smart account. Retained for the original demo account. - AerePasskeyAccountFactoryV2 at
0x5FFa9a6487DA4641a1A1e7900ff2bD4525D34fdA. V2. Accounts are MultiOwnable (passkey owners and EOA owners), expose an ERC-4337validateUserOpshim and EIP-1271isValidSignature, and support recovery by an existing owner adding a new owner.predictAddress(initialOwners, salt)gives the counterfactual address.
Signature verification for passkey owners routes through the Fusaka P-256
precompile at 0x100.
Paymasters
- AereOnboardingPaymaster at
0x4058E406475Dbed7056Aee0c808f293F05fEa879. Foundation-funded sponsorship for cold-start users. Rate-limited to 3 lifetime userOps per sender and a sitewide cap of 100 sponsored userOps per day. This is the "your first few transactions are free" primitive. - AereAppPaymasterFactory at
0xEC22603E8712cBc5c31E53370D10f1a80CcB4DF0. A permissionless factory: any dApp clones its own AereAppPaymaster to sponsor its own users on its own budget. - AereTokenPaymasterV2 at
0x217f56a5b0C7f35abe4D2fff924A6c13B85d7243. Pay gas in any whitelisted ERC-20 instead of AERE.withdrawTokenusestransfer()so the Foundation can sweep collected gas revenue (the V1 bug that stranded collected tokens is fixed here). - AereStakeQuotaPaymasterV2 at
0xE50464ca7E8E7F542D1816B3172a2330cFE384E8. Stake AERE to earn a daily free-transaction quota, a Tron-style UX. It reads the real AereStaking and AereLockedStaking state with bounded loops.
These V2 paymasters are the canonical ones; the relayer, website, and SDK point here, not at the deprecated V1 paymasters.
Rationale
The stack follows ERC-4337 rather than inventing a bespoke account model so that existing bundler and account-abstraction tooling transfers directly, and so that accounts are contracts (upgradable ownership, recovery, EIP-1271) rather than raw EOAs.
Passkeys were chosen for the owner key because they remove the seed phrase, which is the biggest single cause of self-custody loss, and because Fusaka's native P-256 precompile makes on-chain WebAuthn verification cheap enough to use in every userOp. The V2 accounts are MultiOwnable specifically to provide a recovery path: an existing owner can add a new owner, so losing one device does not brick the account.
Multiple paymasters exist because "gasless" means different things in different contexts: a one-time cold-start subsidy (onboarding), a dApp sponsoring its own users (app factory), paying gas in a stable ERC-20 (token paymaster), or earning free transactions by staking (stake-quota). Each is a distinct policy, so each is a distinct, narrowly-scoped paymaster rather than one over-configurable contract.
Backwards Compatibility
None. These are additive contracts. Ordinary EOAs and existing contracts are unaffected. Builders opt in by deploying accounts through the factories and wiring a paymaster.
Security Considerations
- The EntryPoints are AERE's own implementations. They are ERC-4337-compatible in shape and interface, not the canonical audited Ethereum ERC-4337 EntryPoint singleton. Integrators should treat them as AERE-specific and not assume byte-level parity with mainnet Ethereum's EntryPoint.
- Gasless is subsidized, not free. AereOnboardingPaymaster spends Foundation funds. Its 3-per-sender lifetime limit and 100-per-day sitewide cap exist to bound abuse and cost; sponsorship is not an unlimited, permanent entitlement and can be exhausted or turned down. Users past the free tier pay gas normally (in AERE, in a whitelisted ERC-20, or via a stake quota).
- Recovery is owner-mediated. V2 account recovery works by an existing owner adding a new owner. If all owner devices are lost and no recovery owner was pre-registered, the account is not recoverable. Users should add a backup owner.
- Passkey trust model. Passkey security depends on the device's secure element and the platform WebAuthn implementation. A compromised device or a platform vulnerability is outside what the contract can defend against.
- Single client, unaudited. As with the rest of AERE today, this runs on a single client (Besu QBFT) under a small Foundation-operated validator set, and these contracts have not had an external security audit. The V1 passkey account and V1 paymasters had known gaps (V1 was a demo-grade single-owner account with no recovery, and two V1 paymasters had confirmed bugs); V2 closed those, and the V1 contracts are left on-chain but deprecated. New integrations MUST use the V2 addresses.
Reference Implementation and On-Chain Deployment
Sources under contracts/contracts/passkey/ (accounts, factories, MultiOwnable,
EntryPointV2, WebAuthn, P256Probe) and contracts/contracts/ plus
contracts/contracts/paymaster/ (the paymasters and EntryPoint). Addresses:
- AereEntryPoint
0x19773ba45287A64B05d0BCBD59D1371BF51Bd5D2 - AereEntryPointV2
0x8D6f40598d552fF0Cb358b6012cF4227B86aF770 - AerePasskeyAccountFactory (V1)
0xfB0eF980667A79Fe1AB69c5f2d512118F1B30739 - AerePasskeyAccountFactoryV2
0x5FFa9a6487DA4641a1A1e7900ff2bD4525D34fdA - AereOnboardingPaymaster
0x4058E406475Dbed7056Aee0c808f293F05fEa879 - AereAppPaymasterFactory
0xEC22603E8712cBc5c31E53370D10f1a80CcB4DF0 - AereTokenPaymasterV2
0x217f56a5b0C7f35abe4D2fff924A6c13B85d7243 - AereStakeQuotaPaymasterV2
0xE50464ca7E8E7F542D1816B3172a2330cFE384E8
All addresses copied verbatim from sdk-js/src/addresses.ts. The Fusaka P-256
precompile at 0x100 (RIP-7951) is active on chain 2800 from the Fusaka
activation (unix 1780220351, block 2,106,597).
Copyright
Released to the public domain (CC0). No rights reserved.