Key Takeaways:
Predicates in FuelVM are stateless authorization programs that answer a simple yes/no question about whether a transaction is permitted to proceed, while scripts are ephemeral execution programs that perform complex operations and then disappear.
FuelVM combines Bitcoin's UTXO model with stateless predicates to enable truly parallel transaction processing, dramatically improving throughput and efficiency. This combination unlocks more complex transactions than Bitcoin could support, while integration with smart contracts allows for building Ethereum-like dApps on Fuel with superior performance.
Unlike traditional smart contracts, FuelVM's scripts execute once and disappear, reducing state bloat while allowing complex transaction orchestration with atomic guarantees.
By treating all assets as first-class citizens in the protocol rather than smart contract entries, Fuel eliminates approval workflows and simplifies asset transfers.
The UTXO model with predicate-based verification allows multiple transactions to be processed simultaneously across available CPU cores, breaking free from the sequential limitations of traditional blockchains.
Complex multi-step operations (like multi-hop swaps and yield farming) can be executed atomically in a single transaction with no intermediate approvals, radically simplifying DeFi user experiences.
Fuel has pioneered a revolutionary approach to blockchain architecture by centering its design on three core components: predicates, scripts, and contracts. By separating security checks (predicates) from transaction orchestration (scripts) and state management (contracts), Fuel has created possibilities that simply don't exist in traditional blockchain systems. Unlike scripts, which are ephemeral and stateless, only contracts can make persistent state changes in the FuelVM. This clean separation of concerns allows for more efficient processing while maintaining the full programmability needed for complex applications.
While today's blockchains struggle with high gas fees, slow confirmations, and complex user experiences, Fuel's architecture tackles these bottlenecks through parallel transaction processing in the FuelVM. Predicates verify transactions before they reach the chain, while scripts orchestrate transaction execution after pre-approval. Scripts themselves don't modify state directly, but they can call contracts which manage persistent storage and state changes.
This powerful combination allows transactions to finalize in milliseconds instead of minutes. It dramatically reduces gas fees and enables smart contracts to compose like LEGO blocks rather than competing for linear block space.
If you've ever waited on a congested chain while juggling multiple signatures, you know the pain. This is precisely where FuelVM's predicates and scripts step in.
Predicates handle spending permissions by acting like "private keys replaced with logic checks." They allow fund transfers if certain conditions are met rather than blindly trusting traditional signatures alone.
Scripts are ephemeral, one-time programs that orchestrate multi-contract operations in a single transaction—no extra overhead, no extra complexity.
Imagine a system where:
Transactions over $10,000 require 3/5 board approvals
Smaller transactions auto-approve instantly
No extra fees for multi-signature checks
In a traditional system, this would require multiple transactions, complex smart contract logic, and high gas fees. With Fuel, a predicate simply checks, "Do we have enough approvals?" while a script executes the final transfer.
FuelVM's UTXO Model & Transaction Paradigm
FuelVM uses a UTXO (Unspent Transaction Output) model instead of an account-based model, which is crucial to understanding how predicates and scripts work together.
UTXO vs. Account Models:
Account Model (Ethereum): Like a bank account with a single balance that increases or decreases
UTXO Model (FuelVM): Like physical cash where each "coin" is a distinct unit that can only be spent once
This UTXO foundation enables:
Parallel Processing: Multiple transactions can validate simultaneously without a shared balance state
Direct Predicate Integration: Spending conditions attach directly to outputs rather than global account states
Traditional System:
Transaction 1 -> Wait -> Transaction 2 -> Wait -> Transaction 3
FuelVM's UTXO System:
Transaction 1 ----→
Transaction 2 ----→ All processing simultaneously
Transaction 3 ----→
This architecture allows predicates to verify specific UTXOs while scripts orchestrate complex transactions by creating new UTXOs with custom conditions—making the entire system more efficient and modular.
Predicates: Stateless Authorization Programs
If you forget everything else about predicates, remember that they are ephemeral validators that answer a single yes/no question, "Is this spend authorized?" and not much else. They store no data and vanish the moment they've done their job. This minimalism is precisely why they are so flexible and lightweight.
Pure Statelessness: Predicates maintain no persistent state, eliminating storage overhead.
Deterministic Behavior: Predicates evaluate based solely on what's in the transaction—the inputs, outputs, and any script hashes. This makes their behavior completely predictable and verifiable.
Compile-Time Safety: Because predicates are written in Sway, the compiler can catch common vulnerabilities like reentrancy attacks at compile-time.
Think of a predicate as a robust, code-based "if statement" gating your funds. For instance, "Only spend if at least 3 of the 5 designated public keys provide a signature." That check is stateless and easy to reason about. Once verified, the transaction can proceed.
While predicates handle transaction authorization through stateless verification, blockchains need to do more than just verify. They also need to execute complex operations. This is where scripts come in, offering a unique approach to on-chain execution.
Unlike persistent smart contracts, scripts are ephemeral programs that execute once per transaction and then disappear, leaving behind only their execution receipts. Scripts can:
Read and modify contract storage
Make calls to multiple contracts
Perform complex calculations using blockchain state
Orchestrate multi-step operations
Let's see how this works in practice with a complex DeFi operation like a multi-hop swap combined with yield farming:
In a single transaction, you might want to do a multi-hop swap across two different DEXs, deposit the resulting tokens into a farming pool, and then (assuming the yield meets your threshold) finish by updating your personal tracking system. With Ethereum's monolithic approach, that can quickly turn into multiple steps and multiple approvals.
With Fuel:
A predicate says, "You're allowed to spend these assets, confirmed by your predetermined logic."
Then a script orchestrates the actual chain calls—swap token A for B on DEX #1, then swap B for C on DEX #2, deposit C into yield aggregator, confirm yields, revert if conditions fail.
All of this happens atomically. If the aggregator yields are subpar, maybe the trade fails, or the pool doesn't look good, everything rewinds with zero side effects. The entire transaction can revert without leaving behind any persistent state changes. There's no possibility of getting stuck in a half-completed state. Meanwhile, you only pay fees once, and you don't need multiple approvals.
When UTXOs and stateless predicates work together, they enable true parallel transaction processing. Unlike traditional blockchains where operations must wait their turn to access shared state, FuelVM predicates can verify different UTXOs independently and simultaneously.
The script and predicate combination creates powerful atomic bundling capabilities. A script can orchestrate complex multi-step operations (like our multi-hop swap example) while predicates ensure all spending conditions are met—all in a single transaction.
This enables previously complex features like gas sponsorship. For example, to let new users mint NFTs for free, a predicate can hold tokens for gas payment while a script runs the NFT mint. If the predicate verifies the user qualifies, everything happens in one seamless transaction.
Fuel's asset model complements the predicate-script architecture by treating all assets as first-class citizens in the protocol. Each asset has a unique AssetId and exists as discrete "coins" in the UTXO model.
This provides two key advantages:
Simpler Transfers: Asset transfers become direct UTXO operations without separate approval steps
Enhanced Security: Ownership is unambiguously tied to specific UTXOs, perfectly complementing predicate-based security checks
FuelVM's predicate and script architecture represents a fundamental rethinking of blockchain transaction processing. By separating authorization (predicates) from execution (scripts) and building on a UTXO foundation, Fuel enables parallel processing, atomic transactions, and simplified asset handling that traditional blockchains struggle to achieve.
This architecture opens new possibilities for developers to build faster, more efficient DeFi protocols, NFT platforms, and cross-chain applications with dramatically improved user experiences.
For more details, visit the Fuel Book.