Mobile menu icon
Skip to navigation | Skip to main content | Skip to footer
Mobile menu icon Search iconSearch
Search type

Department of Computer Science

Application Level Verification of Solidity Smart Contracts

Primary supervisor

Additional supervisors

  • Lucas Cordeiro

Contact admissions office

Other projects with the same supervisor


  • Competition Funded Project (Students Worldwide)

This research project is one of a number of projects at this institution. It is in competition for funding with one or more of these projects. Usually the project which receives the best applicant will be awarded the funding. Applications for this project are welcome from suitably qualified candidates worldwide. Funding may only be available to a limited set of nationalities and you should read the full department and project details for further information.

Project description

Smart contracts running in a blockchain environment (e.g. ones written in Solidity running on an Ethereum blockchain) need to consist of well defined atomic state updates; otherwise, the properties of the on-chain state become meaningless. Essentially, blockchain transactions need to enjoy the well-known ACID properties familiar from the database world. The (D)urability aspect of such transactions implies that it is practically impossible to back out of a running smart contract once it is live on the blockchain.

So, smart contracts need to be right the first time, and for this, formal verification can play a vital role. Event-B is a formalism for modelling and verifying systems whose behaviour consists of well defined atomic state updates, and is supported by the open-source Rodin toolset. This project aims to explore the feasibility of the basic Event-B framework for designing and verifying Solidity smart contracts and, will build a suitable plugin that could be added to the Rodin tool to support the design of such contracts. The project will investigate novel symbolic verification methods based on SAT modulo theories and abstract interpretation techniques in Rodin to check the discharged verification conditions.

Person specification

For information


Applicants will be required to evidence the following skills and qualifications.

  • This project requires mathematical engagement and ability substantially greater than for a typical Computer Science PhD. Give evidence for appropriate competence, as relevant to the project description.
  • You must be capable of performing at a very high level.
  • You must have a self-driven interest in uncovering and solving unknown problems and be able to work hard and creatively without constant supervision.


Applicants will be required to evidence the following skills and qualifications.

  • You will have good time management.
  • You will possess determination (which is often more important than qualifications) although you'll need a good amount of both.


Applicants will be required to address the following.

  • Comment on your transcript/predicted degree marks, outlining both strong and weak points.
  • Discuss your final year Undergraduate project work - and if appropriate your MSc project work.
  • How well does your previous study prepare you for undertaking Postgraduate Research?
  • Why do you believe you are suitable for doing Postgraduate Research?