The two main research topics with their respective list of interests are:
- Technology oriented
Models of and mechanism for computation, such as:
- Stack machines vs automata vs manipulating algebraic types embedded in a another language
- Scope for less expressive languages (that may have more tractability for formal methods)
- Execution determinism, and sources of non-determinism in existing languages
- Cost models for metering computation (e.g. gas)
- Paradigms for smart contracts - e.g. 'identity-oriented', functional, process-oriented - extent to which smart contracts benefit from special purpose languages
- Parallelism of execution, state independence (i.e. parallel processing in a single block)
- Formal guarantees on outputs of smart contracts
- Smart contract packaging, code reuse, and dependency auditing
Generation of smart contracts from existing artifacts (natural language, business process, state machines, non smart-contract code)
Data structures and state
- How best to expose through smart contract languages/libraries
- Sharing state back-ends across execution engines
- Conflict-free and additive data structures
- Verifiable and authenticated data structures - e.g. merkle dags, log-backed maps
- Multi-party secure computation
- Differential privacy
- Zero knowledge and practical building blocks - types of commitments and witnesses
Tooling and compilers for existing virtual machines
Design Patterns for Smart Contracts
- Law oriented
- Smart contracts as representatives of obligations and fulfillment (i.e. 'law')
- What properties should smart contracts with 'legal charge' have?
- What relations can smart contracts have with actual contracts and agreements?
- At what scale to smart contracts best contribute to certainty and execution of agreement?
- What relationship do legal smart contracts have to models of computation?