Good afternoon, everyone. I’m Haobin Ni from Cornell University

Slides:



Advertisements
Similar presentations
Introducing yourself and Others
Advertisements

Individual Position Slides: Jonathan Katz (University of Maryland) (Apologies I can’t be here in person)
Introducing Formal Methods, Module 1, Version 1.1, Oct., Formal Specification and Analytical Verification L 5.
Giving a formal meaning to “Specialization” In these note we try to give a formal meaning to specifications, implementations, their comparisons. We define.
ISBN Chapter 3 Describing Syntax and Semantics.
The Design and Implementation of a Certifying Compiler [Necula, Lee] A Certifying Compiler for Java [Necula, Lee et al] David W. Hill CSCI
Formal Methods in Software Engineering Credit Hours: 3+0 By: Qaisar Javaid Assistant Professor Formal Methods in Software Engineering1.
Comp 205: Comparative Programming Languages Semantics of Imperative Programming Languages denotational semantics operational semantics logical semantics.
A Type System for Expressive Security Policies David Walker Cornell University.
From last time S1: l := new Cons p := l S2: t := new Cons *p := t p := t l p S1 l p tS2 l p S1 t S2 l t S1 p S2 l t S1 p S2 l t S1 p L2 l t S1 p S2 l t.
Describing Syntax and Semantics
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
CSE 486/586 CSE 486/586 Distributed Systems PA Best Practices Steve Ko Computer Sciences and Engineering University at Buffalo.
Towers of Hanoi. Introduction This problem is discussed in many maths texts, And in computer science an AI as an illustration of recursion and problem.
Proof Carrying Code Zhiwei Lin. Outline Proof-Carrying Code The Design and Implementation of a Certifying Compiler A Proof – Carrying Code Architecture.
Checking Reachability using Matching Logic Grigore Rosu and Andrei Stefanescu University of Illinois, USA.
Lyra – A service-oriented and component-based method for the development of communicating systems (by Sari Leppänen, Nokia/NRC) Traditionally, the design,
HELLO AGAIN !!!... And... How are you ? I forgot... Oh ! But that's right !...
FDT Foil no 1 On Methodology from Domain to System Descriptions by Rolv Bræk NTNU Workshop on Philosophy and Applicablitiy of Formal Languages Geneve 15.
Play it again. My new place I’m an American Give it away.
COP4020 Programming Languages Introduction to Axiomatic Semantics Prof. Robert van Engelen.
Formal Methods.
Seven Myths of Formal Methods - by Anthony Hall, Praxis Systems Presented by Shanmughapriya Senthil.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
CSCI1600: Embedded and Real Time Software Lecture 28: Verification I Steven Reiss, Fall 2015.
Introduction to Hardware Verification ECE 598 SV Prof. Shobha Vasudevan.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 19Slide 1 Verification and Validation l Assuring that a software system meets a user's.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVII. Verification and Validation.
CSE 486/586 Distributed Systems Byzantine Fault Tolerance
Taxicab Geometry TWSSP Monday.
Algorithms and Problem Solving
Chapter 4: Business Process and Functional Modeling, continued
HOW TO MAKE AN ORAL PRESENTATION.
Software Testing.
Thinking about Safety Step Back 5x5 “Nobody Gets Hurt”
Outline What does the OS protect? Authentication for operating systems
Bitcoin - a distributed virtual currency system
Synthesis from scenarios and requirements
Coding Manual and Process
Reasoning about code CSE 331 University of Washington.
Outline What does the OS protect? Authentication for operating systems
Enterprise Application Architecture
Knowledge Representation
Lesson 10: Building an App: Color Sleuth
So what is Blockchain anyway?
START The way we trust is changing Presentation for Thursday at IAAO
Advanced Compilation and Automatic Programming
Let’s build a Blockchain!
CSE 486/586 Distributed Systems Byzantine Fault Tolerance
CodePeer Update Arnaud Charlet CodePeer Update Arnaud Charlet
Conditions and Ifs BIS1523 – Lecture 8.
How to Write a Position Argument
CodePeer Update Arnaud Charlet CodePeer Update Arnaud Charlet
Conclusion – Truth and wisdom
Proof-of-Personhood: Redemocratizing Permissionless Cryptocurrencies
HAPPY NEW YEAR! Lesson 7: If-statements unplugged
Nonce Making Sense of Nonces.
Problem Solving Designing Algorithms.
Test Case Test case Describes an input Description and an expected output Description. Test case ID Section 1: Before execution Section 2: After execution.
Algorithms and Problem Solving
The of and to in is you that it he for was.
Captain Argument – loves agreeing and disagreeing
Memory Consistency Models
Blockchains and Auditing
DNS Security The Domain Name Service (DNS) translates human-readable names to IP addresses E.g., thesiger.cs.ucla.edu translates to DNS.
ECE 352 Digital System Fundamentals
Self Image.
Software Development Techniques
Introducing Natural Deduction
An overview of Coq.
Presentation transcript:

Ironwood: A Correct-by-Construction Blockchain Protocol Implementation (Work in progress) Good afternoon, everyone. I’m Haobin Ni from Cornell University. And I’d like to present Project Ironwood: A correct-by-construction blockchain protocol implementation. This work is advised by Greg Morrisett and Robbert van Renesse and it’s still work in progress. Haobin Ni, Greg Morrisett, Robbert van Renesse Cornell University May 10, 2018

The Trust We Need User Centralized Server Let’s begin with some bed time story: back to the eighties, you were using the centralized services such like a bank or an exchange. Everyday you keep telling yourself that you will be good since you trust those services to be honest and they won’t turn against you. User Centralized Server

The Trust We Need Neptune Coin User Miners > For land on Neptune! (No it’s a gas giant) But now we have got bitcoins ethereum and more importantly, blockchains. So instead of assuming that the centralized monopoly will play nice, you put your faith in that most nodes out there are in the mining pool honest which sounds much more likely to be true. However, there is still something missing in this picture. You are additionally assuming that the protocol implementation of the service you are using is also sound. Unfortunately, this has been shown not always to be the true. User Miners >

The Trust We Need OK, tell you what. We are open-sourced, use secure hardware with military level crypto. We have bug bounties and our WP even comes with a proof… If we look further into how this trust in the protocol and its implementation is established, we will run into the conclusion that this kind of belief is actually established through a rather informal process: The developers of the Neptune coin will tell their users and potential users that … all for the purpose of creating that kind of belief in their Neptune coin. But the fact is this: just using a bunch buzzwords to describe it will never make the code more sound. In contrast, a rule of thumb is that the more features you have the more complex is your system; the more complex is your system, the more bugs will be in there. Neptune Coin User But using a bunch of buzzwords will never make the code sound

Formal Verification A mathematical proof on the properties of the program behaviors For the code that gets executed Machine-checked Old vs New: Believe in the implementation of the protocol Believe in the implementation of the proof checker Provides a much stronger guarantee on the reliability of the program So how can we make sure those protocols we are using everywhere are correct down to the level of the code? A nice try would be trying to write a proof on the properties of the program behaviors for the code that actually gets executed. One can imagine the size of this proof would be comparable to the size of the program, so it ought to be semi-automatically generated and machine checked instead of manual inspection for pen-and-paper proofs. As a comparison, in the old world, you have to believe the implementation of the protocol. For example, the Neptune. With formal verification, you only need to trust the proof checkers, such as Nuprl, Coq, or Z3. I have many reasons to convince you that you’d be in a safer position for the latter case. These proof checkers are much smaller than a whole system to be verified. And they are time-tested by many independent users, you can also check the proof on your own machines. They are even developed by a separate group of people from those who developed the service you are using. So overall, formal verification can provide a much stronger guarantee on the reliability of the program.

Methodology Overview Project Goal: a formally verified blockchain implementation Protocol Complexity Realistic Blockchain Abstract Consensus Protocol Abstraction level BFT Protocol Ideal Blockchain So here I’d like to introduce the high-level methodology we are following to develop the system. Our goal is to build a formally verified blockchain implementation. And we are starting from something nice and simple such as an abstract consensus protocol. Then we are moving forward both in the direction of protocol complexity to reach a realistic blockchain protocol and down in the direction of abstract level to get actual executable code. And in the process, we plan to take more than a few steps such as an BFT Protocol and an ideal blockchain to get the destination. Verified Executable Code Executable Program

Current Status Abstract Consensus Protocol Verified Executable Code Abstraction level Protocol Complexity Realistic Blockchain Executable Program Ideal Blockchain BFT Protocol Current Step: Implementing a formalized BOSCO* Protocol in Coq *BOSCO = Byzantine One Step Consensus Protocol We are here! And in terms of for current status, we are still in the very early stage of development. Conceptually, we are very close to complete a BFT Protocol. In the current step, I’m implementing a formalized BOSCO Protocol in the Coq proof assistant. By implementation I mean both the protocol itself and proof on the properties of the protocol. And BOSCO stands for Byzantine One Step Consensus Protocol which is a nice & simple consensus protocol .

Questions? Fig 1: An Ironwood Blockchain For the last slide I’d like to show you a photo which remotely resembles how an ironwood blockchain would like. Any questions are welcomed. Thank you! Fig 1: An Ironwood Blockchain