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:

0x68fec7a57e48f4ec6467d7e09c27272bd8ca72b312ea553a470b98731475ccf3

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.