Smart Contracts are currently a hot topic, including both Blockchain-based and non-Blockchain-based Smart Contracts. I supervise projects in the research area of Smart Legal Contracts, as used for example to automate the performance of legal (especially commercial) contracts. "Computable Contracts" are a particular way to write Smart Legal Contracts using a Domain Specific Language that also looks like Natural Language (e.g. English, as used by lawyers in drafting contracts).
If interested in any of the following, send an email to: clack@cs.ucl.ac.uk
- Analyse Smart Contract code development for different Blockchain architectures.
- Individual Project - could be run as a group (without inter-dependencies) with each working on a different Blockchain architecture.
- Background - we aim to automate complex legal agreements, especially financial contracts such as Interest Rate Swaps, and Blockchain-based cntracts such as trading Non-Fungible Tokens: "Smart Legal Contracts". Often the desire is for this to be achieved by "smart contract" code running on a Blockchain. Unfortunately different Blockchain architectures implement smart contract code in different ways, and it is not clear how they differ in detail (e.g. in terms of deterministic outcomes).
- Description - analyse at least one, preferably two, and maybe three different Blockchain architectures and how they implement smart contract code. For each such Blockchain architecture (e.g. Ethereum, Hyperledger, Corda), preferably develop a formal description of how the smart contract code to automate a contract will be run on that Blockchain. This could for example be expressed as a formal Operational Semantics where logical statements are made about the execution and procedures of the system so that properties of the system (such as correctness, determinacy, etc) could be determined by constructing proofs over those logical statements. The project does not include constructing proofs - just constructing the logical statements about the system, and how those statements are interconnected. Other approaches are also possible: for example a less formal approach would explore limitations and idiosyncracies (eg ease of deployment, ease of coding, oracle architecture and ease of use, achieving workflow and temporal sequencing, ability to respond to external events). This project might optionally involve deploying a private blockchain, writing smart contract code to test how a Blockchain system works when executing that code.
- Skills required - A strongly logical analytical and flexible mind, intellectual initiative, a good understanding of Blockchain architecture and how Blockchain "smart contracts" work. Preferably, an understanding of distributed systems and formal descriptions of computer systems. Optionally, programming skills in a language for Blockchain smart contracts (eg Solidity).
- Workflows, Analysis and Code for Smart Legal Contracts
- Individual Project - could be undertaken by more than one student concurrently (working on different sources).
- Background: The automation of complex legal agreements, especially financial contracts such as Interest Rate Swaps, and Blockchain-based contracts such as trading Non-Fungible Tokens: "Smart Legal Contracts".
- Description: Analyse some or all of a complex legal agreement for a financial product, to determine which parts could be automated (either on a Blockchain or otherwise), to determine relevant events and workflows, to assess possible inconsistencies or incompleteness, and to derive pseudo-code for automation. Optionally also to convert the pseudo code into smart contract code (eg using Solidity).
- Skills required: An understanding of financial products, a strongly logical analytical and flexible mind, intellectual initiative, programming skills in any general-purpose programming language (e.g. Python, C++, Java, Haskell, OCAML), a basic understanding of Blockchain architecture and how Blockchain "smart contracts" work. Optionally, programming skills in a language for Blockchain smart contracts (eg Solidity).
- Temporal Semantics of Smart Contracts: continue and extend previous work that has captured the requirements for describing the temporal aspects of legal documentation. The previous work on requirements needs to be extended to provide (i) formal representations of time objects, (ii) a formal definition of for each kind of time object to state what it means, (iii) a set of operators that can be applied to time objects, defining the properties of those operators (eg commutative? associative?), and a definition of the meaning of the output of each operator, and (iv) a comparison with existing semantics/logics. There is scope to implement this work as a prototype so that its operation can be validated.