Nomos
A language for digital contracts
Collaborators
- Ankush Das
- Stephanie Balzer
- Stephen McIntosh
- Frank Pfenning
- Ishani Santurkar
- Bryan Parno
- Andrew Miller
Overview
Programming digital contracts comes with unique challenges, which include expressing and enforcing protocols of interaction, controlling resource usage, and tracking linear assets. Nomos is a programming language for digital contracts whose type system addresses the aforementioned domain-specific requirements. To express and enforce protocols, Nomos is based on shared binary session types rooted in linear logic. To control resource usage, Nomos uses resource-aware session types and automatic amortized resource analysis, a type-based technique for inferring resource bounds. To track linear assets, Nomos employs a linear type system that prevents assets from being duplicated or discarded. A main innovation is the design and soundness proof of Nomos’ type system, which integrates shared session types and resource-aware session types with a functional type system that supports automatic amortized resource analysis.
Website
Support
In part supported by NSF SaTC Grant 1801369.