expand_less
Ergo Overview



Language Goals
Ergo aims to:

have contracts and clauses as first-class elements of the language
help legal-tech developers quickly and safely write computable legal contracts
be modular, facilitating reuse of existing contract or clause logic
ensure safe execution: the language should prevent run-time errors and non-terminating logic
be blockchain neutral: the same contract logic can be executed either on and off chain on a variety of distributed ledger technologies
be formally specified: the meaning of contracts should be well defined so it can be verified, and preserved during execution
be consistent with the Accord Project Template Specification

Design Choices
To achieve those goals the design of Ergo is based on the following principles:

Ergo contracts have a class-like structure with clauses akin to methods
Ergo can handle types (concepts, transactions, etc) defined with the Concerto Modeling Language (so called CML models), as mandated by the Accord Project Template Specification
Ergo borrows from strongly-typed functional programming languages: clauses have a well-defined type signature (input and output), they are functions without side effects
The compiler guarantees error-free execution for well-typed Ergo programs
Clauses and functions are written in an expression language with limited expressiveness (it allows conditional and bounded iteration)
Most of the compiler is written in Coq as a stepping stone for formal specification and verification