Predicate Network

The collection of Operators, Applications, and Information Providers that support Predicate.

Predicate Function

The smallest unit of work within the Predicate Network, a Predicate Function is a piece of code that takes a set of arguments and returns a boolean value. Predicate Functions are used to define rules for transactions, which can be stacked to form policies.

Predicate Functions are immutable and are stored on Ethereum. They have access to environment variables such as the underlying transaction object, EVM archive nodes, indexed data, and some external APIs.

Policy

An immutable set of qualifiers defined by communities, including developers, DAOs, and organizations, to enforce pre-transaction rules for their onchain applications. Predicate Operators interpret these policies in order to validate transactions that meet the specified criteria.

Developers integrating Predicate create policies, which are represented as JSON objects stored on Ethereum. Policies are implemented using the Policy Expression Language (PEL).

Operators

A network of nodes responsible for attesting that transactions meet their destination protocol’s policy. Predicate Operators are a set of highly reputable entities approved by the Predicate team and network stakeholders.

Predicate currently operates as a permissioned, proof-of-authority network. In the future, the network will transition to a permissionless, proof-of-stake model.

Middleware

Offchain infrastructure maintained by the Predicate team, responsible for broadcasting transactions to Operators and aggregating their signatures. In the future, the Middleware can be run by any individual or entity.

Information Providers

Entities which leverage Predicate as an onchain distribution mechanism for their utility. Their APIs can be referenced within Predicate Functions to be enforced by Operators onchain.

Pre-Transaction Compute

The process of executing custom logic before a transaction is submitted onchain in order to determine its adherence to a policy. This process is executed by the Predicate Network and is transparent to the end user.