Icon HelpCircleForumIcon Link

⌘K

Icon HelpCircleForumIcon Link

Icon LinkPredicate Root

Let's pause here for a moment and build the predicate at the root of the predicate folder.

forc build

Unlike building a contract, constructing the predicate generates an additional piece of information: an address that is hashed from the predicate code of your templated project, known as the predicate root. Since this process is cryptographic, any changes to the code will result in a change in the predicate root.

Since everyone is starting with the exact same templated code, the predicate root should be exactly this:

0x1fb163b15211c39bd54e253a99d29130b2d7de06e0eeefdad6fe0dfc355cf5ec

Looking at the predicate, you can immediately notice several differences. There is no ABI or implementation, but simply a main function that returns true or false.

predicate;
 
fn main() -> bool {
    true
}

Notice that we have not "deployed" anything on the Fuel blockchain, yet we already have an address that we can interact with. It is important to remember this:

Icon InfoCircle

Predicates are created, not deployed.