Pint

Pint is Essential's language for declarative smart contracts.

At its core, Pint is a constraint modelling language similar to MiniZinc and many others. A Pint program is, at the lowest level, a collection of constraints on the solution space for a set of decision variables. Some of these decision variables represent the state of the blockchain at different points in time, allowing the constraints to restrict how the state is allowed to change from one block to the next.

Unlike other general purpose constraint-based programming languages, Pint provides native syntax for reading and constraining blockchain state. This is in addition to a suite of features that would be expected from a modern programming language, such as type safety, user-defined types, extensibility (user-defined macros and libraries), and functional elements (fold, map, etc.), to name but a few.

Pint implements the contract, predicate, and constraint concepts described above to provide an intuitive interface to the logical mechanisms of the protocol. Unlike imperative smart contract languages (which are merely a higher-order representation of a series of opcodes on a specific VM) with declarative Pint contracts, what you see is what you get.

Pint comes with its own extensive documentation, which you can consult here.

Last updated