This package is in alpha.
EasyFL stands for Easy Formula Language or Easy Functional Language. It is a very simple functional programming language. It is extendable, platform-independent, minimalistic and human-readable. The expressions of the language take one of the following forms:
- source form, a human-readable ASCII form
- canonical bytecode form. The canonical bytecode is normally compiled from the source. It is the main form in which EasyFL expressions are stored as part of data structures. Source code and execution form are created from it. Canonical bytecode form is highly compressed and therefore is ideal for inline embedding into the binary data structures.
- internal execution form
Primary use of EasyFL is serialization of bounded data structures, composed at the binary raw byte level together with their validation code. The serialized binary data include EasyFL bytecode, which is an interpretable self-describing definition of finite validity constraints as part of the serialized data structure.
EasyFL was designed with programmability of the UTXO ledger and transactions in mind. The EasyFL validity scripts, being part of transaction outputs (UTXOs), enforce certain, pre-programmed behavior of the transactions which consume them. An example may be signature lock constraint, which, when added to the output, invalidates any transactions which attempts to consume it without providing a valid signature.
The EasyFL programmability may also be seen as a rudimentary form of smart contracts, however in our opinion, the UTXO constraints or UTXO scripts is a better name for it.
Computationally, EasyFL is equivalent to the Bitcoin Script and equivalent models, i.e. its computational model is non-Turing complete. EasyFL can describe validity constraints of static data structures with known bounds, i.e. as circuits.
Non-Turing complete computational model of EasyFL makes it possible automatic proofs and validation of the ledger state transitions constrained by the EasyFL constraints. The constraint-based programmability of the ledger model does not require gas budgets and similar models to put the execution bounds on the program.
Here is a preliminary language presentation of the EasyFL language and Medium series on constraint-based UTXO model .