> For the complete documentation index, see [llms.txt](https://docs.moduluszk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.moduluszk.io/core-concepts/why-it-occupies-the-contract-slot.md).

# Why it occupies the contract slot

On every other platform, the contract slot is filled by code: an executable object deployed at an address, whose behaviour defines the application. On Modulus the slot is filled by the predicate itself. State is governed by the predicate attached to it, and a transition touching that state is admissible exactly when the predicate is satisfied. The predicate occupies the position the contract occupies elsewhere, and zkFOL proofs occupy the validator slot, standing where execution stands on other chains.&#x20;

This substitution is what makes the artifact count go from two to one. The rule is deployed as itself. There is no compiled form for the rule to disagree with, so the class of failure where the code diverges from the specification has nothing to divide. It also changes who can read a contract. A counterparty does not have to trust a developer's summary of bytecode they cannot audit; the predicate is the terms, and reading the terms is reading the contract.
