Write-Domain Separation and Non-Custodial Enforcement: A Structural Impossibility in Account-Based Ledgers, with a Commitment-Based Construction
Matthias Hauser

TL;DR
This paper proves the impossibility of non-custodial enforcement of asset disposition in account-based ledgers under standard models, and introduces a commitment-based primitive called the envelope to achieve this goal.
Contribution
It formalizes the impossibility result for non-custodial enforcement in standard account models and proposes the envelope primitive as a solution with concrete deployment templates.
Findings
Proves that standard account models cannot realize NCEE due to the Key Sovereignty Axiom.
Introduces the envelope primitive that achieves NCEE under cryptographic assumptions.
Provides a reference implementation with empirical measurements and security analyses.
Abstract
Account-based ledgers -- standard externally-owned accounts (EOAs), ERC-4337 smart accounts, post-Pectra EIP-7702 delegated EOAs -- place the holder of the controlling key at the apex of asset authorization. We ask a structural question about ledger access control: under this authorization model, can a protocol enforce the future disposition of an asset without taking custody and without requiring the owner's cooperation at enforcement time? We formalize the target as Non-Custodial Enforced Encumbrance (NCEE), a four-property specification covering self-custody, transition restriction, irrevocability, and permissionless enforcement. We define the Key Sovereignty Axiom (KS) and prove that any ledger satisfying KS cannot realize NCEE; standard EOAs, ERC-4337 smart accounts, and EIP-7702 delegated EOAs satisfy KS for their standard asset paths. We define Asset-Authorization Coupling…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
