This document discusses financial domain-specific languages and how computers can help people better understand complex contracts. It describes how declarative, precise languages can be used to define financial contracts in a way that is machine-readable and automatically verifiable. The author proposes combining a declarative financial language with blockchain technology to allow for trustless execution of contracts. This approach aims to make contracts more understandable to people while maintaining precision and enabling automated reasoning about terms and conditions.
9. Who Gets What and When
Contract defines a set of transactions.
● Who pays whom?
● When?
● Under what conditions?
10. Naive Approach (Imperative)
● Describe how a computer should proceed
● What if we forget a corner case?
● Hard to automatically reason about
“If today is 2018-01-01, send $100 from X to Y”
11. A Better Approach (Declarative)
● Describe what we want to achieve
● Define small set of primitives
● Combine them to define new contracts
15. Questions?
● S. L. Peyton Jones, J-M. Eber
“How to Write a Financial Contract” (2003)
● A. Biryukov, D. Khovratovich, S. Tikhomirov
“Findel: Secure Derivative Contracts for
Ethereum” (2017)
s-tikhomirov.github.io
16. Image Credits
● ING contract photo: Sergei Tikhomirov
● Punch card: Arnold Reinhold
https://commons.wikimedia.org/wiki/File:FortranCardPROJ039.agr.jpg
● XML: Dreftymac https://commons.wikimedia.org/wiki/File:XML.svg
● Moscow City: Kirill Vinokurov
https://www.flickr.com/photos/kvinokurov/14658257525/
● Findel paper photo: Sergei Tikhomirov
● Cryptocurrency Art Gallery
https://www.flickr.com/photos/namecoin/22995486509