Intents

Intents are a primitive for constructing chain state, much like transactions. Intents are not new, but Fabriq uses intents in a novel way to construct applications which can make use of the properties of intents.

Intents at their core concern state transition. Specifically, two parties participate to formulate this state transition. The first party—in our case the user—submits a message of intent to a second party—the solver—to produce a viable state transition or reject. Concretely, for Fabriq, a user will submit an intent through an application UI to be broadcast to a network of solvers to provide optimal routing.

Fabriq replaces transactions with cross-chain intents as the foundational primitive for constructing chain state. Intents—depending on their implementation—form the backbone of a incentive-compatible way of constructing chain state: when users and solvers communicate honestly about their preferences they work collaboratively to produce a state on chain which aligns with both party’s preferences. Applications derive the benefit of incentive compatibility when constructed with intents.

Cross-chain intents add new complexities on a few different fronts: it’s not entirely clear that ETH on chain 1 should be as valuable as ETH on chain 2 and vice versa—while a solver can exchange with you, there is potential finality risk, security risks, etc., that will affect the exchange rate. Atomicity breaks down and several applications depending on atomicity need to be re-envisioned. Solvers add an additional complexity, as solver support for certain chains may not be as robust as others.

To learn more about how Fabriq implements intents, feel free to dive into this documentation.