Introduction

Essential is a new paradigm in blockchain design that uses a declarative approach. A Declarative Blockchain specifies state updates directly in a block, which then must pass relevant predefined constraint checks in order to be valid. This is unlike an imperative blockchain which specifies transactions directly in a block, which then are executed to compute a new state.

There are many benefits to this design over traditional blockchains including...

  • No failed transactions
  • Super efficient light clients
  • More capable contract design space
  • Block validity can be randomly sampled

🏗️ Work in Progress...

This book is a work in progress and expected to change frequently. Some details are still in active development and may change significantly.

Core Components

At it's core, Essential is made up of a few major components that help facilitate the updating of state.

Constraint Engine

The Constraint Engine is responsible for determining if state updates are valid or not. This consists of a formal state update definition (Solution), the ability to define constraints (Predicates) and a virtual machine to validate constraints (Virtual Machine).

More about the Constraint Engine

Consensus Mechanism

The Consensus Mechanism is responsible for maintaining the chain of blocks. This consists of a formal block definition (Block) and based optimistic rollup design (Optimistic Rollup).

More about the Consensus Mechanism

Additional Infrastructure

Essential is a single part of a modular blockchain design space intended to redefine the traditional "Execution" layer. Additional modules are an open design space that will evolve over time and have multiple possible implementations. This includes how constraints are programmed, nodes to propagate complete copies of state, how blocks are built, how users create "predicateions" and request solutions from solvers, and much more.

Pint Programming Language

Pint is a programming language for predicate expression using constraints on state transitions on arbitrary blockchain architecture.

More about the Pint Programming Language

User Data

Users are expected to interact with Essential primarily through "user data", although they can also play a more direct role if desired.

More about User Data

Predicate Solvers

Solvers are responsible for taking "input data" from users (user data), completing the input data so a Solution can be created and submitting to the builder.

More about Predicate Solvers

Block Builders

Builders are responsible for building blocks of solutions using some kind of algorithm and possible coordination with solvers. There are many design considerations for how block builders will operate with multiple solutions likely to be adopted in practice.

More about Block Builders

Applications

Applications consist of a structure of constraints over data similar to smart contracts today. This design space is very large and open to many possibilities and design innovations that are only just now being discovered.

More about Application Design

Node

The node has many responsibilities including the ability to sync and derive Layer 2 blocks from Layer 1 events, synchronize state with other nodes, handle fraud notifications, manage deployed contracts, respond to queries, validate constraints, and generate fraud proofs when necessary.

More about the Node Specification