diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 8c8d028a18..ed7155c5c1 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -17,6 +17,8 @@ RUN curl -s https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gp RUN echo "deb http://apt.llvm.org/${VARIANT}/ llvm-toolchain-${VARIANT}-17 main" | tee /etc/apt/sources.list.d/llvm.list && apt-get update RUN apt-get -y install -t llvm-toolchain-${VARIANT}-17 llvm-17 llvm-17-dev llvm-17-runtime clang-17 clang-tools-17 lld-17 libpolly-17-dev libmlir-17-dev mlir-17-tools +RUN curl -L https://foundry.paradigm.xyz/ | bash && . /root/.bashrc && foundryup + # To build Katana with 'native' feature, we need to set the following environment variables ENV MLIR_SYS_170_PREFIX=/usr/lib/llvm-17 ENV LLVM_SYS_170_PREFIX=/usr/lib/llvm-17 diff --git a/Cargo.lock b/Cargo.lock index 0f79c83c86..a5527378df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3762,6 +3762,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "common" +version = "0.1.0" +source = "git+https://github.com/neotheprogramist/http-prover?rev=05aa9dbb7fdd5618693cead978d4ab0eebbf8f80#05aa9dbb7fdd5618693cead978d4ab0eebbf8f80" +dependencies = [ + "ed25519-dalek", + "prefix-hex", + "serde", + "serde_json", + "serde_with 3.8.1", +] + [[package]] name = "common" version = "0.7.0-alpha.5" @@ -3885,6 +3897,34 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cookie" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387461abbc748185c3a6e1673d826918b450b87ff22639429c694619a83b6cf6" +dependencies = [ + "cookie", + "idna 0.3.0", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -4602,7 +4642,7 @@ dependencies = [ "semver 1.0.23", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "smol_str", "starknet", "test-log", @@ -4663,7 +4703,7 @@ dependencies = [ "scarb-ui", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "smol_str", "starknet", "thiserror", @@ -4714,7 +4754,7 @@ dependencies = [ "scarb", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "similar-asserts", "smol_str", "starknet", @@ -4786,6 +4826,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" dependencies = [ "pkcs8", + "serde", "signature", ] @@ -6459,6 +6500,25 @@ dependencies = [ "tracing", ] +[[package]] +name = "h2" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.2.6", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "half" version = "2.4.1" @@ -6783,7 +6843,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -6806,6 +6866,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", + "h2 0.4.5", "http 1.1.0", "http-body 1.0.0", "httparse", @@ -6914,6 +6975,22 @@ dependencies = [ "tokio-native-tls", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.3.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.3" @@ -6969,6 +7046,16 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "idna" version = "0.4.0" @@ -7780,7 +7867,7 @@ dependencies = [ "cfg-if", "clap", "clap_complete", - "common", + "common 0.7.0-alpha.5", "console", "dojo-metrics", "katana-core", @@ -7866,7 +7953,7 @@ dependencies = [ "reqwest 0.12.4", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "starknet", "starknet_api", "tempfile", @@ -7940,7 +8027,7 @@ dependencies = [ "rayon", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "similar-asserts", "starknet", "starknet-crypto 0.6.2", @@ -8003,7 +8090,7 @@ dependencies = [ "metrics", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "starknet", "starknet_api", "thiserror", @@ -8041,7 +8128,7 @@ dependencies = [ "rstest 0.18.2", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "starknet", "thiserror", ] @@ -10353,6 +10440,15 @@ dependencies = [ "termtree", ] +[[package]] +name = "prefix-hex" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f1799f398371ad6957951ec446d3ff322d35c46d9db2e217b67e828b311c249" +dependencies = [ + "hex", +] + [[package]] name = "pretty_assertions" version = "1.4.0" @@ -10654,6 +10750,45 @@ dependencies = [ "prost 0.12.4", ] +[[package]] +name = "prover-sdk" +version = "0.1.0" +source = "git+https://github.com/neotheprogramist/http-prover?rev=05aa9dbb7fdd5618693cead978d4ab0eebbf8f80#05aa9dbb7fdd5618693cead978d4ab0eebbf8f80" +dependencies = [ + "bytes", + "common 0.1.0", + "ed25519-dalek", + "http 1.1.0", + "hyper-util", + "prefix-hex", + "rand", + "reqwest 0.12.4", + "reqwest_cookie_store", + "serde", + "serde_json", + "serde_with 3.8.1", + "thiserror", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "psl-types" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" + +[[package]] +name = "publicsuffix" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457" +dependencies = [ + "idna 0.3.0", + "psl-types", +] + [[package]] name = "quanta" version = "0.11.1" @@ -10994,12 +11129,12 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.28", "hyper-rustls 0.24.2", - "hyper-tls", + "hyper-tls 0.5.0", "ipnet", "js-sys", "log", @@ -11038,19 +11173,25 @@ checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" dependencies = [ "base64 0.22.1", "bytes", + "cookie", + "cookie_store", + "encoding_rs", "futures-channel", "futures-core", "futures-util", + "h2 0.4.5", "http 1.1.0", "http-body 1.0.0", "http-body-util", "hyper 1.3.1", "hyper-rustls 0.26.0", + "hyper-tls 0.6.0", "hyper-util", "ipnet", "js-sys", "log", "mime", + "native-tls", "once_cell", "percent-encoding", "pin-project-lite", @@ -11061,7 +11202,9 @@ dependencies = [ "serde_json", "serde_urlencoded", "sync_wrapper", + "system-configuration", "tokio", + "tokio-native-tls", "tokio-rustls 0.25.0", "tower-service", "url", @@ -11072,6 +11215,18 @@ dependencies = [ "winreg 0.52.0", ] +[[package]] +name = "reqwest_cookie_store" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ea5c6f30c19d766efe8d823c88f9abd1c56516648a0d4264ab2dc04cc19472" +dependencies = [ + "bytes", + "cookie_store", + "reqwest 0.12.4", + "url", +] + [[package]] name = "resolv-conf" version = "0.7.0" @@ -11661,6 +11816,7 @@ name = "saya" version = "0.7.0-alpha.5" dependencies = [ "anyhow", + "cairo-proof-parser", "clap", "clap_complete", "console", @@ -11669,6 +11825,7 @@ dependencies = [ "katana-rpc-api", "saya-core", "serde_json", + "starknet-crypto 0.6.2", "tokio", "tracing", "tracing-subscriber", @@ -11698,13 +11855,15 @@ dependencies = [ "katana-rpc-types", "lazy_static", "num-bigint", + "num-traits 0.2.19", "parking_lot 0.12.2", + "prover-sdk", "rand", "reqwest 0.12.4", "saya-provider", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "starknet", "starknet-crypto 0.6.2", "starknet-types-core 0.0.9", @@ -11736,7 +11895,7 @@ dependencies = [ "lazy_static", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "starknet", "starknet_api", "thiserror", @@ -11887,6 +12046,20 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "scheduler" +version = "0.7.0-alpha.5" +dependencies = [ + "clap", + "clap_complete", + "katana-primitives", + "saya-core", + "serde", + "serde_json", + "tokio", + "url", +] + [[package]] name = "schemars" version = "0.8.19" @@ -12164,7 +12337,25 @@ dependencies = [ "indexmap 1.9.3", "serde", "serde_json", - "serde_with_macros", + "serde_with_macros 2.3.3", + "time", +] + +[[package]] +name = "serde_with" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.2.6", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros 3.8.1", "time", ] @@ -12180,6 +12371,18 @@ dependencies = [ "syn 2.0.64", ] +[[package]] +name = "serde_with_macros" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +dependencies = [ + "darling 0.20.9", + "proc-macro2", + "quote", + "syn 2.0.64", +] + [[package]] name = "serdect" version = "0.2.0" @@ -12581,13 +12784,14 @@ dependencies = [ "semver 1.0.23", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "smol_str", "snapbox", "starknet", "starknet-crypto 0.6.2", "thiserror", "tokio", + "toml 0.8.13", "tracing", "tracing-log 0.1.4", "url", @@ -12898,7 +13102,7 @@ checksum = "cb3b73d437b4d62241612d13fce612602de6684c149cccf696e76a20757e2156" dependencies = [ "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "starknet-accounts", "starknet-core", "starknet-providers", @@ -12917,7 +13121,7 @@ dependencies = [ "serde", "serde_json", "serde_json_pythonic", - "serde_with", + "serde_with 2.3.3", "sha3", "starknet-crypto 0.6.2", "starknet-ff", @@ -13031,7 +13235,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "serde_with", + "serde_with 2.3.3", "starknet-core", "thiserror", "url", @@ -13759,7 +13963,7 @@ dependencies = [ "axum", "base64 0.21.7", "bytes", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.28", @@ -13874,7 +14078,7 @@ dependencies = [ "camino", "chrono", "clap", - "common", + "common 0.7.0-alpha.5", "ctrlc", "dojo-metrics", "dojo-types", diff --git a/Cargo.toml b/Cargo.toml index 0675d09c79..cec0e4cd65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,7 @@ members = [ "bin/dojo-language-server", "bin/katana", "bin/saya", + "bin/scheduler", "bin/sozo", "bin/torii", "crates/benches", @@ -189,7 +190,6 @@ tower-http = "0.4.4" tracing = "0.1.34" tracing-subscriber = { version = "0.3.16", features = [ "env-filter", "json" ] } url = { version = "2.4.0", features = [ "serde" ] } - rstest = "0.18.2" rstest_reuse = "0.6.0" diff --git a/bin/saya/Cargo.toml b/bin/saya/Cargo.toml index add58c0e63..1021bf1706 100644 --- a/bin/saya/Cargo.toml +++ b/bin/saya/Cargo.toml @@ -20,3 +20,7 @@ tokio.workspace = true tracing-subscriber.workspace = true tracing.workspace = true url.workspace = true + +[dev-dependencies] +cairo-proof-parser.workspace = true +starknet-crypto.workspace = true diff --git a/bin/saya/README.md b/bin/saya/README.md index acdc21d51f..913b6ad039 100644 --- a/bin/saya/README.md +++ b/bin/saya/README.md @@ -1,18 +1,21 @@ - # Saya Executable Documentation This documentation outlines the operation of the Saya executable, a CLI-based service designed to interact with blockchain components for state management and updates. Saya supports operations on Celestia nodes and integrates with Katana blocks to provide a streamlined blockchain interaction process. ## Key Features + - **Celestia Node Integration**: Allows publishing state updates to a Celestia node (WIP). - **Katana Block Fetching**: Saya can fetch blocks from Katana, aiding in local blockchain simulations and testing. ## Prerequisites + Ensure you have the following set up: + - Rust and Cargo installed on your system. - Access to Celestia and/or Katana node URLs if needed. ## Basic Usage Example + Below is a command-line example that demonstrates how to run the Saya executable with necessary parameters: ```bash @@ -21,38 +24,160 @@ cargo run --bin saya -- --rpc-url http://localhost:5050 --da-chain celestia --ce ## Detailed Workflow -### 1. Deploy a New World Contract -First, deploy a new smart contract using the Saya framework: -```bash -cargo run -r -p sozo -- build --manifest-path examples/spawn-and-move/Scarb.toml +1. Prepare fact registry contract + + Declare or use already declared `class-hash`: `0x7f6076572e04d7182a1c5c9f1f4c15aafcb069b1bfdb3de4d7c9e47c99deeb4`. + + Deploy or use already deployed `contract`: `0x217746a5f74c2e5b6fa92c97e902d8cd78b1fabf1e8081c4aa0d2fe159bc0eb`. + + In the repository https://github.com/HerodotusDev/integrity run -cargo run -r -p sozo -- migrate apply --manifest-path examples/spawn-and-move/Scarb.toml --rpc-url <> --fee-estimate-multiplier 1000 --private-key <> --account-address <> --name saya-world-v1 +```bash + fact_registry/1-declare.sh # extract `class-hash` + fact_registry/1-deploy.sh # use at ``` -### 2. Initialize a Local Katana Instance -Start a local instance of Katana configured to work with the newly deployed contract: +2. Spawn world + +You must choose a world's name as you may deploy the exact same code as an other person trying this example. The world's name must fit into 31 characters. + +**IMPORTANT NOTE:** +At the moment until a bug is fixed, you must comment out the `world_address` that is present into the `examples/spawn-and-move/Scarb.toml` file to allow the use of the `--name` flag. + ```bash -cargo run -r -p katana -- -b 30000 --rpc-url <> --fork-block-number +cargo run -r --bin sozo -- \ + build \ + --manifest-path examples/spawn-and-move/Scarb.toml + +cargo run -r --bin sozo -- \ + migrate apply \ + --manifest-path examples/spawn-and-move/Scarb.toml \ + --rpc-url \ + --private-key \ + --account-address \ + --fee-estimate-multiplier 20 \ + --name ``` +Once the migration is done, please take note of the address of the world as it will be re-used in the commands below. + +1. Set world configs -### 3. Launch the Saya Service -Execute the Saya process to interact with the blockchain network: ```bash -cargo run -r --bin saya -- --rpc-url http://localhost:5050 --registry 0x217746a5f74c2e5b6fa92c97e902d8cd78b1fabf1e8081c4aa0d2fe159bc0eb --world <> --start-block <> +cargo run -r --bin sozo -- \ + execute set_differ_program_hash \ + -c 0xa73dd9546f9858577f9fdbe43fd629b6f12dc638652e11b6e29155f4c6328 \ + --manifest-path examples/spawn-and-move/Scarb.toml \ + --rpc-url \ + --private-key \ + --account-address \ + --fee-estimate-multiplier 20 \ + --world \ + --wait + +cargo run -r --bin sozo -- \ + execute set_merger_program_hash \ + -c 0xc105cf2c69201005df3dad0050f5289c53d567d96df890f2142ad43a540334 \ + --manifest-path examples/spawn-and-move/Scarb.toml \ + --rpc-url \ + --private-key \ + --account-address \ + --fee-estimate-multiplier 20 \ + --world \ + --wait + +cargo run -r --bin sozo -- \ + execute set_facts_registry \ + -c 0x217746a5f74c2e5b6fa92c97e902d8cd78b1fabf1e8081c4aa0d2fe159bc0eb \ + --manifest-path examples/spawn-and-move/Scarb.toml \ + --rpc-url \ + --private-key \ + --account-address \ + --fee-estimate-multiplier 20 \ + --world \ + --wait ``` -Currently the Stone prover in use is optimized for AMD64. Hence, running it on a ARM64 machine will be relatively slow or even not compatible if emulation is now available. -If you can't run Saya on a AMD64 machine, you may choose to use the HTTP wrapper currently proposed by Visoft. +4. Start katana + +Start a local instance of Katana configured to work with the newly deployed contract. You should wait your world to be integrated into the latest block (and not the pending). +Once block in which the transaction that deploys the world is mined, you can start `katana` in forking mode. + ```bash -cargo run -r --bin saya -- --rpc-url http://localhost:5050 --prover-url http://prover.visoft.dev:3618/prove/state-diff-commitment --registry 0x217746a5f74c2e5b6fa92c97e902d8cd78b1fabf1e8081c4aa0d2fe159bc0eb --world <> --start-block <> +cargo run -r --bin katana -- \ + --rpc-url \ + --fork-block-number ``` -### 4. Modify the World State Using `sozo` +5. Run transactions on `katana` + Finally, modify the state of the world using specific actions: + +```bash +cargo run -r --bin sozo -- execute dojo_examples::actions::actions spawn \ + --manifest-path examples/spawn-and-move/Scarb.toml \ + --rpc-url http://localhost:5050 \ + --private-key \ + --account-address \ + --world \ + --wait +``` + +Before running `saya`, we can check the actual value for some models on Sepolia, to then see them updated by the proof being verified and the state of the world being updated. +In the `spawn-and-move` example, the `Position` model is used to store some data associated with the player, +being the contract address of the contract that called `spawn` (hence, your account address). +By default on Sepolia, it should be set like to unknown position, being like: + +```bash +cargo run -r --bin sozo -- model get Position \ + --manifest-path examples/spawn-and-move/Scarb.toml \ + --rpc-url \ + --world +``` +```json +// Expected on Sepolia as we've executed the transaction on the Katana shard. +{ + player : , + vec : { + x : 0, + y : 0 + } +} + +// Expected on Katana. +{ + player : , + vec : { + x : 10, + y : 10 + } +} +``` + +6. Run saya + +The could be `http://prover.visoft.dev:3618` if you have a registered key or a link to a self hosted instance of `https://github.com/neotheprogramist/http-prover`. +The is the private key produced by `keygen` installed with `cargo install --git https://github.com/neotheprogramist/http-prover keygen`. Pass the public key to server operator or the prover program. + +If you are on an `amd64` architecture, go ahead and run the `http-prover` locally to see how it works and run this whole pipeline locally. +If not (this includes Apple Silicon), some emulation will take place to run the prover on your machine, and this is very very slow. + +It's important that the `--start-block` of Saya is the first block produced by Katana as for now Katana is not fetching events from the forked network. + +**IMPORTANT NOTE:** +For now, please add your account address and account private key in `saya/core/src/dojo_os/mod.rs` as those parameters are still not exposed currently. As you are using `cargo run`, it will rebuild with your account configuration before running `saya`. + ```bash -cargo run -r -p sozo -- execute --rpc-url http://localhost:5050 --private-key <> --account-address <> --world <> dojo_examples::actions::actions spawn +cargo run -r --bin saya -- \ + --rpc-url http://localhost:5050 \ + --registry \ + --world \ + --url \ + --private-key \ + --start-block ``` After this command, Saya will pick up the blocks with transactions, generate the proof for the state transition, and send it to the base layer world contract. +Once the world on Sepolia is updated, you can issue again the `model get` command as seen before, and you should see the `katana` shard state reflected on Sepolia. + Ensure to replace placeholders (`<>`) with appropriate values for your configuration and environment. This documentation provides a comprehensive overview for developers and operators to effectively utilize the Saya service in blockchain applications. diff --git a/bin/saya/programs/cairo0differ.json b/bin/saya/programs/cairo0differ.json new file mode 100644 index 0000000000..0188ed1f08 --- /dev/null +++ b/bin/saya/programs/cairo0differ.json @@ -0,0 +1 @@ +{ "attributes": [], "builtins": [ "output", "pedersen", "range_check", "bitwise" ], "compiler_version": "0.13.1", "data": [ "0x40780017fff7fff", "0x4", "0x1104800180018000", "0xcc", "0x10780017fff7fff", "0x0", "0x400380007ffb7ffc", "0x400380017ffb7ffd", "0x482680017ffb8000", "0x3", "0x480280027ffb8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x8", "0x480a80047fff8000", "0x480a80057fff8000", "0x480a80067fff8000", "0x480a80077fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe5", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x4", "0x480a80007fff8000", "0x480a80017fff8000", "0x480a80027fff8000", "0x480a80037fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x480a7ffc7fff8000", "0x480280007ffd8000", "0x480280017ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcd", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff2", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbc", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x480a7ffc7fff8000", "0x480280007ffd8000", "0x480280017ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffab", "0x480280027ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa8", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffef", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff97", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x480a7ffc7fff8000", "0x480280007ffd8000", "0x480280017ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff86", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff2", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff75", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x480a7ffc7fff8000", "0x480280007ffd8000", "0x480280017ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff64", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff2", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff53", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x4", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480280007ffc8000", "0x400280007ffb7fff", "0x482680017ffb8000", "0x1", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0xd", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff3d", "0x40137ffc7fff8000", "0x40137ffd7fff8001", "0x40137ffe7fff8002", "0x40137fff7fff8003", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff5d", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7d", "0x40137ffe7fff8004", "0x40137fff7fff8005", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff9e", "0x40137ffe7fff8006", "0x40137fff7fff8007", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbc", "0x40137ffe7fff8008", "0x40137fff7fff8009", "0x480a7ffb7fff8000", "0x480a80007fff8000", "0x480a80017fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff20", "0x480a80027fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1d", "0x480a80037fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1a", "0x48127fdb7fff8000", "0x48127fdb7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff4d", "0x480a80047fff8000", "0x480a80057fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff6e", "0x480a80067fff8000", "0x480a80077fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff8c", "0x480a80087fff8000", "0x480a80097fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffaa", "0x400380007ffa8000", "0x400280017ffa7fff", "0x400380027ffa8001", "0x400380037ffa8002", "0x400380047ffa8003", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff10", "0x48127ff87fff8000", "0x480680017fff8000", "0x0", "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff0e", "0x40137ffe7fff800a", "0x400280057ffa7fff", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1d", "0x40137fff7fff800b", "0x40137ffe7fff800c", "0x400280067ffa7ffd", "0x482680017ffa8000", "0x7", "0x48127ffb7fff8000", "0x48127ffb7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa6", "0x400180007fff800b", "0x482480017fff8000", "0x1", "0x480a800c7fff8000", "0x480a800b7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff9f", "0x480a800a7fff8000", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x208b7fff7fff7ffe" ], "debug_info": { "file_contents": { "": "__start__:\nap += main.Args.SIZE + main.ImplicitArgs.SIZE;\ncall main;\n\n__end__:\njmp rel 0;\n" }, "instruction_locations": { "0": { "accessible_scopes": [ "__main__" ], "flow_tracking_data": { "ap_tracking": { "group": 0, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 46, "end_line": 2, "input_file": { "filename": "" }, "start_col": 1, "start_line": 2 } }, "2": { "accessible_scopes": [ "__main__" ], "flow_tracking_data": { "ap_tracking": { "group": 0, "offset": 4 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 10, "end_line": 3, "input_file": { "filename": "" }, "start_col": 1, "start_line": 3 } }, "4": { "accessible_scopes": [ "__main__" ], "flow_tracking_data": { "ap_tracking": { "group": 1, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 10, "end_line": 6, "input_file": { "filename": "" }, "start_col": 1, "start_line": 6 } }, "6": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 0 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 2, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 19, "end_line": 14, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 5, "start_line": 14 } }, "7": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 0 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 2, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 19, "end_line": 15, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 5, "start_line": 15 } }, "8": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 0 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 4, "starkware.cairo.common.hash.hash2.result": 3, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 47, "end_line": 17, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 13, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "parent_location": [ { "end_col": 28, "end_line": 18, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 5, "start_line": 18 }, "While trying to retrieve the implicit argument 'hash_ptr' in:" ], "start_col": 12, "start_line": 13 }, "While expanding the reference 'hash_ptr' in:" ], "start_col": 20, "start_line": 17 } }, "10": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 1 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 4, "starkware.cairo.common.hash.hash2.result": 3, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 33, "end_line": 16, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 18, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 20, "start_line": 18 }, "While expanding the reference 'result' in:" ], "start_col": 18, "start_line": 16 } }, "11": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 2 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 4, "starkware.cairo.common.hash.hash2.result": 3, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 28, "end_line": 18, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 5, "start_line": 18 } }, "12": { "accessible_scopes": [ "__main__", "__main__.get_hashes" ], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 15, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 15 } }, "14": { "accessible_scopes": [ "__main__", "__main__.get_hashes" ], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 8 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [ { "location": { "end_col": 7, "end_line": 26, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 21 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 26, "end_line": 17, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 29, "input_file": { "filename": "src/differ.cairo" }, "start_col": 29, "start_line": 29 }, "While expanding the reference 'prev_state_root' in:" ], "start_col": 11, "start_line": 17 } }, "15": { "accessible_scopes": [ "__main__", "__main__.get_hashes" ], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 9 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [], "inst": { "end_col": 23, "end_line": 18, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 38, "end_line": 30, "input_file": { "filename": "src/differ.cairo" }, "start_col": 26, "start_line": 30 }, "While expanding the reference 'block_number' in:" ], "start_col": 11, "start_line": 18 } }, "16": { "accessible_scopes": [ "__main__", "__main__.get_hashes" ], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 10 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [], "inst": { "end_col": 21, "end_line": 19, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 31, "input_file": { "filename": "src/differ.cairo" }, "start_col": 24, "start_line": 31 }, "While expanding the reference 'block_hash' in:" ], "start_col": 11, "start_line": 19 } }, "17": { "accessible_scopes": [ "__main__", "__main__.get_hashes" ], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 11 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [], "inst": { "end_col": 22, "end_line": 20, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 36, "end_line": 32, "input_file": { "filename": "src/differ.cairo" }, "start_col": 25, "start_line": 32 }, "While expanding the reference 'config_hash' in:" ], "start_col": 11, "start_line": 20 } }, "18": { "accessible_scopes": [ "__main__", "__main__.get_hashes" ], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 12 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [], "inst": { "end_col": 7, "end_line": 34, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 27 } }, "19": { "accessible_scopes": [ "__main__", "__main__.get_world_da" ], "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 41, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 41 } }, "21": { "accessible_scopes": [ "__main__", "__main__.get_world_da" ], "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 2 }, "reference_ids": { "__main__.get_world_da.world_da": 10, "__main__.get_world_da.world_da_len": 11 } }, "hints": [ { "location": { "end_col": 7, "end_line": 48, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 44 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 19, "end_line": 42, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 51, "input_file": { "filename": "src/differ.cairo" }, "start_col": 18, "start_line": 51 }, "While expanding the reference 'world_da' in:" ], "start_col": 11, "start_line": 42 } }, "22": { "accessible_scopes": [ "__main__", "__main__.get_world_da" ], "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 3 }, "reference_ids": { "__main__.get_world_da.world_da": 10, "__main__.get_world_da.world_da_len": 11 } }, "hints": [], "inst": { "end_col": 23, "end_line": 43, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 52, "input_file": { "filename": "src/differ.cairo" }, "start_col": 22, "start_line": 52 }, "While expanding the reference 'world_da_len' in:" ], "start_col": 11, "start_line": 43 } }, "23": { "accessible_scopes": [ "__main__", "__main__.get_world_da" ], "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 4 }, "reference_ids": { "__main__.get_world_da.world_da": 10, "__main__.get_world_da.world_da_len": 11 } }, "hints": [], "inst": { "end_col": 7, "end_line": 53, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 50 } }, "24": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 7, "end_line": 59, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 59 } }, "26": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 51, "end_line": 56, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 51, "end_line": 56, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 60, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 60 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 25, "start_line": 56 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 25, "start_line": 56 } }, "27": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 1 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 14, "end_line": 57, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 60, "input_file": { "filename": "src/differ.cairo" }, "start_col": 21, "start_line": 60 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 57 } }, "28": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 2 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 26, "end_line": 60, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 60 } }, "29": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 18, "end_line": 62, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 62 } }, "31": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 51, "end_line": 56, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 64, "input_file": { "filename": "src/differ.cairo" }, "start_col": 32, "start_line": 64 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 25, "start_line": 56 } }, "32": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 1 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 14, "end_line": 57, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 65, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 65 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 57 } }, "33": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 2 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 27, "end_line": 63, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 19, "end_line": 65, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 65 }, "While expanding the reference 'value' in:" ], "start_col": 17, "start_line": 63 } }, "34": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 3 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 6, "end_line": 66, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 64 } }, "36": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 7 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 17, "__main__.hash_world_da_loop.res": 18, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 30, "end_line": 69, "input_file": { "filename": "src/differ.cairo" }, "start_col": 18, "start_line": 69 } }, "38": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 8 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 17, "__main__.hash_world_da_loop.res": 18, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 38, "end_line": 70, "input_file": { "filename": "src/differ.cairo" }, "start_col": 22, "start_line": 70 } }, "40": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 9 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 17, "__main__.hash_world_da_loop.res": 18, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 6, "end_line": 71, "input_file": { "filename": "src/differ.cairo" }, "start_col": 12, "start_line": 67 } }, "42": { "accessible_scopes": [ "__main__", "__main__.hash_world_da_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 6, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 19, "__main__.hash_world_da_loop.res": 18, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 7, "end_line": 71, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 67 } }, "43": { "accessible_scopes": [ "__main__", "__main__.get_messages" ], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 80, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 80 } }, "45": { "accessible_scopes": [ "__main__", "__main__.get_messages" ], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 4 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [ { "location": { "end_col": 7, "end_line": 99, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 85 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 38, "end_line": 81, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 64, "end_line": 101, "input_file": { "filename": "src/differ.cairo" }, "start_col": 37, "start_line": 101 }, "While expanding the reference 'message_to_starknet_segment' in:" ], "start_col": 11, "start_line": 81 } }, "46": { "accessible_scopes": [ "__main__", "__main__.get_messages" ], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 5 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [], "inst": { "end_col": 42, "end_line": 82, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 72, "end_line": 102, "input_file": { "filename": "src/differ.cairo" }, "start_col": 41, "start_line": 102 }, "While expanding the reference 'message_to_starknet_segment_len' in:" ], "start_col": 11, "start_line": 82 } }, "47": { "accessible_scopes": [ "__main__", "__main__.get_messages" ], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 6 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [], "inst": { "end_col": 38, "end_line": 83, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 64, "end_line": 103, "input_file": { "filename": "src/differ.cairo" }, "start_col": 37, "start_line": 103 }, "While expanding the reference 'message_to_appchain_segment' in:" ], "start_col": 11, "start_line": 83 } }, "48": { "accessible_scopes": [ "__main__", "__main__.get_messages" ], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 7 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [], "inst": { "end_col": 42, "end_line": 84, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 72, "end_line": 104, "input_file": { "filename": "src/differ.cairo" }, "start_col": 41, "start_line": 104 }, "While expanding the reference 'message_to_appchain_segment_len' in:" ], "start_col": 11, "start_line": 84 } }, "49": { "accessible_scopes": [ "__main__", "__main__.get_messages" ], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 8 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [], "inst": { "end_col": 7, "end_line": 105, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 100 } }, "50": { "accessible_scopes": [ "__main__", "__main__.get_nonce_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 114, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 114 } }, "52": { "accessible_scopes": [ "__main__", "__main__.get_nonce_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 2 }, "reference_ids": { "__main__.get_nonce_updates.nonce_updates": 24, "__main__.get_nonce_updates.nonce_updates_len": 25 } }, "hints": [ { "location": { "end_col": 7, "end_line": 129, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 117 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 24, "end_line": 115, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 40, "end_line": 130, "input_file": { "filename": "src/differ.cairo" }, "start_col": 27, "start_line": 130 }, "While expanding the reference 'nonce_updates' in:" ], "start_col": 11, "start_line": 115 } }, "53": { "accessible_scopes": [ "__main__", "__main__.get_nonce_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 3 }, "reference_ids": { "__main__.get_nonce_updates.nonce_updates": 24, "__main__.get_nonce_updates.nonce_updates_len": 25 } }, "hints": [], "inst": { "end_col": 28, "end_line": 116, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 77, "end_line": 130, "input_file": { "filename": "src/differ.cairo" }, "start_col": 60, "start_line": 130 }, "While expanding the reference 'nonce_updates_len' in:" ], "start_col": 11, "start_line": 116 } }, "54": { "accessible_scopes": [ "__main__", "__main__.get_nonce_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 4 }, "reference_ids": { "__main__.get_nonce_updates.nonce_updates": 24, "__main__.get_nonce_updates.nonce_updates_len": 25 } }, "hints": [], "inst": { "end_col": 79, "end_line": 130, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 130 } }, "55": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_update" ], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 27, "__main__.hash_nonce_update.res": 28 } }, "hints": [], "inst": { "end_col": 50, "end_line": 133, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 137, "input_file": { "filename": "src/differ.cairo" }, "start_col": 32, "start_line": 137 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 24, "start_line": 133 } }, "56": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_update" ], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 1 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 27, "__main__.hash_nonce_update.res": 28 } }, "hints": [], "inst": { "end_col": 44, "end_line": 136, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 138, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 138 }, "While expanding the reference 'res' in:" ], "start_col": 15, "start_line": 136 } }, "57": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_update" ], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 2 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 27, "__main__.hash_nonce_update.res": 28 } }, "hints": [], "inst": { "end_col": 32, "end_line": 138, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 138 } }, "58": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_update" ], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 3 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 27, "__main__.hash_nonce_update.res": 28 } }, "hints": [], "inst": { "end_col": 6, "end_line": 139, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 137 } }, "60": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_update" ], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 7 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 29, "__main__.hash_nonce_update.res": 30 } }, "hints": [], "inst": { "end_col": 22, "end_line": 140, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 140 } }, "61": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 7, "end_line": 146, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 146 } }, "63": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 56, "end_line": 143, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 56, "end_line": 143, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 147, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 147 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 143 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 143 } }, "64": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 1 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 14, "end_line": 144, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 147, "input_file": { "filename": "src/differ.cairo" }, "start_col": 21, "start_line": 147 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 144 } }, "65": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 2 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 26, "end_line": 147, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 147 } }, "66": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 18, "end_line": 149, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 149 } }, "68": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 56, "end_line": 143, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 61, "end_line": 151, "input_file": { "filename": "src/differ.cairo" }, "start_col": 49, "start_line": 151 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 143 } }, "69": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 1 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 39, "end_line": 150, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 75, "end_line": 151, "input_file": { "filename": "src/differ.cairo" }, "start_col": 63, "start_line": 151 }, "While expanding the reference 'nonce_update' in:" ], "start_col": 24, "start_line": 150 } }, "70": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 2 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 76, "end_line": 151, "input_file": { "filename": "src/differ.cairo" }, "start_col": 18, "start_line": 151 } }, "72": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 11 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 36, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 61, "end_line": 151, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 152, "input_file": { "filename": "src/differ.cairo" }, "start_col": 32, "start_line": 152 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 49, "start_line": 151 } }, "73": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 12 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 36, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 14, "end_line": 144, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 153, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 153 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 144 } }, "74": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 13 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 36, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 14, "end_line": 151, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 18, "end_line": 153, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 153 }, "While expanding the reference 'hash' in:" ], "start_col": 10, "start_line": 151 } }, "75": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 14 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 36, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 6, "end_line": 154, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 152 } }, "77": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 18 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 38, "__main__.hash_nonce_updates_loop.res": 39 } }, "hints": [], "inst": { "end_col": 40, "end_line": 157, "input_file": { "filename": "src/differ.cairo" }, "start_col": 23, "start_line": 157 } }, "79": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 19 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 38, "__main__.hash_nonce_updates_loop.res": 39 } }, "hints": [], "inst": { "end_col": 48, "end_line": 158, "input_file": { "filename": "src/differ.cairo" }, "start_col": 27, "start_line": 158 } }, "81": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 20 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 38, "__main__.hash_nonce_updates_loop.res": 39 } }, "hints": [], "inst": { "end_col": 6, "end_line": 159, "input_file": { "filename": "src/differ.cairo" }, "start_col": 12, "start_line": 155 } }, "83": { "accessible_scopes": [ "__main__", "__main__.hash_nonce_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 11, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 40, "__main__.hash_nonce_updates_loop.res": 39 } }, "hints": [], "inst": { "end_col": 7, "end_line": 159, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 155 } }, "84": { "accessible_scopes": [ "__main__", "__main__.get_storage_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 169, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 169 } }, "86": { "accessible_scopes": [ "__main__", "__main__.get_storage_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 2 }, "reference_ids": { "__main__.get_storage_updates.storage_updates": 41, "__main__.get_storage_updates.storage_updates_len": 42 } }, "hints": [ { "location": { "end_col": 7, "end_line": 189, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 172 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 26, "end_line": 170, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 190, "input_file": { "filename": "src/differ.cairo" }, "start_col": 29, "start_line": 190 }, "While expanding the reference 'storage_updates' in:" ], "start_col": 11, "start_line": 170 } }, "87": { "accessible_scopes": [ "__main__", "__main__.get_storage_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 3 }, "reference_ids": { "__main__.get_storage_updates.storage_updates": 41, "__main__.get_storage_updates.storage_updates_len": 42 } }, "hints": [], "inst": { "end_col": 30, "end_line": 171, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 85, "end_line": 190, "input_file": { "filename": "src/differ.cairo" }, "start_col": 66, "start_line": 190 }, "While expanding the reference 'storage_updates_len' in:" ], "start_col": 11, "start_line": 171 } }, "88": { "accessible_scopes": [ "__main__", "__main__.get_storage_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 4 }, "reference_ids": { "__main__.get_storage_updates.storage_updates": 41, "__main__.get_storage_updates.storage_updates_len": 42 } }, "hints": [], "inst": { "end_col": 87, "end_line": 190, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 190 } }, "89": { "accessible_scopes": [ "__main__", "__main__.hash_storage_update" ], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 0 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 44, "__main__.hash_storage_update.res": 45, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 52, "end_line": 193, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 197, "input_file": { "filename": "src/differ.cairo" }, "start_col": 32, "start_line": 197 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 26, "start_line": 193 } }, "90": { "accessible_scopes": [ "__main__", "__main__.hash_storage_update" ], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 1 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 44, "__main__.hash_storage_update.res": 45, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 46, "end_line": 196, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 198, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 198 }, "While expanding the reference 'res' in:" ], "start_col": 15, "start_line": 196 } }, "91": { "accessible_scopes": [ "__main__", "__main__.hash_storage_update" ], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 2 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 44, "__main__.hash_storage_update.res": 45, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 40, "end_line": 198, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 198 } }, "92": { "accessible_scopes": [ "__main__", "__main__.hash_storage_update" ], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 3 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 44, "__main__.hash_storage_update.res": 45, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 6, "end_line": 199, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 197 } }, "94": { "accessible_scopes": [ "__main__", "__main__.hash_storage_update" ], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 7 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 46, "__main__.hash_storage_update.res": 47, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 42, "end_line": 201, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 201 } }, "95": { "accessible_scopes": [ "__main__", "__main__.hash_storage_update" ], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 8 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 46, "__main__.hash_storage_update.res": 47, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 6, "end_line": 202, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 200 } }, "97": { "accessible_scopes": [ "__main__", "__main__.hash_storage_update" ], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 12 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 48, "__main__.hash_storage_update.res": 49, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 22, "end_line": 203, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 203 } }, "98": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 7, "end_line": 209, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 209 } }, "100": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 58, "end_line": 206, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 58, "end_line": 206, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 210, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 210 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 32, "start_line": 206 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 32, "start_line": 206 } }, "101": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 1 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 14, "end_line": 207, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 210, "input_file": { "filename": "src/differ.cairo" }, "start_col": 21, "start_line": 210 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 207 } }, "102": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 2 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 26, "end_line": 210, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 210 } }, "103": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 18, "end_line": 212, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 212 } }, "105": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 58, "end_line": 206, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 63, "end_line": 214, "input_file": { "filename": "src/differ.cairo" }, "start_col": 51, "start_line": 214 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 32, "start_line": 206 } }, "106": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 1 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 43, "end_line": 213, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 79, "end_line": 214, "input_file": { "filename": "src/differ.cairo" }, "start_col": 65, "start_line": 214 }, "While expanding the reference 'storage_update' in:" ], "start_col": 26, "start_line": 213 } }, "107": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 2 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 80, "end_line": 214, "input_file": { "filename": "src/differ.cairo" }, "start_col": 18, "start_line": 214 } }, "109": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 16 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 55, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 63, "end_line": 214, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 215, "input_file": { "filename": "src/differ.cairo" }, "start_col": 32, "start_line": 215 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 51, "start_line": 214 } }, "110": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 17 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 55, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 14, "end_line": 207, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 216, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 216 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 207 } }, "111": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 18 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 55, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 14, "end_line": 214, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 18, "end_line": 216, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 216 }, "While expanding the reference 'hash' in:" ], "start_col": 10, "start_line": 214 } }, "112": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 19 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 55, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 6, "end_line": 217, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 215 } }, "114": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 23 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 57, "__main__.hash_storage_updates_loop.res": 58, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 44, "end_line": 220, "input_file": { "filename": "src/differ.cairo" }, "start_col": 25, "start_line": 220 } }, "116": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 24 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 57, "__main__.hash_storage_updates_loop.res": 58, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 52, "end_line": 221, "input_file": { "filename": "src/differ.cairo" }, "start_col": 29, "start_line": 221 } }, "118": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 25 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 57, "__main__.hash_storage_updates_loop.res": 58, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 6, "end_line": 222, "input_file": { "filename": "src/differ.cairo" }, "start_col": 12, "start_line": 218 } }, "120": { "accessible_scopes": [ "__main__", "__main__.hash_storage_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 15, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 59, "__main__.hash_storage_updates_loop.res": 58, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 7, "end_line": 222, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 218 } }, "121": { "accessible_scopes": [ "__main__", "__main__.get_contract_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 232, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 232 } }, "123": { "accessible_scopes": [ "__main__", "__main__.get_contract_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 2 }, "reference_ids": { "__main__.get_contract_updates.contract_updates": 60, "__main__.get_contract_updates.contract_updates_len": 61 } }, "hints": [ { "location": { "end_col": 7, "end_line": 247, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 235 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 27, "end_line": 233, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 248, "input_file": { "filename": "src/differ.cairo" }, "start_col": 30, "start_line": 248 }, "While expanding the reference 'contract_updates' in:" ], "start_col": 11, "start_line": 233 } }, "124": { "accessible_scopes": [ "__main__", "__main__.get_contract_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 3 }, "reference_ids": { "__main__.get_contract_updates.contract_updates": 60, "__main__.get_contract_updates.contract_updates_len": 61 } }, "hints": [], "inst": { "end_col": 31, "end_line": 234, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 89, "end_line": 248, "input_file": { "filename": "src/differ.cairo" }, "start_col": 69, "start_line": 248 }, "While expanding the reference 'contract_updates_len' in:" ], "start_col": 11, "start_line": 234 } }, "125": { "accessible_scopes": [ "__main__", "__main__.get_contract_updates" ], "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 4 }, "reference_ids": { "__main__.get_contract_updates.contract_updates": 60, "__main__.get_contract_updates.contract_updates_len": 61 } }, "hints": [], "inst": { "end_col": 91, "end_line": 248, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 248 } }, "126": { "accessible_scopes": [ "__main__", "__main__.hash_contract_update" ], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 0 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 63, "__main__.hash_contract_update.res": 64 } }, "hints": [], "inst": { "end_col": 53, "end_line": 251, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 255, "input_file": { "filename": "src/differ.cairo" }, "start_col": 32, "start_line": 255 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 27, "start_line": 251 } }, "127": { "accessible_scopes": [ "__main__", "__main__.hash_contract_update" ], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 1 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 63, "__main__.hash_contract_update.res": 64 } }, "hints": [], "inst": { "end_col": 47, "end_line": 254, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 256, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 256 }, "While expanding the reference 'res' in:" ], "start_col": 15, "start_line": 254 } }, "128": { "accessible_scopes": [ "__main__", "__main__.hash_contract_update" ], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 2 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 63, "__main__.hash_contract_update.res": 64 } }, "hints": [], "inst": { "end_col": 40, "end_line": 256, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 256 } }, "129": { "accessible_scopes": [ "__main__", "__main__.hash_contract_update" ], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 3 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 63, "__main__.hash_contract_update.res": 64 } }, "hints": [], "inst": { "end_col": 6, "end_line": 257, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 255 } }, "131": { "accessible_scopes": [ "__main__", "__main__.hash_contract_update" ], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 7 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 65, "__main__.hash_contract_update.res": 66 } }, "hints": [], "inst": { "end_col": 22, "end_line": 258, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 258 } }, "132": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 7, "end_line": 264, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 264 } }, "134": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 59, "end_line": 261, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 59, "end_line": 261, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 265, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 265 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 261 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 261 } }, "135": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 1 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 14, "end_line": 262, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 265, "input_file": { "filename": "src/differ.cairo" }, "start_col": 21, "start_line": 265 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 262 } }, "136": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 2 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 26, "end_line": 265, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 265 } }, "137": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 18, "end_line": 267, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 267 } }, "139": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 59, "end_line": 261, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 64, "end_line": 269, "input_file": { "filename": "src/differ.cairo" }, "start_col": 52, "start_line": 269 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 261 } }, "140": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 1 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 45, "end_line": 268, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 81, "end_line": 269, "input_file": { "filename": "src/differ.cairo" }, "start_col": 66, "start_line": 269 }, "While expanding the reference 'contract_update' in:" ], "start_col": 27, "start_line": 268 } }, "141": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 2 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 82, "end_line": 269, "input_file": { "filename": "src/differ.cairo" }, "start_col": 18, "start_line": 269 } }, "143": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 11 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 72, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 64, "end_line": 269, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 270, "input_file": { "filename": "src/differ.cairo" }, "start_col": 32, "start_line": 270 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 52, "start_line": 269 } }, "144": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 12 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 72, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 14, "end_line": 262, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 271, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 271 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 262 } }, "145": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 13 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 72, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 14, "end_line": 269, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 18, "end_line": 271, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 271 }, "While expanding the reference 'hash' in:" ], "start_col": 10, "start_line": 269 } }, "146": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 14 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 72, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 6, "end_line": 272, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 270 } }, "148": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 18 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 74, "__main__.hash_contract_updates_loop.res": 75 } }, "hints": [], "inst": { "end_col": 46, "end_line": 275, "input_file": { "filename": "src/differ.cairo" }, "start_col": 26, "start_line": 275 } }, "150": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 19 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 74, "__main__.hash_contract_updates_loop.res": 75 } }, "hints": [], "inst": { "end_col": 54, "end_line": 276, "input_file": { "filename": "src/differ.cairo" }, "start_col": 30, "start_line": 276 } }, "152": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 20 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 74, "__main__.hash_contract_updates_loop.res": 75 } }, "hints": [], "inst": { "end_col": 6, "end_line": 277, "input_file": { "filename": "src/differ.cairo" }, "start_col": 12, "start_line": 273 } }, "154": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 19, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 76, "__main__.hash_contract_updates_loop.res": 75 } }, "hints": [], "inst": { "end_col": 7, "end_line": 277, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 273 } }, "155": { "accessible_scopes": [ "__main__", "__main__.get_declared_classes" ], "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 286, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 286 } }, "157": { "accessible_scopes": [ "__main__", "__main__.get_declared_classes" ], "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 2 }, "reference_ids": { "__main__.get_declared_classes.declared_classes": 77, "__main__.get_declared_classes.declared_classes_len": 78 } }, "hints": [ { "location": { "end_col": 7, "end_line": 301, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 289 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 27, "end_line": 287, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 302, "input_file": { "filename": "src/differ.cairo" }, "start_col": 30, "start_line": 302 }, "While expanding the reference 'declared_classes' in:" ], "start_col": 11, "start_line": 287 } }, "158": { "accessible_scopes": [ "__main__", "__main__.get_declared_classes" ], "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 3 }, "reference_ids": { "__main__.get_declared_classes.declared_classes": 77, "__main__.get_declared_classes.declared_classes_len": 78 } }, "hints": [], "inst": { "end_col": 31, "end_line": 288, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 89, "end_line": 302, "input_file": { "filename": "src/differ.cairo" }, "start_col": 69, "start_line": 302 }, "While expanding the reference 'declared_classes_len' in:" ], "start_col": 11, "start_line": 288 } }, "159": { "accessible_scopes": [ "__main__", "__main__.get_declared_classes" ], "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 4 }, "reference_ids": { "__main__.get_declared_classes.declared_classes": 77, "__main__.get_declared_classes.declared_classes_len": 78 } }, "hints": [], "inst": { "end_col": 91, "end_line": 302, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 302 } }, "160": { "accessible_scopes": [ "__main__", "__main__.hash_declared_class" ], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 0 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 80, "__main__.hash_declared_class.res": 81 } }, "hints": [], "inst": { "end_col": 52, "end_line": 305, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 309, "input_file": { "filename": "src/differ.cairo" }, "start_col": 32, "start_line": 309 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 26, "start_line": 305 } }, "161": { "accessible_scopes": [ "__main__", "__main__.hash_declared_class" ], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 1 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 80, "__main__.hash_declared_class.res": 81 } }, "hints": [], "inst": { "end_col": 40, "end_line": 308, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 310, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 310 }, "While expanding the reference 'res' in:" ], "start_col": 15, "start_line": 308 } }, "162": { "accessible_scopes": [ "__main__", "__main__.hash_declared_class" ], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 2 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 80, "__main__.hash_declared_class.res": 81 } }, "hints": [], "inst": { "end_col": 48, "end_line": 310, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 310 } }, "163": { "accessible_scopes": [ "__main__", "__main__.hash_declared_class" ], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 3 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 80, "__main__.hash_declared_class.res": 81 } }, "hints": [], "inst": { "end_col": 6, "end_line": 311, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 309 } }, "165": { "accessible_scopes": [ "__main__", "__main__.hash_declared_class" ], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 7 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 82, "__main__.hash_declared_class.res": 83 } }, "hints": [], "inst": { "end_col": 22, "end_line": 312, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 312 } }, "166": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 7, "end_line": 318, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 318 } }, "168": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 59, "end_line": 315, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 59, "end_line": 315, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 319, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 319 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 315 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 315 } }, "169": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 1 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 14, "end_line": 316, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 319, "input_file": { "filename": "src/differ.cairo" }, "start_col": 21, "start_line": 319 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 316 } }, "170": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 2 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 26, "end_line": 319, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 319 } }, "171": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 18, "end_line": 321, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 321 } }, "173": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 59, "end_line": 315, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 63, "end_line": 323, "input_file": { "filename": "src/differ.cairo" }, "start_col": 51, "start_line": 323 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 315 } }, "174": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 1 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 44, "end_line": 322, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 79, "end_line": 323, "input_file": { "filename": "src/differ.cairo" }, "start_col": 65, "start_line": 323 }, "While expanding the reference 'declared_class' in:" ], "start_col": 26, "start_line": 322 } }, "175": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 2 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 80, "end_line": 323, "input_file": { "filename": "src/differ.cairo" }, "start_col": 18, "start_line": 323 } }, "177": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 11 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 89, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 63, "end_line": 323, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 324, "input_file": { "filename": "src/differ.cairo" }, "start_col": 32, "start_line": 324 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 51, "start_line": 323 } }, "178": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 12 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 89, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 14, "end_line": 316, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 325, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 325 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 316 } }, "179": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 13 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 89, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 14, "end_line": 323, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 18, "end_line": 325, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 325 }, "While expanding the reference 'hash' in:" ], "start_col": 10, "start_line": 323 } }, "180": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 14 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 89, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 6, "end_line": 326, "input_file": { "filename": "src/differ.cairo" }, "start_col": 17, "start_line": 324 } }, "182": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 18 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 91, "__main__.hash_declared_classes_loop.res": 92 } }, "hints": [], "inst": { "end_col": 46, "end_line": 329, "input_file": { "filename": "src/differ.cairo" }, "start_col": 26, "start_line": 329 } }, "184": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 19 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 91, "__main__.hash_declared_classes_loop.res": 92 } }, "hints": [], "inst": { "end_col": 54, "end_line": 330, "input_file": { "filename": "src/differ.cairo" }, "start_col": 30, "start_line": 330 } }, "186": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 20 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 91, "__main__.hash_declared_classes_loop.res": 92 } }, "hints": [], "inst": { "end_col": 6, "end_line": 331, "input_file": { "filename": "src/differ.cairo" }, "start_col": 12, "start_line": 327 } }, "188": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 23, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 93, "__main__.hash_declared_classes_loop.res": 92 } }, "hints": [], "inst": { "end_col": 7, "end_line": 331, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 327 } }, "189": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 0 }, "reference_ids": { "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 96 } }, "hints": [], "inst": { "end_col": 7, "end_line": 335, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 335 } }, "191": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 0 }, "reference_ids": { "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 96 } }, "hints": [], "inst": { "end_col": 36, "end_line": 334, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 36, "end_line": 334, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 19, "end_line": 336, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 336 }, "While trying to retrieve the implicit argument 'output_ptr' in:" ], "start_col": 19, "start_line": 334 }, "While expanding the reference 'output_ptr' in:" ], "start_col": 19, "start_line": 334 } }, "192": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 1 }, "reference_ids": { "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 96 } }, "hints": [], "inst": { "end_col": 19, "end_line": 336, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 336 } }, "193": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 0 }, "reference_ids": { "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 96 } }, "hints": [], "inst": { "end_col": 18, "end_line": 338, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 338 } }, "195": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 0 }, "reference_ids": { "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 96, "__main__.output_array.value": 97 } }, "hints": [], "inst": { "end_col": 24, "end_line": 339, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 33, "end_line": 340, "input_file": { "filename": "src/differ.cairo" }, "start_col": 28, "start_line": 340 }, "While expanding the reference 'value' in:" ], "start_col": 17, "start_line": 339 } }, "196": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 1 }, "reference_ids": { "__main__.output_array.__temp0": 98, "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 96, "__main__.output_array.value": 97 } }, "hints": [], "inst": { "end_col": 34, "end_line": 340, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 340 } }, "197": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 1 }, "reference_ids": { "__main__.output_array.__temp0": 98, "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 99, "__main__.output_array.value": 97 } }, "hints": [], "inst": { "end_col": 36, "end_line": 341, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 342, "input_file": { "filename": "src/differ.cairo" }, "start_col": 36, "start_line": 342 }, "While expanding the reference 'output_ptr' in:" ], "start_col": 22, "start_line": 341 } }, "199": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 2 }, "reference_ids": { "__main__.output_array.__temp0": 98, "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 99, "__main__.output_array.value": 97 } }, "hints": [], "inst": { "end_col": 57, "end_line": 342, "input_file": { "filename": "src/differ.cairo" }, "start_col": 48, "start_line": 342 } }, "201": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 3 }, "reference_ids": { "__main__.output_array.__temp0": 98, "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 99, "__main__.output_array.value": 97 } }, "hints": [], "inst": { "end_col": 66, "end_line": 342, "input_file": { "filename": "src/differ.cairo" }, "start_col": 59, "start_line": 342 } }, "203": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 4 }, "reference_ids": { "__main__.output_array.__temp0": 98, "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 99, "__main__.output_array.value": 97 } }, "hints": [], "inst": { "end_col": 67, "end_line": 342, "input_file": { "filename": "src/differ.cairo" }, "start_col": 12, "start_line": 342 } }, "205": { "accessible_scopes": [ "__main__", "__main__.output_array" ], "flow_tracking_data": { "ap_tracking": { "group": 25, "offset": 0 }, "reference_ids": { "__main__.output_array.__temp0": 98, "__main__.output_array.array": 94, "__main__.output_array.len": 95, "__main__.output_array.output_ptr": 100, "__main__.output_array.value": 97 } }, "hints": [], "inst": { "end_col": 68, "end_line": 342, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 342 } }, "206": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103 } }, "hints": [], "inst": { "end_col": 18, "end_line": 346, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 346 } }, "208": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 13 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103 } }, "hints": [], "inst": { "end_col": 21, "end_line": 350, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 350 } }, "210": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 27 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.input_config": 105, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103 } }, "hints": [], "inst": { "end_col": 34, "end_line": 349, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 349, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 349 }, "While auto generating local variable for 'input_config'." ], "start_col": 9, "start_line": 349 } }, "211": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 27 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.input_config": 105, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103 } }, "hints": [], "inst": { "end_col": 34, "end_line": 349, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 349, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 349 }, "While auto generating local variable for 'input_config'." ], "start_col": 9, "start_line": 349 } }, "212": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 27 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.input_config": 105, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103 } }, "hints": [], "inst": { "end_col": 34, "end_line": 349, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 349, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 349 }, "While auto generating local variable for 'input_config'." ], "start_col": 9, "start_line": 349 } }, "213": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 27 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.input_config": 105, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103 } }, "hints": [], "inst": { "end_col": 34, "end_line": 349, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 349, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 349 }, "While auto generating local variable for 'input_config'." ], "start_col": 9, "start_line": 349 } }, "214": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 27 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.input_config": 106, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103 } }, "hints": [], "inst": { "end_col": 28, "end_line": 354, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 354 } }, "216": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 33 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103 } }, "hints": [], "inst": { "end_col": 30, "end_line": 358, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 358 } }, "218": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 39 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 109, "__main__.main.storage_updates_len": 110 } }, "hints": [], "inst": { "end_col": 41, "end_line": 356, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 41, "end_line": 356, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 356 }, "While auto generating local variable for 'storage_updates'." ], "start_col": 9, "start_line": 356 } }, "219": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 39 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 110 } }, "hints": [], "inst": { "end_col": 34, "end_line": 357, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 357, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 357 }, "While auto generating local variable for 'storage_updates_len'." ], "start_col": 9, "start_line": 357 } }, "220": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 39 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 31, "end_line": 362, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 362 } }, "222": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 45 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 113, "__main__.main.contract_updates_len": 114, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 43, "end_line": 360, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 43, "end_line": 360, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 360 }, "While auto generating local variable for 'contract_updates'." ], "start_col": 9, "start_line": 360 } }, "223": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 45 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 114, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 35, "end_line": 361, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 35, "end_line": 361, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 361 }, "While auto generating local variable for 'contract_updates_len'." ], "start_col": 9, "start_line": 361 } }, "224": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 45 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 31, "end_line": 366, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 366 } }, "226": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 51 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 117, "__main__.main.declared_classes_len": 118, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 42, "end_line": 364, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 42, "end_line": 364, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 364 }, "While auto generating local variable for 'declared_classes'." ], "start_col": 9, "start_line": 364 } }, "227": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 51 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 118, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 35, "end_line": 365, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 35, "end_line": 365, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 365 }, "While auto generating local variable for 'declared_classes_len'." ], "start_col": 9, "start_line": 365 } }, "228": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 51 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 56, "end_line": 345, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 43, "end_line": 368, "input_file": { "filename": "src/differ.cairo" }, "start_col": 31, "start_line": 368 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 345 } }, "229": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 52 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 37, "end_line": 369, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 369 } }, "230": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 53 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 64, "end_line": 369, "input_file": { "filename": "src/differ.cairo" }, "start_col": 39, "start_line": 369 } }, "231": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 54 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 102, "__main__.main.range_check_ptr": 103, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 6, "end_line": 370, "input_file": { "filename": "src/differ.cairo" }, "start_col": 16, "start_line": 368 } }, "233": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 58 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 121, "__main__.main.range_check_ptr": 103, "__main__.main.res": 122, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 37, "end_line": 372, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 372 } }, "234": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 59 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 121, "__main__.main.range_check_ptr": 103, "__main__.main.res": 122, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 6, "end_line": 373, "input_file": { "filename": "src/differ.cairo" }, "start_col": 16, "start_line": 371 } }, "236": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 63 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 123, "__main__.main.range_check_ptr": 103, "__main__.main.res": 124, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 38, "end_line": 375, "input_file": { "filename": "src/differ.cairo" }, "start_col": 14, "start_line": 375 } }, "237": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 64 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 123, "__main__.main.range_check_ptr": 103, "__main__.main.res": 124, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 6, "end_line": 376, "input_file": { "filename": "src/differ.cairo" }, "start_col": 16, "start_line": 374 } }, "239": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 68 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 125, "__main__.main.range_check_ptr": 103, "__main__.main.res": 126, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 37, "end_line": 352, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 22, "end_line": 379, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 379 }, "While expanding the reference 'nonce_updates' in:" ], "start_col": 9, "start_line": 352 } }, "240": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 69 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 125, "__main__.main.range_check_ptr": 103, "__main__.main.res": 126, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 32, "end_line": 353, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 380, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 380 }, "While expanding the reference 'nonce_updates_len' in:" ], "start_col": 9, "start_line": 353 } }, "241": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 70 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 125, "__main__.main.range_check_ptr": 103, "__main__.main.res": 126, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 6, "end_line": 381, "input_file": { "filename": "src/differ.cairo" }, "start_col": 16, "start_line": 377 } }, "243": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 127, "__main__.main.range_check_ptr": 103, "__main__.main.res": 128, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 41, "end_line": 356, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 41, "end_line": 356, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 384, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 384 }, "While expanding the reference 'storage_updates' in:" ], "start_col": 9, "start_line": 356 }, "While auto generating local variable for 'storage_updates'." ], "start_col": 9, "start_line": 356 } }, "244": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 1 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 127, "__main__.main.range_check_ptr": 103, "__main__.main.res": 128, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 34, "end_line": 357, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 357, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 28, "end_line": 385, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 385 }, "While expanding the reference 'storage_updates_len' in:" ], "start_col": 9, "start_line": 357 }, "While auto generating local variable for 'storage_updates_len'." ], "start_col": 9, "start_line": 357 } }, "245": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 2 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 127, "__main__.main.range_check_ptr": 103, "__main__.main.res": 128, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 6, "end_line": 386, "input_file": { "filename": "src/differ.cairo" }, "start_col": 16, "start_line": 382 } }, "247": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 28, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 129, "__main__.main.range_check_ptr": 103, "__main__.main.res": 130, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 43, "end_line": 360, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 43, "end_line": 360, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 25, "end_line": 389, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 389 }, "While expanding the reference 'contract_updates' in:" ], "start_col": 9, "start_line": 360 }, "While auto generating local variable for 'contract_updates'." ], "start_col": 9, "start_line": 360 } }, "248": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 28, "offset": 1 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 129, "__main__.main.range_check_ptr": 103, "__main__.main.res": 130, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 35, "end_line": 361, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 35, "end_line": 361, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 29, "end_line": 390, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 390 }, "While expanding the reference 'contract_updates_len' in:" ], "start_col": 9, "start_line": 361 }, "While auto generating local variable for 'contract_updates_len'." ], "start_col": 9, "start_line": 361 } }, "249": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 28, "offset": 2 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 129, "__main__.main.range_check_ptr": 103, "__main__.main.res": 130, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 6, "end_line": 391, "input_file": { "filename": "src/differ.cairo" }, "start_col": 16, "start_line": 387 } }, "251": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 131, "__main__.main.range_check_ptr": 103, "__main__.main.res": 132, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 42, "end_line": 364, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 42, "end_line": 364, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 25, "end_line": 394, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 394 }, "While expanding the reference 'declared_classes' in:" ], "start_col": 9, "start_line": 364 }, "While auto generating local variable for 'declared_classes'." ], "start_col": 9, "start_line": 364 } }, "252": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 1 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 131, "__main__.main.range_check_ptr": 103, "__main__.main.res": 132, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 35, "end_line": 365, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 35, "end_line": 365, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 29, "end_line": 395, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 395 }, "While expanding the reference 'declared_classes_len' in:" ], "start_col": 9, "start_line": 365 }, "While auto generating local variable for 'declared_classes_len'." ], "start_col": 9, "start_line": 365 } }, "253": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 2 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 131, "__main__.main.range_check_ptr": 103, "__main__.main.res": 132, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 6, "end_line": 396, "input_file": { "filename": "src/differ.cairo" }, "start_col": 16, "start_line": 392 } }, "255": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 57, "end_line": 398, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 398 } }, "256": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 32, "end_line": 399, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 399 } }, "257": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 54, "end_line": 400, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 400 } }, "258": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 52, "end_line": 401, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 401 } }, "259": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 53, "end_line": 402, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 402 } }, "260": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112 } }, "hints": [], "inst": { "end_col": 63, "end_line": 404, "input_file": { "filename": "src/differ.cairo" }, "start_col": 49, "start_line": 404 } }, "262": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 6 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 137, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 68, "end_line": 392, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 71, "end_line": 406, "input_file": { "filename": "src/differ.cairo" }, "start_col": 59, "start_line": 406 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 56, "start_line": 392 } }, "263": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 7 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 137, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 26, "end_line": 405, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 22, "end_line": 407, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 407 }, "While expanding the reference 'world_da_hash' in:" ], "start_col": 25, "start_line": 405 } }, "265": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 8 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 137, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 25, "end_line": 404, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 32, "end_line": 407, "input_file": { "filename": "src/differ.cairo" }, "start_col": 24, "start_line": 407 }, "While expanding the reference 'world_da' in:" ], "start_col": 10, "start_line": 404 } }, "266": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 9 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 137, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 45, "end_line": 404, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 407, "input_file": { "filename": "src/differ.cairo" }, "start_col": 34, "start_line": 407 }, "While expanding the reference 'world_da_len' in:" ], "start_col": 27, "start_line": 404 } }, "267": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 10 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 133, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 137, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 6, "end_line": 408, "input_file": { "filename": "src/differ.cairo" }, "start_col": 27, "start_line": 406 } }, "269": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 138, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 71, "end_line": 406, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 71, "end_line": 406, "input_file": { "filename": "src/differ.cairo" }, "start_col": 59, "start_line": 406 }, "While auto generating local variable for 'pedersen_ptr'." ], "start_col": 59, "start_line": 406 } }, "270": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 101, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 42, "end_line": 410, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 410 } }, "271": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 141, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 23, "end_line": 419, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 419 } }, "273": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 10 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 144, "__main__.main.message_to_appchain_segment_len": 145, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 141, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 46, "end_line": 418, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 418, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 418 }, "While auto generating local variable for 'message_to_appchain_segment_len'." ], "start_col": 9, "start_line": 418 } }, "274": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 10 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 144, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 141, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 43, "end_line": 417, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 43, "end_line": 417, "input_file": { "filename": "src/differ.cairo" }, "start_col": 9, "start_line": 417 }, "While auto generating local variable for 'message_to_appchain_segment'." ], "start_col": 9, "start_line": 417 } }, "275": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 10 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 141, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 60, "end_line": 421, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 421 } }, "276": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 10 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 148, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 36, "end_line": 422, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 39, "end_line": 423, "input_file": { "filename": "src/differ.cairo" }, "start_col": 29, "start_line": 423 }, "While expanding the reference 'output_ptr' in:" ], "start_col": 22, "start_line": 422 } }, "278": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 11 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 148, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 43, "end_line": 415, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 68, "end_line": 423, "input_file": { "filename": "src/differ.cairo" }, "start_col": 41, "start_line": 423 }, "While expanding the reference 'message_to_starknet_segment' in:" ], "start_col": 9, "start_line": 415 } }, "279": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 12 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 148, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 46, "end_line": 416, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 101, "end_line": 423, "input_file": { "filename": "src/differ.cairo" }, "start_col": 70, "start_line": 423 }, "While expanding the reference 'message_to_starknet_segment_len' in:" ], "start_col": 9, "start_line": 416 } }, "280": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 13 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 148, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 102, "end_line": 423, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 423 } }, "282": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 32, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 149, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 60, "end_line": 424, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 424 } }, "283": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 32, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 150, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 36, "end_line": 425, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 39, "end_line": 426, "input_file": { "filename": "src/differ.cairo" }, "start_col": 29, "start_line": 426 }, "While expanding the reference 'output_ptr' in:" ], "start_col": 22, "start_line": 425 } }, "285": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 32, "offset": 1 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 150, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 43, "end_line": 417, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 43, "end_line": 417, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 68, "end_line": 426, "input_file": { "filename": "src/differ.cairo" }, "start_col": 41, "start_line": 426 }, "While expanding the reference 'message_to_appchain_segment' in:" ], "start_col": 9, "start_line": 417 }, "While auto generating local variable for 'message_to_appchain_segment'." ], "start_col": 9, "start_line": 417 } }, "286": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 32, "offset": 2 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 150, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 46, "end_line": 418, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 418, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 101, "end_line": 426, "input_file": { "filename": "src/differ.cairo" }, "start_col": 70, "start_line": 426 }, "While expanding the reference 'message_to_appchain_segment_len' in:" ], "start_col": 9, "start_line": 418 }, "While auto generating local variable for 'message_to_appchain_segment_len'." ], "start_col": 9, "start_line": 418 } }, "287": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 32, "offset": 3 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 150, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 102, "end_line": 426, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 426 } }, "289": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 151, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 71, "end_line": 406, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 71, "end_line": 406, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 56, "end_line": 345, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 15, "end_line": 428, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 428 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 345 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 59, "start_line": 406 }, "While auto generating local variable for 'pedersen_ptr'." ], "start_col": 59, "start_line": 406 } }, "290": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 1 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 151, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 79, "end_line": 345, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 79, "end_line": 345, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 15, "end_line": 428, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 428 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], "start_col": 58, "start_line": 345 }, "While expanding the reference 'range_check_ptr' in:" ], "start_col": 58, "start_line": 345 } }, "291": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 2 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 151, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 99, "end_line": 345, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 99, "end_line": 345, "input_file": { "filename": "src/differ.cairo" }, "parent_location": [ { "end_col": 15, "end_line": 428, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 428 }, "While trying to retrieve the implicit argument 'bitwise_ptr' in:" ], "start_col": 81, "start_line": 345 }, "While expanding the reference 'bitwise_ptr' in:" ], "start_col": 81, "start_line": 345 } }, "292": { "accessible_scopes": [ "__main__", "__main__.main" ], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 3 }, "reference_ids": { "__main__.main.bitwise_ptr": 104, "__main__.main.contract_updates": 115, "__main__.main.contract_updates_len": 116, "__main__.main.declared_classes": 119, "__main__.main.declared_classes_len": 120, "__main__.main.input_config": 106, "__main__.main.message_to_appchain_segment": 147, "__main__.main.message_to_appchain_segment_len": 146, "__main__.main.message_to_starknet_segment": 142, "__main__.main.message_to_starknet_segment_len": 143, "__main__.main.nonce_updates": 107, "__main__.main.nonce_updates_len": 108, "__main__.main.output_ptr": 151, "__main__.main.pedersen_ptr": 140, "__main__.main.range_check_ptr": 103, "__main__.main.res": 134, "__main__.main.storage_updates": 111, "__main__.main.storage_updates_len": 112, "__main__.main.world_da": 135, "__main__.main.world_da_hash": 139, "__main__.main.world_da_len": 136 } }, "hints": [], "inst": { "end_col": 15, "end_line": 428, "input_file": { "filename": "src/differ.cairo" }, "start_col": 5, "start_line": 428 } } } }, "hints": { "14": [ { "accessible_scopes": [ "__main__", "__main__.get_hashes" ], "code": "ids.prev_state_root = int(program_input[\"prev_state_root\"])\nids.block_number = int(program_input[\"block_number\"])\nids.block_hash = int(program_input[\"block_hash\"])\nids.config_hash = int(program_input[\"config_hash\"])", "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 8 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } } } ], "21": [ { "accessible_scopes": [ "__main__", "__main__.get_world_da" ], "code": "world_da = [int(wd) for wd in program_input[\"world_da\"]]\nids.world_da = segments.gen_arg(world_da)\nids.world_da_len = len(world_da)", "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 2 }, "reference_ids": { "__main__.get_world_da.world_da": 10, "__main__.get_world_da.world_da_len": 11 } } } ], "45": [ { "accessible_scopes": [ "__main__", "__main__.get_messages" ], "code": "message_to_starknet_segment = \\\n [int(x) for x in program_input[\"message_to_starknet_segment\"]]\nmessage_to_appchain_segment = \\\n[int(x) for x in program_input[\"message_to_appchain_segment\"]]\n\nids.message_to_starknet_segment = \\\n segments.gen_arg(message_to_starknet_segment)\nids.message_to_starknet_segment_len = \\\n len(message_to_starknet_segment)\nids.message_to_appchain_segment = \\\n segments.gen_arg(message_to_appchain_segment)\nids.message_to_appchain_segment_len = \\\n len(message_to_appchain_segment)", "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 4 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } } } ], "52": [ { "accessible_scopes": [ "__main__", "__main__.get_nonce_updates" ], "code": "program_input_nonce_updates = program_input[\"nonce_updates\"]\n\nnonce_updates = [\n (\n int(key),\n int(value),\n )\n for key, value in program_input_nonce_updates.items()\n]\nids.nonce_updates = segments.gen_arg(nonce_updates)\nids.nonce_updates_len = len(nonce_updates)", "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 2 }, "reference_ids": { "__main__.get_nonce_updates.nonce_updates": 24, "__main__.get_nonce_updates.nonce_updates_len": 25 } } } ], "86": [ { "accessible_scopes": [ "__main__", "__main__.get_storage_updates" ], "code": "program_input_storage_updates = program_input[\"storage_updates\"]\n\nstorage_updates = [\n (\n int(contract),\n int(key),\n int(value),\n )\n for \n contract, update in \n program_input_storage_updates.items() \n for \n key, value in update.items()\n]\nids.storage_updates = segments.gen_arg(storage_updates)\nids.storage_updates_len = len(storage_updates)", "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 2 }, "reference_ids": { "__main__.get_storage_updates.storage_updates": 41, "__main__.get_storage_updates.storage_updates_len": 42 } } } ], "123": [ { "accessible_scopes": [ "__main__", "__main__.get_contract_updates" ], "code": "program_input_contract_updates = program_input[\"contract_updates\"]\n\ncontract_updates = [\n (\n int(key),\n int(value),\n )\n for key, value in program_input_contract_updates.items()\n]\nids.contract_updates = segments.gen_arg(contract_updates)\nids.contract_updates_len = len(contract_updates)", "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 2 }, "reference_ids": { "__main__.get_contract_updates.contract_updates": 60, "__main__.get_contract_updates.contract_updates_len": 61 } } } ], "157": [ { "accessible_scopes": [ "__main__", "__main__.get_declared_classes" ], "code": "program_input_declared_classes = program_input[\"declared_classes\"]\n\ndeclared_classes = [\n (\n int(key),\n int(value),\n )\n for key, value in program_input_declared_classes.items()\n]\nids.declared_classes = segments.gen_arg(declared_classes)\nids.declared_classes_len = len(declared_classes)", "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 2 }, "reference_ids": { "__main__.get_declared_classes.declared_classes": 77, "__main__.get_declared_classes.declared_classes_len": 78 } } } ] }, "identifiers": { "__main__.ContractUpdate": { "full_name": "__main__.ContractUpdate", "members": { "class_hash": { "cairo_type": "felt", "offset": 1 }, "contract_address": { "cairo_type": "felt", "offset": 0 } }, "size": 2, "type": "struct" }, "__main__.DeclaredClass": { "full_name": "__main__.DeclaredClass", "members": { "class_hash": { "cairo_type": "felt", "offset": 0 }, "compiled_class_hash": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "__main__.HashBuiltin": { "destination": "starkware.cairo.common.cairo_builtins.HashBuiltin", "type": "alias" }, "__main__.InputConfig": { "full_name": "__main__.InputConfig", "members": { "block_hash": { "cairo_type": "felt", "offset": 2 }, "block_number": { "cairo_type": "felt", "offset": 1 }, "config_hash": { "cairo_type": "felt", "offset": 3 }, "prev_state_root": { "cairo_type": "felt", "offset": 0 } }, "size": 4, "type": "struct" }, "__main__.NonceUpdate": { "full_name": "__main__.NonceUpdate", "members": { "contract_address": { "cairo_type": "felt", "offset": 0 }, "nonce": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "__main__.StorageUpdate": { "full_name": "__main__.StorageUpdate", "members": { "contract_address": { "cairo_type": "felt", "offset": 0 }, "storage_key": { "cairo_type": "felt", "offset": 1 }, "storage_value": { "cairo_type": "felt", "offset": 2 } }, "size": 3, "type": "struct" }, "__main__.__end__": { "pc": 4, "type": "label" }, "__main__.__start__": { "pc": 0, "type": "label" }, "__main__.get_contract_updates": { "decorators": [], "pc": 121, "type": "function" }, "__main__.get_contract_updates.Args": { "full_name": "__main__.get_contract_updates.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_contract_updates.ImplicitArgs": { "full_name": "__main__.get_contract_updates.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_contract_updates.Return": { "cairo_type": "(contract_updates: __main__.ContractUpdate**, contract_updates_len: felt)", "type": "type_definition" }, "__main__.get_contract_updates.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_contract_updates.contract_updates": { "cairo_type": "__main__.ContractUpdate**", "full_name": "__main__.get_contract_updates.contract_updates", "references": [ { "ap_tracking_data": { "group": 16, "offset": 2 }, "pc": 123, "value": "[cast(fp, __main__.ContractUpdate***)]" } ], "type": "reference" }, "__main__.get_contract_updates.contract_updates_len": { "cairo_type": "felt", "full_name": "__main__.get_contract_updates.contract_updates_len", "references": [ { "ap_tracking_data": { "group": 16, "offset": 2 }, "pc": 123, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_declared_classes": { "decorators": [], "pc": 155, "type": "function" }, "__main__.get_declared_classes.Args": { "full_name": "__main__.get_declared_classes.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_declared_classes.ImplicitArgs": { "full_name": "__main__.get_declared_classes.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_declared_classes.Return": { "cairo_type": "(declared_classes: __main__.DeclaredClass**, declared_classes_len: felt)", "type": "type_definition" }, "__main__.get_declared_classes.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_declared_classes.declared_classes": { "cairo_type": "__main__.DeclaredClass**", "full_name": "__main__.get_declared_classes.declared_classes", "references": [ { "ap_tracking_data": { "group": 20, "offset": 2 }, "pc": 157, "value": "[cast(fp, __main__.DeclaredClass***)]" } ], "type": "reference" }, "__main__.get_declared_classes.declared_classes_len": { "cairo_type": "felt", "full_name": "__main__.get_declared_classes.declared_classes_len", "references": [ { "ap_tracking_data": { "group": 20, "offset": 2 }, "pc": 157, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_hashes": { "decorators": [], "pc": 12, "type": "function" }, "__main__.get_hashes.Args": { "full_name": "__main__.get_hashes.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_hashes.ImplicitArgs": { "full_name": "__main__.get_hashes.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_hashes.Return": { "cairo_type": "(input_config: __main__.InputConfig)", "type": "type_definition" }, "__main__.get_hashes.SIZEOF_LOCALS": { "type": "const", "value": 8 }, "__main__.get_hashes.block_hash": { "cairo_type": "felt", "full_name": "__main__.get_hashes.block_hash", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 6, felt*)]" } ], "type": "reference" }, "__main__.get_hashes.block_number": { "cairo_type": "felt", "full_name": "__main__.get_hashes.block_number", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 5, felt*)]" } ], "type": "reference" }, "__main__.get_hashes.config_hash": { "cairo_type": "felt", "full_name": "__main__.get_hashes.config_hash", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 7, felt*)]" } ], "type": "reference" }, "__main__.get_hashes.input_config": { "cairo_type": "__main__.InputConfig", "full_name": "__main__.get_hashes.input_config", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp, __main__.InputConfig*)]" } ], "type": "reference" }, "__main__.get_hashes.prev_state_root": { "cairo_type": "felt", "full_name": "__main__.get_hashes.prev_state_root", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 4, felt*)]" } ], "type": "reference" }, "__main__.get_messages": { "decorators": [], "pc": 43, "type": "function" }, "__main__.get_messages.Args": { "full_name": "__main__.get_messages.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_messages.ImplicitArgs": { "full_name": "__main__.get_messages.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_messages.Return": { "cairo_type": "(message_to_starknet_segment: felt*, message_to_starknet_segment_len: felt, message_to_appchain_segment: felt*, message_to_appchain_segment_len: felt)", "type": "type_definition" }, "__main__.get_messages.SIZEOF_LOCALS": { "type": "const", "value": 4 }, "__main__.get_messages.message_to_appchain_segment": { "cairo_type": "felt*", "full_name": "__main__.get_messages.message_to_appchain_segment", "references": [ { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 2, felt**)]" } ], "type": "reference" }, "__main__.get_messages.message_to_appchain_segment_len": { "cairo_type": "felt", "full_name": "__main__.get_messages.message_to_appchain_segment_len", "references": [ { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 3, felt*)]" } ], "type": "reference" }, "__main__.get_messages.message_to_starknet_segment": { "cairo_type": "felt*", "full_name": "__main__.get_messages.message_to_starknet_segment", "references": [ { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp, felt**)]" } ], "type": "reference" }, "__main__.get_messages.message_to_starknet_segment_len": { "cairo_type": "felt", "full_name": "__main__.get_messages.message_to_starknet_segment_len", "references": [ { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_nonce_updates": { "decorators": [], "pc": 50, "type": "function" }, "__main__.get_nonce_updates.Args": { "full_name": "__main__.get_nonce_updates.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_nonce_updates.ImplicitArgs": { "full_name": "__main__.get_nonce_updates.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_nonce_updates.Return": { "cairo_type": "(nonce_updates: __main__.NonceUpdate**, nonce_updates_len: felt)", "type": "type_definition" }, "__main__.get_nonce_updates.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_nonce_updates.nonce_updates": { "cairo_type": "__main__.NonceUpdate**", "full_name": "__main__.get_nonce_updates.nonce_updates", "references": [ { "ap_tracking_data": { "group": 8, "offset": 2 }, "pc": 52, "value": "[cast(fp, __main__.NonceUpdate***)]" } ], "type": "reference" }, "__main__.get_nonce_updates.nonce_updates_len": { "cairo_type": "felt", "full_name": "__main__.get_nonce_updates.nonce_updates_len", "references": [ { "ap_tracking_data": { "group": 8, "offset": 2 }, "pc": 52, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_storage_updates": { "decorators": [], "pc": 84, "type": "function" }, "__main__.get_storage_updates.Args": { "full_name": "__main__.get_storage_updates.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_storage_updates.ImplicitArgs": { "full_name": "__main__.get_storage_updates.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_storage_updates.Return": { "cairo_type": "(storage_updates: __main__.StorageUpdate**, storage_updates_len: felt)", "type": "type_definition" }, "__main__.get_storage_updates.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_storage_updates.storage_updates": { "cairo_type": "__main__.StorageUpdate**", "full_name": "__main__.get_storage_updates.storage_updates", "references": [ { "ap_tracking_data": { "group": 12, "offset": 2 }, "pc": 86, "value": "[cast(fp, __main__.StorageUpdate***)]" } ], "type": "reference" }, "__main__.get_storage_updates.storage_updates_len": { "cairo_type": "felt", "full_name": "__main__.get_storage_updates.storage_updates_len", "references": [ { "ap_tracking_data": { "group": 12, "offset": 2 }, "pc": 86, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_world_da": { "decorators": [], "pc": 19, "type": "function" }, "__main__.get_world_da.Args": { "full_name": "__main__.get_world_da.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_world_da.ImplicitArgs": { "full_name": "__main__.get_world_da.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_world_da.Return": { "cairo_type": "(world_da: felt*, world_da_len: felt)", "type": "type_definition" }, "__main__.get_world_da.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_world_da.world_da": { "cairo_type": "felt*", "full_name": "__main__.get_world_da.world_da", "references": [ { "ap_tracking_data": { "group": 4, "offset": 2 }, "pc": 21, "value": "[cast(fp, felt**)]" } ], "type": "reference" }, "__main__.get_world_da.world_da_len": { "cairo_type": "felt", "full_name": "__main__.get_world_da.world_da_len", "references": [ { "ap_tracking_data": { "group": 4, "offset": 2 }, "pc": 21, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.hash2": { "destination": "starkware.cairo.common.hash.hash2", "type": "alias" }, "__main__.hash_contract_update": { "decorators": [], "pc": 126, "type": "function" }, "__main__.hash_contract_update.Args": { "full_name": "__main__.hash_contract_update.Args", "members": { "contract_update": { "cairo_type": "__main__.ContractUpdate*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_contract_update.ImplicitArgs": { "full_name": "__main__.hash_contract_update.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_contract_update.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_contract_update.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_contract_update.contract_update": { "cairo_type": "__main__.ContractUpdate*", "full_name": "__main__.hash_contract_update.contract_update", "references": [ { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast(fp + (-3), __main__.ContractUpdate**)]" } ], "type": "reference" }, "__main__.hash_contract_update.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_contract_update.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 17, "offset": 7 }, "pc": 131, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_contract_update.res": { "cairo_type": "felt", "full_name": "__main__.hash_contract_update.res", "references": [ { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 17, "offset": 7 }, "pc": 131, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop": { "decorators": [], "pc": 132, "type": "function" }, "__main__.hash_contract_updates_loop.Args": { "full_name": "__main__.hash_contract_updates_loop.Args", "members": { "contract_updates": { "cairo_type": "__main__.ContractUpdate**", "offset": 1 }, "contract_updates_len": { "cairo_type": "felt", "offset": 2 }, "res": { "cairo_type": "felt", "offset": 0 } }, "size": 3, "type": "struct" }, "__main__.hash_contract_updates_loop.ImplicitArgs": { "full_name": "__main__.hash_contract_updates_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_contract_updates_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_contract_updates_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_contract_updates_loop.contract_update": { "cairo_type": "__main__.ContractUpdate*", "full_name": "__main__.hash_contract_updates_loop.contract_update", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 139, "value": "[cast([fp + (-4)], __main__.ContractUpdate**)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.contract_updates": { "cairo_type": "__main__.ContractUpdate**", "full_name": "__main__.hash_contract_updates_loop.contract_updates", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-4), __main__.ContractUpdate***)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.contract_updates_len": { "cairo_type": "felt", "full_name": "__main__.hash_contract_updates_loop.contract_updates_len", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.hash": { "cairo_type": "felt", "full_name": "__main__.hash_contract_updates_loop.hash", "references": [ { "ap_tracking_data": { "group": 18, "offset": 11 }, "pc": 143, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_contract_updates_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 11 }, "pc": 143, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 18 }, "pc": 148, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 19, "offset": 0 }, "pc": 154, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_contract_updates_loop.res", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 18 }, "pc": 148, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_declared_class": { "decorators": [], "pc": 160, "type": "function" }, "__main__.hash_declared_class.Args": { "full_name": "__main__.hash_declared_class.Args", "members": { "declared_class": { "cairo_type": "__main__.DeclaredClass*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_declared_class.ImplicitArgs": { "full_name": "__main__.hash_declared_class.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_declared_class.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_declared_class.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_declared_class.declared_class": { "cairo_type": "__main__.DeclaredClass*", "full_name": "__main__.hash_declared_class.declared_class", "references": [ { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast(fp + (-3), __main__.DeclaredClass**)]" } ], "type": "reference" }, "__main__.hash_declared_class.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_declared_class.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 21, "offset": 7 }, "pc": 165, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_declared_class.res": { "cairo_type": "felt", "full_name": "__main__.hash_declared_class.res", "references": [ { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 21, "offset": 7 }, "pc": 165, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop": { "decorators": [], "pc": 166, "type": "function" }, "__main__.hash_declared_classes_loop.Args": { "full_name": "__main__.hash_declared_classes_loop.Args", "members": { "declared_classes": { "cairo_type": "__main__.DeclaredClass**", "offset": 1 }, "declared_classes_len": { "cairo_type": "felt", "offset": 2 }, "res": { "cairo_type": "felt", "offset": 0 } }, "size": 3, "type": "struct" }, "__main__.hash_declared_classes_loop.ImplicitArgs": { "full_name": "__main__.hash_declared_classes_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_declared_classes_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_declared_classes_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_declared_classes_loop.declared_class": { "cairo_type": "__main__.DeclaredClass*", "full_name": "__main__.hash_declared_classes_loop.declared_class", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 173, "value": "[cast([fp + (-4)], __main__.DeclaredClass**)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.declared_classes": { "cairo_type": "__main__.DeclaredClass**", "full_name": "__main__.hash_declared_classes_loop.declared_classes", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-4), __main__.DeclaredClass***)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.declared_classes_len": { "cairo_type": "felt", "full_name": "__main__.hash_declared_classes_loop.declared_classes_len", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.hash": { "cairo_type": "felt", "full_name": "__main__.hash_declared_classes_loop.hash", "references": [ { "ap_tracking_data": { "group": 22, "offset": 11 }, "pc": 177, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_declared_classes_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 11 }, "pc": 177, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 18 }, "pc": 182, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 23, "offset": 0 }, "pc": 188, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_declared_classes_loop.res", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 18 }, "pc": 182, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_nonce_update": { "decorators": [], "pc": 55, "type": "function" }, "__main__.hash_nonce_update.Args": { "full_name": "__main__.hash_nonce_update.Args", "members": { "nonce_update": { "cairo_type": "__main__.NonceUpdate*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_nonce_update.ImplicitArgs": { "full_name": "__main__.hash_nonce_update.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_nonce_update.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_nonce_update.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_nonce_update.nonce_update": { "cairo_type": "__main__.NonceUpdate*", "full_name": "__main__.hash_nonce_update.nonce_update", "references": [ { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast(fp + (-3), __main__.NonceUpdate**)]" } ], "type": "reference" }, "__main__.hash_nonce_update.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_nonce_update.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 9, "offset": 7 }, "pc": 60, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_nonce_update.res": { "cairo_type": "felt", "full_name": "__main__.hash_nonce_update.res", "references": [ { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 9, "offset": 7 }, "pc": 60, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop": { "decorators": [], "pc": 61, "type": "function" }, "__main__.hash_nonce_updates_loop.Args": { "full_name": "__main__.hash_nonce_updates_loop.Args", "members": { "nonce_updates": { "cairo_type": "__main__.NonceUpdate**", "offset": 1 }, "nonce_updates_len": { "cairo_type": "felt", "offset": 2 }, "res": { "cairo_type": "felt", "offset": 0 } }, "size": 3, "type": "struct" }, "__main__.hash_nonce_updates_loop.ImplicitArgs": { "full_name": "__main__.hash_nonce_updates_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_nonce_updates_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_nonce_updates_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_nonce_updates_loop.hash": { "cairo_type": "felt", "full_name": "__main__.hash_nonce_updates_loop.hash", "references": [ { "ap_tracking_data": { "group": 10, "offset": 11 }, "pc": 72, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.nonce_update": { "cairo_type": "__main__.NonceUpdate*", "full_name": "__main__.hash_nonce_updates_loop.nonce_update", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 68, "value": "[cast([fp + (-4)], __main__.NonceUpdate**)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.nonce_updates": { "cairo_type": "__main__.NonceUpdate**", "full_name": "__main__.hash_nonce_updates_loop.nonce_updates", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-4), __main__.NonceUpdate***)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.nonce_updates_len": { "cairo_type": "felt", "full_name": "__main__.hash_nonce_updates_loop.nonce_updates_len", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_nonce_updates_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 11 }, "pc": 72, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 18 }, "pc": 77, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 11, "offset": 0 }, "pc": 83, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_nonce_updates_loop.res", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 18 }, "pc": 77, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_storage_update": { "decorators": [], "pc": 89, "type": "function" }, "__main__.hash_storage_update.Args": { "full_name": "__main__.hash_storage_update.Args", "members": { "storage_update": { "cairo_type": "__main__.StorageUpdate*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_storage_update.ImplicitArgs": { "full_name": "__main__.hash_storage_update.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_storage_update.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_storage_update.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_storage_update.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_storage_update.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 7 }, "pc": 94, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 12 }, "pc": 97, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_storage_update.res": { "cairo_type": "felt", "full_name": "__main__.hash_storage_update.res", "references": [ { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 7 }, "pc": 94, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 12 }, "pc": 97, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_storage_update.storage_update": { "cairo_type": "__main__.StorageUpdate*", "full_name": "__main__.hash_storage_update.storage_update", "references": [ { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast(fp + (-3), __main__.StorageUpdate**)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop": { "decorators": [], "pc": 98, "type": "function" }, "__main__.hash_storage_updates_loop.Args": { "full_name": "__main__.hash_storage_updates_loop.Args", "members": { "res": { "cairo_type": "felt", "offset": 0 }, "storage_updates": { "cairo_type": "__main__.StorageUpdate**", "offset": 1 }, "storage_updates_len": { "cairo_type": "felt", "offset": 2 } }, "size": 3, "type": "struct" }, "__main__.hash_storage_updates_loop.ImplicitArgs": { "full_name": "__main__.hash_storage_updates_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_storage_updates_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_storage_updates_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_storage_updates_loop.hash": { "cairo_type": "felt", "full_name": "__main__.hash_storage_updates_loop.hash", "references": [ { "ap_tracking_data": { "group": 14, "offset": 16 }, "pc": 109, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_storage_updates_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 16 }, "pc": 109, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 23 }, "pc": 114, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 15, "offset": 0 }, "pc": 120, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_storage_updates_loop.res", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 23 }, "pc": 114, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.storage_update": { "cairo_type": "__main__.StorageUpdate*", "full_name": "__main__.hash_storage_updates_loop.storage_update", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 105, "value": "[cast([fp + (-4)], __main__.StorageUpdate**)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.storage_updates": { "cairo_type": "__main__.StorageUpdate**", "full_name": "__main__.hash_storage_updates_loop.storage_updates", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-4), __main__.StorageUpdate***)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.storage_updates_len": { "cairo_type": "felt", "full_name": "__main__.hash_storage_updates_loop.storage_updates_len", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.hash_world_da_loop": { "decorators": [], "pc": 24, "type": "function" }, "__main__.hash_world_da_loop.Args": { "full_name": "__main__.hash_world_da_loop.Args", "members": { "res": { "cairo_type": "felt", "offset": 0 }, "world_da": { "cairo_type": "felt*", "offset": 1 }, "world_da_len": { "cairo_type": "felt", "offset": 2 } }, "size": 3, "type": "struct" }, "__main__.hash_world_da_loop.ImplicitArgs": { "full_name": "__main__.hash_world_da_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_world_da_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_world_da_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_world_da_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_world_da_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 5, "offset": 7 }, "pc": 36, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 6, "offset": 0 }, "pc": 42, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_world_da_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_world_da_loop.res", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 7 }, "pc": 36, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_world_da_loop.value": { "cairo_type": "felt", "full_name": "__main__.hash_world_da_loop.value", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 31, "value": "[cast([fp + (-4)], felt*)]" } ], "type": "reference" }, "__main__.hash_world_da_loop.world_da": { "cairo_type": "felt*", "full_name": "__main__.hash_world_da_loop.world_da", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-4), felt**)]" } ], "type": "reference" }, "__main__.hash_world_da_loop.world_da_len": { "cairo_type": "felt", "full_name": "__main__.hash_world_da_loop.world_da_len", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.main": { "decorators": [], "pc": 206, "type": "function" }, "__main__.main.Args": { "full_name": "__main__.main.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.main.ImplicitArgs": { "full_name": "__main__.main.ImplicitArgs", "members": { "bitwise_ptr": { "cairo_type": "felt*", "offset": 3 }, "output_ptr": { "cairo_type": "felt*", "offset": 0 }, "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 1 }, "range_check_ptr": { "cairo_type": "felt", "offset": 2 } }, "size": 4, "type": "struct" }, "__main__.main.Return": { "cairo_type": "()", "type": "type_definition" }, "__main__.main.SIZEOF_LOCALS": { "type": "const", "value": 13 }, "__main__.main.bitwise_ptr": { "cairo_type": "felt*", "full_name": "__main__.main.bitwise_ptr", "references": [ { "ap_tracking_data": { "group": 26, "offset": 0 }, "pc": 206, "value": "[cast(fp + (-3), felt**)]" } ], "type": "reference" }, "__main__.main.contract_updates": { "cairo_type": "__main__.ContractUpdate**", "full_name": "__main__.main.contract_updates", "references": [ { "ap_tracking_data": { "group": 26, "offset": 45 }, "pc": 222, "value": "[cast(ap + (-2), __main__.ContractUpdate***)]" }, { "ap_tracking_data": { "group": 26, "offset": 45 }, "pc": 223, "value": "[cast(fp + 6, __main__.ContractUpdate***)]" } ], "type": "reference" }, "__main__.main.contract_updates_len": { "cairo_type": "felt", "full_name": "__main__.main.contract_updates_len", "references": [ { "ap_tracking_data": { "group": 26, "offset": 45 }, "pc": 222, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 45 }, "pc": 224, "value": "[cast(fp + 7, felt*)]" } ], "type": "reference" }, "__main__.main.declared_classes": { "cairo_type": "__main__.DeclaredClass**", "full_name": "__main__.main.declared_classes", "references": [ { "ap_tracking_data": { "group": 26, "offset": 51 }, "pc": 226, "value": "[cast(ap + (-2), __main__.DeclaredClass***)]" }, { "ap_tracking_data": { "group": 26, "offset": 51 }, "pc": 227, "value": "[cast(fp + 8, __main__.DeclaredClass***)]" } ], "type": "reference" }, "__main__.main.declared_classes_len": { "cairo_type": "felt", "full_name": "__main__.main.declared_classes_len", "references": [ { "ap_tracking_data": { "group": 26, "offset": 51 }, "pc": 226, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 51 }, "pc": 228, "value": "[cast(fp + 9, felt*)]" } ], "type": "reference" }, "__main__.main.input_config": { "cairo_type": "__main__.InputConfig", "full_name": "__main__.main.input_config", "references": [ { "ap_tracking_data": { "group": 26, "offset": 27 }, "pc": 210, "value": "[cast(ap + (-4), __main__.InputConfig*)]" }, { "ap_tracking_data": { "group": 26, "offset": 27 }, "pc": 214, "value": "[cast(fp, __main__.InputConfig*)]" } ], "type": "reference" }, "__main__.main.message_to_appchain_segment": { "cairo_type": "felt*", "full_name": "__main__.main.message_to_appchain_segment", "references": [ { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 273, "value": "[cast(ap + (-2), felt**)]" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 275, "value": "[cast(fp + 12, felt**)]" } ], "type": "reference" }, "__main__.main.message_to_appchain_segment_len": { "cairo_type": "felt", "full_name": "__main__.main.message_to_appchain_segment_len", "references": [ { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 273, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 274, "value": "[cast(fp + 11, felt*)]" } ], "type": "reference" }, "__main__.main.message_to_starknet_segment": { "cairo_type": "felt*", "full_name": "__main__.main.message_to_starknet_segment", "references": [ { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 273, "value": "[cast(ap + (-4), felt**)]" } ], "type": "reference" }, "__main__.main.message_to_starknet_segment_len": { "cairo_type": "felt", "full_name": "__main__.main.message_to_starknet_segment_len", "references": [ { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 273, "value": "[cast(ap + (-3), felt*)]" } ], "type": "reference" }, "__main__.main.nonce_updates": { "cairo_type": "__main__.NonceUpdate**", "full_name": "__main__.main.nonce_updates", "references": [ { "ap_tracking_data": { "group": 26, "offset": 33 }, "pc": 216, "value": "[cast(ap + (-2), __main__.NonceUpdate***)]" } ], "type": "reference" }, "__main__.main.nonce_updates_len": { "cairo_type": "felt", "full_name": "__main__.main.nonce_updates_len", "references": [ { "ap_tracking_data": { "group": 26, "offset": 33 }, "pc": 216, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.main.output_ptr": { "cairo_type": "felt*", "full_name": "__main__.main.output_ptr", "references": [ { "ap_tracking_data": { "group": 26, "offset": 0 }, "pc": 206, "value": "[cast(fp + (-6), felt**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 260, "value": "cast([fp + (-6)] + 6, felt*)" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 263, "value": "cast([fp + (-6)] + 7, felt*)" }, { "ap_tracking_data": { "group": 32, "offset": 0 }, "pc": 269, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 32, "offset": 0 }, "pc": 270, "value": "cast([ap + (-1)] + 1, felt*)" }, { "ap_tracking_data": { "group": 33, "offset": 0 }, "pc": 276, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 271, "value": "cast([fp + (-6)] + 6, felt*)" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 276, "value": "cast([fp + (-6)] + 7, felt*)" }, { "ap_tracking_data": { "group": 32, "offset": 0 }, "pc": 282, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 32, "offset": 0 }, "pc": 283, "value": "cast([ap + (-1)] + 1, felt*)" }, { "ap_tracking_data": { "group": 33, "offset": 0 }, "pc": 289, "value": "[cast(ap + (-1), felt**)]" } ], "type": "reference" }, "__main__.main.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.main.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 26, "offset": 0 }, "pc": 206, "value": "[cast(fp + (-5), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 45 }, "pc": 223, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 50 }, "pc": 226, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 55 }, "pc": 229, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 233, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 28, "offset": 0 }, "pc": 237, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 29, "offset": 0 }, "pc": 241, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 245, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 259, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 58 }, "pc": 233, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 63 }, "pc": 236, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 68 }, "pc": 239, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 243, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 28, "offset": 0 }, "pc": 247, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 29, "offset": 0 }, "pc": 251, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 255, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 269, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 270, "value": "[cast(fp + 10, starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.main.range_check_ptr": { "cairo_type": "felt", "full_name": "__main__.main.range_check_ptr", "references": [ { "ap_tracking_data": { "group": 26, "offset": 0 }, "pc": 206, "value": "[cast(fp + (-4), felt*)]" } ], "type": "reference" }, "__main__.main.res": { "cairo_type": "felt", "full_name": "__main__.main.res", "references": [ { "ap_tracking_data": { "group": 26, "offset": 58 }, "pc": 233, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 63 }, "pc": 236, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 68 }, "pc": 239, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 243, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 28, "offset": 0 }, "pc": 247, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 29, "offset": 0 }, "pc": 251, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 255, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.main.storage_updates": { "cairo_type": "__main__.StorageUpdate**", "full_name": "__main__.main.storage_updates", "references": [ { "ap_tracking_data": { "group": 26, "offset": 39 }, "pc": 218, "value": "[cast(ap + (-2), __main__.StorageUpdate***)]" }, { "ap_tracking_data": { "group": 26, "offset": 39 }, "pc": 219, "value": "[cast(fp + 4, __main__.StorageUpdate***)]" } ], "type": "reference" }, "__main__.main.storage_updates_len": { "cairo_type": "felt", "full_name": "__main__.main.storage_updates_len", "references": [ { "ap_tracking_data": { "group": 26, "offset": 39 }, "pc": 218, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 39 }, "pc": 220, "value": "[cast(fp + 5, felt*)]" } ], "type": "reference" }, "__main__.main.world_da": { "cairo_type": "felt*", "full_name": "__main__.main.world_da", "references": [ { "ap_tracking_data": { "group": 30, "offset": 6 }, "pc": 262, "value": "[cast(ap + (-2), felt**)]" } ], "type": "reference" }, "__main__.main.world_da_hash": { "cairo_type": "felt", "full_name": "__main__.main.world_da_hash", "references": [ { "ap_tracking_data": { "group": 30, "offset": 6 }, "pc": 262, "value": "cast(0, felt)" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 269, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.main.world_da_len": { "cairo_type": "felt", "full_name": "__main__.main.world_da_len", "references": [ { "ap_tracking_data": { "group": 30, "offset": 6 }, "pc": 262, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.output_array": { "decorators": [], "pc": 189, "type": "function" }, "__main__.output_array.Args": { "full_name": "__main__.output_array.Args", "members": { "array": { "cairo_type": "felt*", "offset": 0 }, "len": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "__main__.output_array.ImplicitArgs": { "full_name": "__main__.output_array.ImplicitArgs", "members": { "output_ptr": { "cairo_type": "felt*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.output_array.Return": { "cairo_type": "()", "type": "type_definition" }, "__main__.output_array.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.output_array.__temp0": { "cairo_type": "felt", "full_name": "__main__.output_array.__temp0", "references": [ { "ap_tracking_data": { "group": 24, "offset": 1 }, "pc": 196, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.output_array.array": { "cairo_type": "felt*", "full_name": "__main__.output_array.array", "references": [ { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-4), felt**)]" } ], "type": "reference" }, "__main__.output_array.len": { "cairo_type": "felt", "full_name": "__main__.output_array.len", "references": [ { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.output_array.output_ptr": { "cairo_type": "felt*", "full_name": "__main__.output_array.output_ptr", "references": [ { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-5), felt**)]" }, { "ap_tracking_data": { "group": 24, "offset": 1 }, "pc": 197, "value": "cast([fp + (-5)] + 1, felt*)" }, { "ap_tracking_data": { "group": 25, "offset": 0 }, "pc": 205, "value": "[cast(ap + (-1), felt**)]" } ], "type": "reference" }, "__main__.output_array.value": { "cairo_type": "felt", "full_name": "__main__.output_array.value", "references": [ { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 195, "value": "[cast([fp + (-4)], felt*)]" } ], "type": "reference" }, "starkware.cairo.common.cairo_builtins.BitwiseBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.BitwiseBuiltin", "members": { "x": { "cairo_type": "felt", "offset": 0 }, "x_and_y": { "cairo_type": "felt", "offset": 2 }, "x_or_y": { "cairo_type": "felt", "offset": 4 }, "x_xor_y": { "cairo_type": "felt", "offset": 3 }, "y": { "cairo_type": "felt", "offset": 1 } }, "size": 5, "type": "struct" }, "starkware.cairo.common.cairo_builtins.EcOpBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.EcOpBuiltin", "members": { "m": { "cairo_type": "felt", "offset": 4 }, "p": { "cairo_type": "starkware.cairo.common.ec_point.EcPoint", "offset": 0 }, "q": { "cairo_type": "starkware.cairo.common.ec_point.EcPoint", "offset": 2 }, "r": { "cairo_type": "starkware.cairo.common.ec_point.EcPoint", "offset": 5 } }, "size": 7, "type": "struct" }, "starkware.cairo.common.cairo_builtins.EcPoint": { "destination": "starkware.cairo.common.ec_point.EcPoint", "type": "alias" }, "starkware.cairo.common.cairo_builtins.HashBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.HashBuiltin", "members": { "result": { "cairo_type": "felt", "offset": 2 }, "x": { "cairo_type": "felt", "offset": 0 }, "y": { "cairo_type": "felt", "offset": 1 } }, "size": 3, "type": "struct" }, "starkware.cairo.common.cairo_builtins.KeccakBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.KeccakBuiltin", "members": { "input": { "cairo_type": "starkware.cairo.common.keccak_state.KeccakBuiltinState", "offset": 0 }, "output": { "cairo_type": "starkware.cairo.common.keccak_state.KeccakBuiltinState", "offset": 8 } }, "size": 16, "type": "struct" }, "starkware.cairo.common.cairo_builtins.KeccakBuiltinState": { "destination": "starkware.cairo.common.keccak_state.KeccakBuiltinState", "type": "alias" }, "starkware.cairo.common.cairo_builtins.PoseidonBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.PoseidonBuiltin", "members": { "input": { "cairo_type": "starkware.cairo.common.poseidon_state.PoseidonBuiltinState", "offset": 0 }, "output": { "cairo_type": "starkware.cairo.common.poseidon_state.PoseidonBuiltinState", "offset": 3 } }, "size": 6, "type": "struct" }, "starkware.cairo.common.cairo_builtins.PoseidonBuiltinState": { "destination": "starkware.cairo.common.poseidon_state.PoseidonBuiltinState", "type": "alias" }, "starkware.cairo.common.cairo_builtins.SignatureBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.SignatureBuiltin", "members": { "message": { "cairo_type": "felt", "offset": 1 }, "pub_key": { "cairo_type": "felt", "offset": 0 } }, "size": 2, "type": "struct" }, "starkware.cairo.common.ec_point.EcPoint": { "full_name": "starkware.cairo.common.ec_point.EcPoint", "members": { "x": { "cairo_type": "felt", "offset": 0 }, "y": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "starkware.cairo.common.hash.HashBuiltin": { "destination": "starkware.cairo.common.cairo_builtins.HashBuiltin", "type": "alias" }, "starkware.cairo.common.hash.hash2": { "decorators": [], "pc": 6, "type": "function" }, "starkware.cairo.common.hash.hash2.Args": { "full_name": "starkware.cairo.common.hash.hash2.Args", "members": { "x": { "cairo_type": "felt", "offset": 0 }, "y": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "starkware.cairo.common.hash.hash2.ImplicitArgs": { "full_name": "starkware.cairo.common.hash.hash2.ImplicitArgs", "members": { "hash_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "starkware.cairo.common.hash.hash2.Return": { "cairo_type": "(result: felt)", "type": "type_definition" }, "starkware.cairo.common.hash.hash2.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "starkware.cairo.common.hash.hash2.hash_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "starkware.cairo.common.hash.hash2.hash_ptr", "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-5), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 8, "value": "cast([fp + (-5)] + 3, starkware.cairo.common.cairo_builtins.HashBuiltin*)" } ], "type": "reference" }, "starkware.cairo.common.hash.hash2.result": { "cairo_type": "felt", "full_name": "starkware.cairo.common.hash.hash2.result", "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 8, "value": "[cast([fp + (-5)] + 2, felt*)]" } ], "type": "reference" }, "starkware.cairo.common.hash.hash2.x": { "cairo_type": "felt", "full_name": "starkware.cairo.common.hash.hash2.x", "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-4), felt*)]" } ], "type": "reference" }, "starkware.cairo.common.hash.hash2.y": { "cairo_type": "felt", "full_name": "starkware.cairo.common.hash.hash2.y", "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "starkware.cairo.common.keccak_state.KeccakBuiltinState": { "full_name": "starkware.cairo.common.keccak_state.KeccakBuiltinState", "members": { "s0": { "cairo_type": "felt", "offset": 0 }, "s1": { "cairo_type": "felt", "offset": 1 }, "s2": { "cairo_type": "felt", "offset": 2 }, "s3": { "cairo_type": "felt", "offset": 3 }, "s4": { "cairo_type": "felt", "offset": 4 }, "s5": { "cairo_type": "felt", "offset": 5 }, "s6": { "cairo_type": "felt", "offset": 6 }, "s7": { "cairo_type": "felt", "offset": 7 } }, "size": 8, "type": "struct" }, "starkware.cairo.common.poseidon_state.PoseidonBuiltinState": { "full_name": "starkware.cairo.common.poseidon_state.PoseidonBuiltinState", "members": { "s0": { "cairo_type": "felt", "offset": 0 }, "s1": { "cairo_type": "felt", "offset": 1 }, "s2": { "cairo_type": "felt", "offset": 2 } }, "size": 3, "type": "struct" } }, "main_scope": "__main__", "prime": "0x800000000000011000000000000000000000000000000000000000000000001", "reference_manager": { "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-4), felt*)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-5), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 8, "value": "[cast([fp + (-5)] + 2, felt*)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 8, "value": "cast([fp + (-5)] + 3, starkware.cairo.common.cairo_builtins.HashBuiltin*)" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp, __main__.InputConfig*)]" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 4, felt*)]" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 5, felt*)]" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 6, felt*)]" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 7, felt*)]" }, { "ap_tracking_data": { "group": 4, "offset": 2 }, "pc": 21, "value": "[cast(fp, felt**)]" }, { "ap_tracking_data": { "group": 4, "offset": 2 }, "pc": 21, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-4), felt**)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 31, "value": "[cast([fp + (-4)], felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 7 }, "pc": 36, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 5, "offset": 7 }, "pc": 36, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 6, "offset": 0 }, "pc": 42, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp, felt**)]" }, { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 2, felt**)]" }, { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 3, felt*)]" }, { "ap_tracking_data": { "group": 8, "offset": 2 }, "pc": 52, "value": "[cast(fp, __main__.NonceUpdate***)]" }, { "ap_tracking_data": { "group": 8, "offset": 2 }, "pc": 52, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast(fp + (-3), __main__.NonceUpdate**)]" }, { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 9, "offset": 7 }, "pc": 60, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 9, "offset": 7 }, "pc": 60, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-4), __main__.NonceUpdate***)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 68, "value": "[cast([fp + (-4)], __main__.NonceUpdate**)]" }, { "ap_tracking_data": { "group": 10, "offset": 11 }, "pc": 72, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 11 }, "pc": 72, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 18 }, "pc": 77, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 18 }, "pc": 77, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 11, "offset": 0 }, "pc": 83, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 12, "offset": 2 }, "pc": 86, "value": "[cast(fp, __main__.StorageUpdate***)]" }, { "ap_tracking_data": { "group": 12, "offset": 2 }, "pc": 86, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast(fp + (-3), __main__.StorageUpdate**)]" }, { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 7 }, "pc": 94, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 7 }, "pc": 94, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 12 }, "pc": 97, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 12 }, "pc": 97, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-4), __main__.StorageUpdate***)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 105, "value": "[cast([fp + (-4)], __main__.StorageUpdate**)]" }, { "ap_tracking_data": { "group": 14, "offset": 16 }, "pc": 109, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 16 }, "pc": 109, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 23 }, "pc": 114, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 23 }, "pc": 114, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 15, "offset": 0 }, "pc": 120, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 16, "offset": 2 }, "pc": 123, "value": "[cast(fp, __main__.ContractUpdate***)]" }, { "ap_tracking_data": { "group": 16, "offset": 2 }, "pc": 123, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast(fp + (-3), __main__.ContractUpdate**)]" }, { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 17, "offset": 7 }, "pc": 131, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 17, "offset": 7 }, "pc": 131, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-4), __main__.ContractUpdate***)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 139, "value": "[cast([fp + (-4)], __main__.ContractUpdate**)]" }, { "ap_tracking_data": { "group": 18, "offset": 11 }, "pc": 143, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 11 }, "pc": 143, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 18 }, "pc": 148, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 18 }, "pc": 148, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 19, "offset": 0 }, "pc": 154, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 20, "offset": 2 }, "pc": 157, "value": "[cast(fp, __main__.DeclaredClass***)]" }, { "ap_tracking_data": { "group": 20, "offset": 2 }, "pc": 157, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast(fp + (-3), __main__.DeclaredClass**)]" }, { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 21, "offset": 7 }, "pc": 165, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 21, "offset": 7 }, "pc": 165, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-4), __main__.DeclaredClass***)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 173, "value": "[cast([fp + (-4)], __main__.DeclaredClass**)]" }, { "ap_tracking_data": { "group": 22, "offset": 11 }, "pc": 177, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 11 }, "pc": 177, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 18 }, "pc": 182, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 18 }, "pc": 182, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 23, "offset": 0 }, "pc": 188, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-4), felt**)]" }, { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-5), felt**)]" }, { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 195, "value": "[cast([fp + (-4)], felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 1 }, "pc": 196, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 1 }, "pc": 197, "value": "cast([fp + (-5)] + 1, felt*)" }, { "ap_tracking_data": { "group": 25, "offset": 0 }, "pc": 205, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 26, "offset": 0 }, "pc": 206, "value": "[cast(fp + (-6), felt**)]" }, { "ap_tracking_data": { "group": 26, "offset": 0 }, "pc": 206, "value": "[cast(fp + (-5), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 0 }, "pc": 206, "value": "[cast(fp + (-4), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 0 }, "pc": 206, "value": "[cast(fp + (-3), felt**)]" }, { "ap_tracking_data": { "group": 26, "offset": 27 }, "pc": 210, "value": "[cast(ap + (-4), __main__.InputConfig*)]" }, { "ap_tracking_data": { "group": 26, "offset": 27 }, "pc": 214, "value": "[cast(fp, __main__.InputConfig*)]" }, { "ap_tracking_data": { "group": 26, "offset": 33 }, "pc": 216, "value": "[cast(ap + (-2), __main__.NonceUpdate***)]" }, { "ap_tracking_data": { "group": 26, "offset": 33 }, "pc": 216, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 39 }, "pc": 218, "value": "[cast(ap + (-2), __main__.StorageUpdate***)]" }, { "ap_tracking_data": { "group": 26, "offset": 39 }, "pc": 218, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 39 }, "pc": 219, "value": "[cast(fp + 4, __main__.StorageUpdate***)]" }, { "ap_tracking_data": { "group": 26, "offset": 39 }, "pc": 220, "value": "[cast(fp + 5, felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 45 }, "pc": 222, "value": "[cast(ap + (-2), __main__.ContractUpdate***)]" }, { "ap_tracking_data": { "group": 26, "offset": 45 }, "pc": 222, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 45 }, "pc": 223, "value": "[cast(fp + 6, __main__.ContractUpdate***)]" }, { "ap_tracking_data": { "group": 26, "offset": 45 }, "pc": 224, "value": "[cast(fp + 7, felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 51 }, "pc": 226, "value": "[cast(ap + (-2), __main__.DeclaredClass***)]" }, { "ap_tracking_data": { "group": 26, "offset": 51 }, "pc": 226, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 51 }, "pc": 227, "value": "[cast(fp + 8, __main__.DeclaredClass***)]" }, { "ap_tracking_data": { "group": 26, "offset": 51 }, "pc": 228, "value": "[cast(fp + 9, felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 58 }, "pc": 233, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 58 }, "pc": 233, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 63 }, "pc": 236, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 63 }, "pc": 236, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 68 }, "pc": 239, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 26, "offset": 68 }, "pc": 239, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 243, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 243, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 28, "offset": 0 }, "pc": 247, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 28, "offset": 0 }, "pc": 247, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 29, "offset": 0 }, "pc": 251, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 29, "offset": 0 }, "pc": 251, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 255, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 255, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 30, "offset": 6 }, "pc": 262, "value": "[cast(ap + (-2), felt**)]" }, { "ap_tracking_data": { "group": 30, "offset": 6 }, "pc": 262, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 30, "offset": 6 }, "pc": 262, "value": "cast(0, felt)" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 269, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 269, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 270, "value": "[cast(fp + 10, starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 271, "value": "cast([fp + (-6)] + 6, felt*)" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 273, "value": "[cast(ap + (-4), felt**)]" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 273, "value": "[cast(ap + (-3), felt*)]" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 273, "value": "[cast(ap + (-2), felt**)]" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 273, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 274, "value": "[cast(fp + 11, felt*)]" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 275, "value": "[cast(fp + 12, felt**)]" }, { "ap_tracking_data": { "group": 31, "offset": 10 }, "pc": 276, "value": "cast([fp + (-6)] + 7, felt*)" }, { "ap_tracking_data": { "group": 32, "offset": 0 }, "pc": 282, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 32, "offset": 0 }, "pc": 283, "value": "cast([ap + (-1)] + 1, felt*)" }, { "ap_tracking_data": { "group": 33, "offset": 0 }, "pc": 289, "value": "[cast(ap + (-1), felt**)]" } ] }} \ No newline at end of file diff --git a/bin/saya/programs/cairo0merger.json b/bin/saya/programs/cairo0merger.json new file mode 100644 index 0000000000..210139f64c --- /dev/null +++ b/bin/saya/programs/cairo0merger.json @@ -0,0 +1 @@ +{ "attributes": [], "builtins": ["output", "pedersen", "range_check", "bitwise"], "compiler_version": "0.13.1", "data": [ "0x40780017fff7fff", "0x4", "0x1104800180018000", "0x10e", "0x10780017fff7fff", "0x0", "0x400380007ffb7ffc", "0x400380017ffb7ffd", "0x482680017ffb8000", "0x3", "0x480280027ffb8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x8", "0x480a80047fff8000", "0x480a80057fff8000", "0x480a80067fff8000", "0x480a80077fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe5", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x4", "0x480a80007fff8000", "0x480a80017fff8000", "0x480a80027fff8000", "0x480a80037fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x480a7ffc7fff8000", "0x480280007ffd8000", "0x480280017ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffcd", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff2", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffbc", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x480a7ffc7fff8000", "0x480280007ffd8000", "0x480280017ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffab", "0x480280027ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa8", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffef", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff97", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x480a7ffc7fff8000", "0x480280007ffd8000", "0x480280017ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff86", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff2", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff75", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x480a7ffc7fff8000", "0x480280007ffd8000", "0x480280017ffd8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff64", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x5", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480a7ffa7fff8000", "0x480280007ffc8000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff2", "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x48127ffd7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff53", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffed", "0x208b7fff7fff7ffe", "0x20780017fff7ffb", "0xb", "0x482a7ffb7ffa8000", "0x400180007fff7ffc", "0x482680017ffb8000", "0x1", "0x48327fff7ffa8000", "0x400180007fff7ffd", "0x480680017fff8000", "0x0", "0x208b7fff7fff7ffe", "0x480280007ffa8000", "0x48287ffc80007fff", "0x20680017fff7fff", "0x6", "0x400380017ffa7ffd", "0x480680017fff8000", "0x1", "0x208b7fff7fff7ffe", "0x482680017ffa8000", "0x2", "0x482680017ffb8000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffe8", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x2", "0x480a80007fff8000", "0x480a80017fff8000", "0x208b7fff7fff7ffe", "0x20780017fff7ffd", "0x4", "0x480a7ffb7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x0", "0x480280007ffc8000", "0x400280007ffb7fff", "0x482680017ffb8000", "0x1", "0x482680017ffc8000", "0x1", "0x482680017ffd8000", "0x800000000000011000000000000000000000000000000000000000000000000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffff3", "0x208b7fff7fff7ffe", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff1e", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff42", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff62", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff85", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffa5", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff33", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff19", "0x48127fd47fff8000", "0x48127fd47fff8000", "0x48127fd47fff8000", "0x48127fd47fff8000", "0x48127fd97fff8000", "0x48127fd77fff8000", "0x48127fdd7fff8000", "0x48127fdb7fff8000", "0x48127fe17fff8000", "0x48127fdf7fff8000", "0x48127fe57fff8000", "0x48127fe37fff8000", "0x48127fea7fff8000", "0x48127fea7fff8000", "0x48127fea7fff8000", "0x48127fea7fff8000", "0x48127fee7fff8000", "0x48127fee7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x25", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffde", "0x40137fee7fff8000", "0x40137fef7fff8001", "0x40137ff07fff8002", "0x40137ff17fff8003", "0x40137ff27fff8004", "0x40137ff37fff8005", "0x40137ff47fff8006", "0x40137ff57fff8007", "0x40137ff67fff8008", "0x40137ff77fff8009", "0x40137ff87fff800a", "0x40137ff97fff800b", "0x40137ffa7fff800c", "0x40137ffb7fff800d", "0x40137ffc7fff800e", "0x40137ffd7fff800f", "0x40137ffe7fff8010", "0x40137fff7fff8011", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffffca", "0x40137fee7fff8012", "0x40137fef7fff8013", "0x40137ff07fff8014", "0x40137ff17fff8015", "0x40137ff27fff8016", "0x40137ff37fff8017", "0x40137ff47fff8018", "0x40137ff57fff8019", "0x40137ff67fff801a", "0x40137ff77fff801b", "0x40137ff87fff801c", "0x40137ff97fff801d", "0x40137ffa7fff801e", "0x40137ffb7fff801f", "0x40137ffc7fff8020", "0x40137ffd7fff8021", "0x40137ffe7fff8022", "0x40137fff7fff8023", "0x400380007ffa8000", "0x480680017fff8000", "0x0", "0x400280017ffa7fff", "0x400380027ffa8013", "0x400380037ffa8014", "0x400380047ffa8003", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff99", "0x480a7ffb7fff8000", "0x480680017fff8000", "0x0", "0x48127ffc7fff8000", "0x48127ffc7fff8000", "0x1104800180018000", "0x800000000000010fffffffffffffffffffffffffffffffffffffffffffffed1", "0x40137ffe7fff8024", "0x400280057ffa7fff", "0x482a801f800d8000", "0x400280067ffa7fff", "0x482680017ffa8000", "0x7", "0x480a800c7fff8000", "0x480a800d7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff8d", "0x480a801e7fff8000", "0x480a801f7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff89", "0x482a8021800f8000", "0x400080007ffe7fff", "0x482480017ffe8000", "0x1", "0x480a800e7fff8000", "0x480a800f7fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff81", "0x480a80207fff8000", "0x480a80217fff8000", "0x1104800180018000", "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffff7d", "0x480a80247fff8000", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x208b7fff7fff7ffe" ], "debug_info": { "file_contents": { "": "__start__:\nap += main.Args.SIZE + main.ImplicitArgs.SIZE;\ncall main;\n\n__end__:\njmp rel 0;\n" }, "instruction_locations": { "0": { "accessible_scopes": ["__main__"], "flow_tracking_data": { "ap_tracking": { "group": 0, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 46, "end_line": 2, "input_file": { "filename": "" }, "start_col": 1, "start_line": 2 } }, "2": { "accessible_scopes": ["__main__"], "flow_tracking_data": { "ap_tracking": { "group": 0, "offset": 4 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 10, "end_line": 3, "input_file": { "filename": "" }, "start_col": 1, "start_line": 3 } }, "4": { "accessible_scopes": ["__main__"], "flow_tracking_data": { "ap_tracking": { "group": 1, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 10, "end_line": 6, "input_file": { "filename": "" }, "start_col": 1, "start_line": 6 } }, "6": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 0 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 2, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 19, "end_line": 14, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 5, "start_line": 14 } }, "7": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 0 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 2, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 19, "end_line": 15, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 5, "start_line": 15 } }, "8": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 0 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 4, "starkware.cairo.common.hash.hash2.result": 3, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 47, "end_line": 17, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 13, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "parent_location": [ { "end_col": 28, "end_line": 18, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 5, "start_line": 18 }, "While trying to retrieve the implicit argument 'hash_ptr' in:" ], "start_col": 12, "start_line": 13 }, "While expanding the reference 'hash_ptr' in:" ], "start_col": 20, "start_line": 17 } }, "10": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 1 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 4, "starkware.cairo.common.hash.hash2.result": 3, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 33, "end_line": 16, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 18, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 20, "start_line": 18 }, "While expanding the reference 'result' in:" ], "start_col": 18, "start_line": 16 } }, "11": { "accessible_scopes": [ "starkware.cairo.common.hash", "starkware.cairo.common.hash.hash2" ], "flow_tracking_data": { "ap_tracking": { "group": 2, "offset": 2 }, "reference_ids": { "starkware.cairo.common.hash.hash2.hash_ptr": 4, "starkware.cairo.common.hash.hash2.result": 3, "starkware.cairo.common.hash.hash2.x": 0, "starkware.cairo.common.hash.hash2.y": 1 } }, "hints": [], "inst": { "end_col": 28, "end_line": 18, "input_file": { "filename": "/home/mateo/code/dojo-os/.venv/lib/python3.9/site-packages/starkware/cairo/common/hash.cairo" }, "start_col": 5, "start_line": 18 } }, "12": { "accessible_scopes": ["__main__", "__main__.get_hashes"], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 15, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 15 } }, "14": { "accessible_scopes": ["__main__", "__main__.get_hashes"], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 8 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [ { "location": { "end_col": 7, "end_line": 26, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 21 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 26, "end_line": 17, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 29, "input_file": { "filename": "src/merger.cairo" }, "start_col": 29, "start_line": 29 }, "While expanding the reference 'prev_state_root' in:" ], "start_col": 11, "start_line": 17 } }, "15": { "accessible_scopes": ["__main__", "__main__.get_hashes"], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 9 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [], "inst": { "end_col": 23, "end_line": 18, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 38, "end_line": 30, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 30 }, "While expanding the reference 'block_number' in:" ], "start_col": 11, "start_line": 18 } }, "16": { "accessible_scopes": ["__main__", "__main__.get_hashes"], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 10 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [], "inst": { "end_col": 21, "end_line": 19, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 34, "end_line": 31, "input_file": { "filename": "src/merger.cairo" }, "start_col": 24, "start_line": 31 }, "While expanding the reference 'block_hash' in:" ], "start_col": 11, "start_line": 19 } }, "17": { "accessible_scopes": ["__main__", "__main__.get_hashes"], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 11 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [], "inst": { "end_col": 22, "end_line": 20, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 36, "end_line": 32, "input_file": { "filename": "src/merger.cairo" }, "start_col": 25, "start_line": 32 }, "While expanding the reference 'config_hash' in:" ], "start_col": 11, "start_line": 20 } }, "18": { "accessible_scopes": ["__main__", "__main__.get_hashes"], "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 12 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } }, "hints": [], "inst": { "end_col": 7, "end_line": 34, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 27 } }, "19": { "accessible_scopes": ["__main__", "__main__.get_world_da"], "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 43, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 43 } }, "21": { "accessible_scopes": ["__main__", "__main__.get_world_da"], "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 2 }, "reference_ids": { "__main__.get_world_da.world_da": 10, "__main__.get_world_da.world_da_len": 11 } }, "hints": [ { "location": { "end_col": 7, "end_line": 50, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 46 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 19, "end_line": 44, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 30, "end_line": 54, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 54 }, "While expanding the reference 'world_da' in:" ], "start_col": 11, "start_line": 44 } }, "22": { "accessible_scopes": ["__main__", "__main__.get_world_da"], "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 3 }, "reference_ids": { "__main__.get_world_da.world_da": 10, "__main__.get_world_da.world_da_len": 11 } }, "hints": [], "inst": { "end_col": 23, "end_line": 45, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 38, "end_line": 55, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 55 }, "While expanding the reference 'world_da_len' in:" ], "start_col": 11, "start_line": 45 } }, "23": { "accessible_scopes": ["__main__", "__main__.get_world_da"], "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 4 }, "reference_ids": { "__main__.get_world_da.world_da": 10, "__main__.get_world_da.world_da_len": 11 } }, "hints": [], "inst": { "end_col": 7, "end_line": 57, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 53 } }, "24": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 7, "end_line": 63, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 63 } }, "26": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 51, "end_line": 60, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 51, "end_line": 60, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 64, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 64 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 25, "start_line": 60 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 25, "start_line": 60 } }, "27": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 1 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 14, "end_line": 61, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 64, "input_file": { "filename": "src/merger.cairo" }, "start_col": 21, "start_line": 64 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 61 } }, "28": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 2 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 26, "end_line": 64, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 64 } }, "29": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 18, "end_line": 66, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 66 } }, "31": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 51, "end_line": 60, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 68, "input_file": { "filename": "src/merger.cairo" }, "start_col": 32, "start_line": 68 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 25, "start_line": 60 } }, "32": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 1 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 14, "end_line": 61, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 69, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 69 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 61 } }, "33": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 2 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 27, "end_line": 67, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 19, "end_line": 69, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 69 }, "While expanding the reference 'value' in:" ], "start_col": 17, "start_line": 67 } }, "34": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 3 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 15, "__main__.hash_world_da_loop.res": 12, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 6, "end_line": 70, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 68 } }, "36": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 7 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 17, "__main__.hash_world_da_loop.res": 18, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 30, "end_line": 73, "input_file": { "filename": "src/merger.cairo" }, "start_col": 18, "start_line": 73 } }, "38": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 8 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 17, "__main__.hash_world_da_loop.res": 18, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 38, "end_line": 74, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 74 } }, "40": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 5, "offset": 9 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 17, "__main__.hash_world_da_loop.res": 18, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 6, "end_line": 75, "input_file": { "filename": "src/merger.cairo" }, "start_col": 12, "start_line": 71 } }, "42": { "accessible_scopes": ["__main__", "__main__.hash_world_da_loop"], "flow_tracking_data": { "ap_tracking": { "group": 6, "offset": 0 }, "reference_ids": { "__main__.hash_world_da_loop.pedersen_ptr": 19, "__main__.hash_world_da_loop.res": 18, "__main__.hash_world_da_loop.value": 16, "__main__.hash_world_da_loop.world_da": 13, "__main__.hash_world_da_loop.world_da_len": 14 } }, "hints": [], "inst": { "end_col": 7, "end_line": 75, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 71 } }, "43": { "accessible_scopes": ["__main__", "__main__.get_messages"], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 86, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 86 } }, "45": { "accessible_scopes": ["__main__", "__main__.get_messages"], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 4 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [ { "location": { "end_col": 7, "end_line": 105, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 91 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 38, "end_line": 87, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 68, "end_line": 107, "input_file": { "filename": "src/merger.cairo" }, "start_col": 41, "start_line": 107 }, "While expanding the reference 'message_to_starknet_segment' in:" ], "start_col": 11, "start_line": 87 } }, "46": { "accessible_scopes": ["__main__", "__main__.get_messages"], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 5 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [], "inst": { "end_col": 42, "end_line": 88, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 76, "end_line": 108, "input_file": { "filename": "src/merger.cairo" }, "start_col": 45, "start_line": 108 }, "While expanding the reference 'message_to_starknet_segment_len' in:" ], "start_col": 11, "start_line": 88 } }, "47": { "accessible_scopes": ["__main__", "__main__.get_messages"], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 6 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [], "inst": { "end_col": 38, "end_line": 89, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 68, "end_line": 109, "input_file": { "filename": "src/merger.cairo" }, "start_col": 41, "start_line": 109 }, "While expanding the reference 'message_to_appchain_segment' in:" ], "start_col": 11, "start_line": 89 } }, "48": { "accessible_scopes": ["__main__", "__main__.get_messages"], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 7 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [], "inst": { "end_col": 42, "end_line": 90, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 76, "end_line": 110, "input_file": { "filename": "src/merger.cairo" }, "start_col": 45, "start_line": 110 }, "While expanding the reference 'message_to_appchain_segment_len' in:" ], "start_col": 11, "start_line": 90 } }, "49": { "accessible_scopes": ["__main__", "__main__.get_messages"], "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 8 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } }, "hints": [], "inst": { "end_col": 7, "end_line": 112, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 106 } }, "50": { "accessible_scopes": ["__main__", "__main__.get_nonce_updates"], "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 121, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 121 } }, "52": { "accessible_scopes": ["__main__", "__main__.get_nonce_updates"], "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 2 }, "reference_ids": { "__main__.get_nonce_updates.nonce_updates": 24, "__main__.get_nonce_updates.nonce_updates_len": 25 } }, "hints": [ { "location": { "end_col": 7, "end_line": 136, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 124 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 24, "end_line": 122, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 40, "end_line": 137, "input_file": { "filename": "src/merger.cairo" }, "start_col": 27, "start_line": 137 }, "While expanding the reference 'nonce_updates' in:" ], "start_col": 11, "start_line": 122 } }, "53": { "accessible_scopes": ["__main__", "__main__.get_nonce_updates"], "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 3 }, "reference_ids": { "__main__.get_nonce_updates.nonce_updates": 24, "__main__.get_nonce_updates.nonce_updates_len": 25 } }, "hints": [], "inst": { "end_col": 28, "end_line": 123, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 77, "end_line": 137, "input_file": { "filename": "src/merger.cairo" }, "start_col": 60, "start_line": 137 }, "While expanding the reference 'nonce_updates_len' in:" ], "start_col": 11, "start_line": 123 } }, "54": { "accessible_scopes": ["__main__", "__main__.get_nonce_updates"], "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 4 }, "reference_ids": { "__main__.get_nonce_updates.nonce_updates": 24, "__main__.get_nonce_updates.nonce_updates_len": 25 } }, "hints": [], "inst": { "end_col": 79, "end_line": 137, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 137 } }, "55": { "accessible_scopes": ["__main__", "__main__.hash_nonce_update"], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 27, "__main__.hash_nonce_update.res": 28 } }, "hints": [], "inst": { "end_col": 50, "end_line": 140, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 144, "input_file": { "filename": "src/merger.cairo" }, "start_col": 32, "start_line": 144 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 24, "start_line": 140 } }, "56": { "accessible_scopes": ["__main__", "__main__.hash_nonce_update"], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 1 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 27, "__main__.hash_nonce_update.res": 28 } }, "hints": [], "inst": { "end_col": 44, "end_line": 143, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 145, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 145 }, "While expanding the reference 'res' in:" ], "start_col": 15, "start_line": 143 } }, "57": { "accessible_scopes": ["__main__", "__main__.hash_nonce_update"], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 2 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 27, "__main__.hash_nonce_update.res": 28 } }, "hints": [], "inst": { "end_col": 32, "end_line": 145, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 145 } }, "58": { "accessible_scopes": ["__main__", "__main__.hash_nonce_update"], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 3 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 27, "__main__.hash_nonce_update.res": 28 } }, "hints": [], "inst": { "end_col": 6, "end_line": 146, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 144 } }, "60": { "accessible_scopes": ["__main__", "__main__.hash_nonce_update"], "flow_tracking_data": { "ap_tracking": { "group": 9, "offset": 7 }, "reference_ids": { "__main__.hash_nonce_update.nonce_update": 26, "__main__.hash_nonce_update.pedersen_ptr": 29, "__main__.hash_nonce_update.res": 30 } }, "hints": [], "inst": { "end_col": 22, "end_line": 147, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 147 } }, "61": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 7, "end_line": 153, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 153 } }, "63": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 56, "end_line": 150, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 56, "end_line": 150, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 154, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 154 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 150 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 150 } }, "64": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 1 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 14, "end_line": 151, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 154, "input_file": { "filename": "src/merger.cairo" }, "start_col": 21, "start_line": 154 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 151 } }, "65": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 2 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 26, "end_line": 154, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 154 } }, "66": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 18, "end_line": 156, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 156 } }, "68": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 56, "end_line": 150, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 61, "end_line": 158, "input_file": { "filename": "src/merger.cairo" }, "start_col": 49, "start_line": 158 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 150 } }, "69": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 1 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 39, "end_line": 157, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 75, "end_line": 158, "input_file": { "filename": "src/merger.cairo" }, "start_col": 63, "start_line": 158 }, "While expanding the reference 'nonce_update' in:" ], "start_col": 24, "start_line": 157 } }, "70": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 2 }, "reference_ids": { "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 34, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 76, "end_line": 158, "input_file": { "filename": "src/merger.cairo" }, "start_col": 18, "start_line": 158 } }, "72": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 11 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 36, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 61, "end_line": 158, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 159, "input_file": { "filename": "src/merger.cairo" }, "start_col": 32, "start_line": 159 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 49, "start_line": 158 } }, "73": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 12 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 36, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 14, "end_line": 151, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 160, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 160 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 151 } }, "74": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 13 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 36, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 14, "end_line": 158, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 18, "end_line": 160, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 160 }, "While expanding the reference 'hash' in:" ], "start_col": 10, "start_line": 158 } }, "75": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 14 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 36, "__main__.hash_nonce_updates_loop.res": 31 } }, "hints": [], "inst": { "end_col": 6, "end_line": 161, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 159 } }, "77": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 18 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 38, "__main__.hash_nonce_updates_loop.res": 39 } }, "hints": [], "inst": { "end_col": 40, "end_line": 164, "input_file": { "filename": "src/merger.cairo" }, "start_col": 23, "start_line": 164 } }, "79": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 19 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 38, "__main__.hash_nonce_updates_loop.res": 39 } }, "hints": [], "inst": { "end_col": 48, "end_line": 165, "input_file": { "filename": "src/merger.cairo" }, "start_col": 27, "start_line": 165 } }, "81": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 10, "offset": 20 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 38, "__main__.hash_nonce_updates_loop.res": 39 } }, "hints": [], "inst": { "end_col": 6, "end_line": 166, "input_file": { "filename": "src/merger.cairo" }, "start_col": 12, "start_line": 162 } }, "83": { "accessible_scopes": ["__main__", "__main__.hash_nonce_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 11, "offset": 0 }, "reference_ids": { "__main__.hash_nonce_updates_loop.hash": 37, "__main__.hash_nonce_updates_loop.nonce_update": 35, "__main__.hash_nonce_updates_loop.nonce_updates": 32, "__main__.hash_nonce_updates_loop.nonce_updates_len": 33, "__main__.hash_nonce_updates_loop.pedersen_ptr": 40, "__main__.hash_nonce_updates_loop.res": 39 } }, "hints": [], "inst": { "end_col": 7, "end_line": 166, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 162 } }, "84": { "accessible_scopes": ["__main__", "__main__.get_storage_updates"], "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 176, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 176 } }, "86": { "accessible_scopes": ["__main__", "__main__.get_storage_updates"], "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 2 }, "reference_ids": { "__main__.get_storage_updates.storage_updates": 41, "__main__.get_storage_updates.storage_updates_len": 42 } }, "hints": [ { "location": { "end_col": 7, "end_line": 196, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 179 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 26, "end_line": 177, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 197, "input_file": { "filename": "src/merger.cairo" }, "start_col": 29, "start_line": 197 }, "While expanding the reference 'storage_updates' in:" ], "start_col": 11, "start_line": 177 } }, "87": { "accessible_scopes": ["__main__", "__main__.get_storage_updates"], "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 3 }, "reference_ids": { "__main__.get_storage_updates.storage_updates": 41, "__main__.get_storage_updates.storage_updates_len": 42 } }, "hints": [], "inst": { "end_col": 30, "end_line": 178, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 85, "end_line": 197, "input_file": { "filename": "src/merger.cairo" }, "start_col": 66, "start_line": 197 }, "While expanding the reference 'storage_updates_len' in:" ], "start_col": 11, "start_line": 178 } }, "88": { "accessible_scopes": ["__main__", "__main__.get_storage_updates"], "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 4 }, "reference_ids": { "__main__.get_storage_updates.storage_updates": 41, "__main__.get_storage_updates.storage_updates_len": 42 } }, "hints": [], "inst": { "end_col": 87, "end_line": 197, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 197 } }, "89": { "accessible_scopes": ["__main__", "__main__.hash_storage_update"], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 0 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 44, "__main__.hash_storage_update.res": 45, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 52, "end_line": 200, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 204, "input_file": { "filename": "src/merger.cairo" }, "start_col": 32, "start_line": 204 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 26, "start_line": 200 } }, "90": { "accessible_scopes": ["__main__", "__main__.hash_storage_update"], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 1 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 44, "__main__.hash_storage_update.res": 45, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 46, "end_line": 203, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 205, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 205 }, "While expanding the reference 'res' in:" ], "start_col": 15, "start_line": 203 } }, "91": { "accessible_scopes": ["__main__", "__main__.hash_storage_update"], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 2 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 44, "__main__.hash_storage_update.res": 45, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 40, "end_line": 205, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 205 } }, "92": { "accessible_scopes": ["__main__", "__main__.hash_storage_update"], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 3 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 44, "__main__.hash_storage_update.res": 45, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 6, "end_line": 206, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 204 } }, "94": { "accessible_scopes": ["__main__", "__main__.hash_storage_update"], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 7 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 46, "__main__.hash_storage_update.res": 47, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 42, "end_line": 208, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 208 } }, "95": { "accessible_scopes": ["__main__", "__main__.hash_storage_update"], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 8 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 46, "__main__.hash_storage_update.res": 47, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 6, "end_line": 209, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 207 } }, "97": { "accessible_scopes": ["__main__", "__main__.hash_storage_update"], "flow_tracking_data": { "ap_tracking": { "group": 13, "offset": 12 }, "reference_ids": { "__main__.hash_storage_update.pedersen_ptr": 48, "__main__.hash_storage_update.res": 49, "__main__.hash_storage_update.storage_update": 43 } }, "hints": [], "inst": { "end_col": 22, "end_line": 210, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 210 } }, "98": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 7, "end_line": 216, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 216 } }, "100": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 58, "end_line": 213, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 58, "end_line": 213, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 217, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 217 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 32, "start_line": 213 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 32, "start_line": 213 } }, "101": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 1 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 14, "end_line": 214, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 217, "input_file": { "filename": "src/merger.cairo" }, "start_col": 21, "start_line": 217 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 214 } }, "102": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 2 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 26, "end_line": 217, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 217 } }, "103": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 18, "end_line": 219, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 219 } }, "105": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 58, "end_line": 213, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 63, "end_line": 221, "input_file": { "filename": "src/merger.cairo" }, "start_col": 51, "start_line": 221 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 32, "start_line": 213 } }, "106": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 1 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 43, "end_line": 220, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 79, "end_line": 221, "input_file": { "filename": "src/merger.cairo" }, "start_col": 65, "start_line": 221 }, "While expanding the reference 'storage_update' in:" ], "start_col": 26, "start_line": 220 } }, "107": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 2 }, "reference_ids": { "__main__.hash_storage_updates_loop.pedersen_ptr": 53, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 80, "end_line": 221, "input_file": { "filename": "src/merger.cairo" }, "start_col": 18, "start_line": 221 } }, "109": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 16 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 55, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 63, "end_line": 221, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 222, "input_file": { "filename": "src/merger.cairo" }, "start_col": 32, "start_line": 222 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 51, "start_line": 221 } }, "110": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 17 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 55, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 14, "end_line": 214, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 223, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 223 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 214 } }, "111": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 18 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 55, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 14, "end_line": 221, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 18, "end_line": 223, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 223 }, "While expanding the reference 'hash' in:" ], "start_col": 10, "start_line": 221 } }, "112": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 19 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 55, "__main__.hash_storage_updates_loop.res": 50, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 6, "end_line": 224, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 222 } }, "114": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 23 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 57, "__main__.hash_storage_updates_loop.res": 58, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 44, "end_line": 227, "input_file": { "filename": "src/merger.cairo" }, "start_col": 25, "start_line": 227 } }, "116": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 24 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 57, "__main__.hash_storage_updates_loop.res": 58, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 52, "end_line": 228, "input_file": { "filename": "src/merger.cairo" }, "start_col": 29, "start_line": 228 } }, "118": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 14, "offset": 25 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 57, "__main__.hash_storage_updates_loop.res": 58, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 6, "end_line": 229, "input_file": { "filename": "src/merger.cairo" }, "start_col": 12, "start_line": 225 } }, "120": { "accessible_scopes": ["__main__", "__main__.hash_storage_updates_loop"], "flow_tracking_data": { "ap_tracking": { "group": 15, "offset": 0 }, "reference_ids": { "__main__.hash_storage_updates_loop.hash": 56, "__main__.hash_storage_updates_loop.pedersen_ptr": 59, "__main__.hash_storage_updates_loop.res": 58, "__main__.hash_storage_updates_loop.storage_update": 54, "__main__.hash_storage_updates_loop.storage_updates": 51, "__main__.hash_storage_updates_loop.storage_updates_len": 52 } }, "hints": [], "inst": { "end_col": 7, "end_line": 229, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 225 } }, "121": { "accessible_scopes": ["__main__", "__main__.get_contract_updates"], "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 239, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 239 } }, "123": { "accessible_scopes": ["__main__", "__main__.get_contract_updates"], "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 2 }, "reference_ids": { "__main__.get_contract_updates.contract_updates": 60, "__main__.get_contract_updates.contract_updates_len": 61 } }, "hints": [ { "location": { "end_col": 7, "end_line": 254, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 242 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 27, "end_line": 240, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 255, "input_file": { "filename": "src/merger.cairo" }, "start_col": 30, "start_line": 255 }, "While expanding the reference 'contract_updates' in:" ], "start_col": 11, "start_line": 240 } }, "124": { "accessible_scopes": ["__main__", "__main__.get_contract_updates"], "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 3 }, "reference_ids": { "__main__.get_contract_updates.contract_updates": 60, "__main__.get_contract_updates.contract_updates_len": 61 } }, "hints": [], "inst": { "end_col": 31, "end_line": 241, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 89, "end_line": 255, "input_file": { "filename": "src/merger.cairo" }, "start_col": 69, "start_line": 255 }, "While expanding the reference 'contract_updates_len' in:" ], "start_col": 11, "start_line": 241 } }, "125": { "accessible_scopes": ["__main__", "__main__.get_contract_updates"], "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 4 }, "reference_ids": { "__main__.get_contract_updates.contract_updates": 60, "__main__.get_contract_updates.contract_updates_len": 61 } }, "hints": [], "inst": { "end_col": 91, "end_line": 255, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 255 } }, "126": { "accessible_scopes": ["__main__", "__main__.hash_contract_update"], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 0 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 63, "__main__.hash_contract_update.res": 64 } }, "hints": [], "inst": { "end_col": 53, "end_line": 258, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 262, "input_file": { "filename": "src/merger.cairo" }, "start_col": 32, "start_line": 262 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 27, "start_line": 258 } }, "127": { "accessible_scopes": ["__main__", "__main__.hash_contract_update"], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 1 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 63, "__main__.hash_contract_update.res": 64 } }, "hints": [], "inst": { "end_col": 47, "end_line": 261, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 263, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 263 }, "While expanding the reference 'res' in:" ], "start_col": 15, "start_line": 261 } }, "128": { "accessible_scopes": ["__main__", "__main__.hash_contract_update"], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 2 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 63, "__main__.hash_contract_update.res": 64 } }, "hints": [], "inst": { "end_col": 40, "end_line": 263, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 263 } }, "129": { "accessible_scopes": ["__main__", "__main__.hash_contract_update"], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 3 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 63, "__main__.hash_contract_update.res": 64 } }, "hints": [], "inst": { "end_col": 6, "end_line": 264, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 262 } }, "131": { "accessible_scopes": ["__main__", "__main__.hash_contract_update"], "flow_tracking_data": { "ap_tracking": { "group": 17, "offset": 7 }, "reference_ids": { "__main__.hash_contract_update.contract_update": 62, "__main__.hash_contract_update.pedersen_ptr": 65, "__main__.hash_contract_update.res": 66 } }, "hints": [], "inst": { "end_col": 22, "end_line": 265, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 265 } }, "132": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 7, "end_line": 271, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 271 } }, "134": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 59, "end_line": 268, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 59, "end_line": 268, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 272, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 272 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 268 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 268 } }, "135": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 1 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 14, "end_line": 269, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 272, "input_file": { "filename": "src/merger.cairo" }, "start_col": 21, "start_line": 272 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 269 } }, "136": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 2 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 26, "end_line": 272, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 272 } }, "137": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 18, "end_line": 274, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 274 } }, "139": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 59, "end_line": 268, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 64, "end_line": 276, "input_file": { "filename": "src/merger.cairo" }, "start_col": 52, "start_line": 276 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 268 } }, "140": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 1 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 45, "end_line": 275, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 81, "end_line": 276, "input_file": { "filename": "src/merger.cairo" }, "start_col": 66, "start_line": 276 }, "While expanding the reference 'contract_update' in:" ], "start_col": 27, "start_line": 275 } }, "141": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 2 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.pedersen_ptr": 70, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 82, "end_line": 276, "input_file": { "filename": "src/merger.cairo" }, "start_col": 18, "start_line": 276 } }, "143": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 11 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 72, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 64, "end_line": 276, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 277, "input_file": { "filename": "src/merger.cairo" }, "start_col": 32, "start_line": 277 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 52, "start_line": 276 } }, "144": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 12 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 72, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 14, "end_line": 269, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 278, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 278 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 269 } }, "145": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 13 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 72, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 14, "end_line": 276, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 18, "end_line": 278, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 278 }, "While expanding the reference 'hash' in:" ], "start_col": 10, "start_line": 276 } }, "146": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 14 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 72, "__main__.hash_contract_updates_loop.res": 67 } }, "hints": [], "inst": { "end_col": 6, "end_line": 279, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 277 } }, "148": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 18 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 74, "__main__.hash_contract_updates_loop.res": 75 } }, "hints": [], "inst": { "end_col": 46, "end_line": 282, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 282 } }, "150": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 19 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 74, "__main__.hash_contract_updates_loop.res": 75 } }, "hints": [], "inst": { "end_col": 54, "end_line": 283, "input_file": { "filename": "src/merger.cairo" }, "start_col": 30, "start_line": 283 } }, "152": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 18, "offset": 20 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 74, "__main__.hash_contract_updates_loop.res": 75 } }, "hints": [], "inst": { "end_col": 6, "end_line": 284, "input_file": { "filename": "src/merger.cairo" }, "start_col": 12, "start_line": 280 } }, "154": { "accessible_scopes": [ "__main__", "__main__.hash_contract_updates_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 19, "offset": 0 }, "reference_ids": { "__main__.hash_contract_updates_loop.contract_update": 71, "__main__.hash_contract_updates_loop.contract_updates": 68, "__main__.hash_contract_updates_loop.contract_updates_len": 69, "__main__.hash_contract_updates_loop.hash": 73, "__main__.hash_contract_updates_loop.pedersen_ptr": 76, "__main__.hash_contract_updates_loop.res": 75 } }, "hints": [], "inst": { "end_col": 7, "end_line": 284, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 280 } }, "155": { "accessible_scopes": ["__main__", "__main__.get_declared_classes"], "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 293, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 293 } }, "157": { "accessible_scopes": ["__main__", "__main__.get_declared_classes"], "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 2 }, "reference_ids": { "__main__.get_declared_classes.declared_classes": 77, "__main__.get_declared_classes.declared_classes_len": 78 } }, "hints": [ { "location": { "end_col": 7, "end_line": 308, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 296 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 27, "end_line": 294, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 309, "input_file": { "filename": "src/merger.cairo" }, "start_col": 30, "start_line": 309 }, "While expanding the reference 'declared_classes' in:" ], "start_col": 11, "start_line": 294 } }, "158": { "accessible_scopes": ["__main__", "__main__.get_declared_classes"], "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 3 }, "reference_ids": { "__main__.get_declared_classes.declared_classes": 77, "__main__.get_declared_classes.declared_classes_len": 78 } }, "hints": [], "inst": { "end_col": 31, "end_line": 295, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 89, "end_line": 309, "input_file": { "filename": "src/merger.cairo" }, "start_col": 69, "start_line": 309 }, "While expanding the reference 'declared_classes_len' in:" ], "start_col": 11, "start_line": 295 } }, "159": { "accessible_scopes": ["__main__", "__main__.get_declared_classes"], "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 4 }, "reference_ids": { "__main__.get_declared_classes.declared_classes": 77, "__main__.get_declared_classes.declared_classes_len": 78 } }, "hints": [], "inst": { "end_col": 91, "end_line": 309, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 309 } }, "160": { "accessible_scopes": ["__main__", "__main__.hash_declared_class"], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 0 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 80, "__main__.hash_declared_class.res": 81 } }, "hints": [], "inst": { "end_col": 52, "end_line": 312, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 316, "input_file": { "filename": "src/merger.cairo" }, "start_col": 32, "start_line": 316 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 26, "start_line": 312 } }, "161": { "accessible_scopes": ["__main__", "__main__.hash_declared_class"], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 1 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 80, "__main__.hash_declared_class.res": 81 } }, "hints": [], "inst": { "end_col": 40, "end_line": 315, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 317, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 317 }, "While expanding the reference 'res' in:" ], "start_col": 15, "start_line": 315 } }, "162": { "accessible_scopes": ["__main__", "__main__.hash_declared_class"], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 2 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 80, "__main__.hash_declared_class.res": 81 } }, "hints": [], "inst": { "end_col": 48, "end_line": 317, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 317 } }, "163": { "accessible_scopes": ["__main__", "__main__.hash_declared_class"], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 3 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 80, "__main__.hash_declared_class.res": 81 } }, "hints": [], "inst": { "end_col": 6, "end_line": 318, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 316 } }, "165": { "accessible_scopes": ["__main__", "__main__.hash_declared_class"], "flow_tracking_data": { "ap_tracking": { "group": 21, "offset": 7 }, "reference_ids": { "__main__.hash_declared_class.declared_class": 79, "__main__.hash_declared_class.pedersen_ptr": 82, "__main__.hash_declared_class.res": 83 } }, "hints": [], "inst": { "end_col": 22, "end_line": 319, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 319 } }, "166": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 7, "end_line": 325, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 325 } }, "168": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 59, "end_line": 322, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 59, "end_line": 322, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 26, "end_line": 326, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 326 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 322 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 322 } }, "169": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 1 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 14, "end_line": 323, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 24, "end_line": 326, "input_file": { "filename": "src/merger.cairo" }, "start_col": 21, "start_line": 326 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 323 } }, "170": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 2 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 26, "end_line": 326, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 326 } }, "171": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 18, "end_line": 328, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 328 } }, "173": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 59, "end_line": 322, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 63, "end_line": 330, "input_file": { "filename": "src/merger.cairo" }, "start_col": 51, "start_line": 330 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 33, "start_line": 322 } }, "174": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 1 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 44, "end_line": 329, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 79, "end_line": 330, "input_file": { "filename": "src/merger.cairo" }, "start_col": 65, "start_line": 330 }, "While expanding the reference 'declared_class' in:" ], "start_col": 26, "start_line": 329 } }, "175": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 2 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.pedersen_ptr": 87, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 80, "end_line": 330, "input_file": { "filename": "src/merger.cairo" }, "start_col": 18, "start_line": 330 } }, "177": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 11 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 89, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 63, "end_line": 330, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 331, "input_file": { "filename": "src/merger.cairo" }, "start_col": 32, "start_line": 331 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 51, "start_line": 330 } }, "178": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 12 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 89, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 14, "end_line": 323, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 12, "end_line": 332, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 332 }, "While expanding the reference 'res' in:" ], "start_col": 5, "start_line": 323 } }, "179": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 13 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 89, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 14, "end_line": 330, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 18, "end_line": 332, "input_file": { "filename": "src/merger.cairo" }, "start_col": 14, "start_line": 332 }, "While expanding the reference 'hash' in:" ], "start_col": 10, "start_line": 330 } }, "180": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 14 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 89, "__main__.hash_declared_classes_loop.res": 84 } }, "hints": [], "inst": { "end_col": 6, "end_line": 333, "input_file": { "filename": "src/merger.cairo" }, "start_col": 17, "start_line": 331 } }, "182": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 18 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 91, "__main__.hash_declared_classes_loop.res": 92 } }, "hints": [], "inst": { "end_col": 46, "end_line": 336, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 336 } }, "184": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 19 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 91, "__main__.hash_declared_classes_loop.res": 92 } }, "hints": [], "inst": { "end_col": 54, "end_line": 337, "input_file": { "filename": "src/merger.cairo" }, "start_col": 30, "start_line": 337 } }, "186": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 22, "offset": 20 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 91, "__main__.hash_declared_classes_loop.res": 92 } }, "hints": [], "inst": { "end_col": 6, "end_line": 338, "input_file": { "filename": "src/merger.cairo" }, "start_col": 12, "start_line": 334 } }, "188": { "accessible_scopes": [ "__main__", "__main__.hash_declared_classes_loop" ], "flow_tracking_data": { "ap_tracking": { "group": 23, "offset": 0 }, "reference_ids": { "__main__.hash_declared_classes_loop.declared_class": 88, "__main__.hash_declared_classes_loop.declared_classes": 85, "__main__.hash_declared_classes_loop.declared_classes_len": 86, "__main__.hash_declared_classes_loop.hash": 90, "__main__.hash_declared_classes_loop.pedersen_ptr": 93, "__main__.hash_declared_classes_loop.res": 92 } }, "hints": [], "inst": { "end_col": 7, "end_line": 338, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 334 } }, "189": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 0 }, "reference_ids": { "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 7, "end_line": 343, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 343 } }, "191": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 0 }, "reference_ids": { "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 26, "end_line": 344, "input_file": { "filename": "src/merger.cairo" }, "start_col": 16, "start_line": 344 } }, "192": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 1 }, "reference_ids": { "__main__.replace_or_append.__temp0": 98, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 33, "end_line": 344, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 344 } }, "193": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 1 }, "reference_ids": { "__main__.replace_or_append.__temp0": 98, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 27, "end_line": 345, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 345 } }, "195": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 2 }, "reference_ids": { "__main__.replace_or_append.__temp0": 98, "__main__.replace_or_append.__temp1": 99, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 28, "end_line": 345, "input_file": { "filename": "src/merger.cairo" }, "start_col": 16, "start_line": 345 } }, "196": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 3 }, "reference_ids": { "__main__.replace_or_append.__temp0": 98, "__main__.replace_or_append.__temp1": 99, "__main__.replace_or_append.__temp2": 100, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 37, "end_line": 345, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 345 } }, "197": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 3 }, "reference_ids": { "__main__.replace_or_append.__temp0": 98, "__main__.replace_or_append.__temp1": 99, "__main__.replace_or_append.__temp2": 100, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 27, "end_line": 346, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 346 } }, "199": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 4 }, "reference_ids": { "__main__.replace_or_append.__temp0": 98, "__main__.replace_or_append.__temp1": 99, "__main__.replace_or_append.__temp2": 100, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 29, "end_line": 346, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 346 } }, "200": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 0 }, "reference_ids": { "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 17, "end_line": 349, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 349 } }, "201": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 1 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 24, "end_line": 349, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 349 } }, "202": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 2 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 7, "end_line": 349, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 349 } }, "204": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 2 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 25, "end_line": 350, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 350 } }, "205": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 2 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 27, "end_line": 351, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 351 } }, "207": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 3 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 29, "end_line": 351, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 351 } }, "208": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 2 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 39, "end_line": 354, "input_file": { "filename": "src/merger.cairo" }, "start_col": 30, "start_line": 354 } }, "210": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 3 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 48, "end_line": 354, "input_file": { "filename": "src/merger.cairo" }, "start_col": 41, "start_line": 354 } }, "212": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 4 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 58, "end_line": 342, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 53, "end_line": 354, "input_file": { "filename": "src/merger.cairo" }, "start_col": 50, "start_line": 354 }, "While expanding the reference 'key' in:" ], "start_col": 49, "start_line": 342 } }, "213": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 5 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 71, "end_line": 342, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 60, "end_line": 354, "input_file": { "filename": "src/merger.cairo" }, "start_col": 55, "start_line": 354 }, "While expanding the reference 'value' in:" ], "start_col": 60, "start_line": 342 } }, "214": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 24, "offset": 6 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 61, "end_line": 354, "input_file": { "filename": "src/merger.cairo" }, "start_col": 12, "start_line": 354 } }, "216": { "accessible_scopes": ["__main__", "__main__.replace_or_append"], "flow_tracking_data": { "ap_tracking": { "group": 25, "offset": 0 }, "reference_ids": { "__main__.replace_or_append.__temp3": 101, "__main__.replace_or_append.__temp4": 102, "__main__.replace_or_append.array": 94, "__main__.replace_or_append.key": 96, "__main__.replace_or_append.len": 95, "__main__.replace_or_append.value": 97 } }, "hints": [], "inst": { "end_col": 62, "end_line": 354, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 354 } }, "217": { "accessible_scopes": ["__main__", "__main__.get_merged_da"], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 18, "end_line": 358, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 358 } }, "219": { "accessible_scopes": ["__main__", "__main__.get_merged_da"], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 2 }, "reference_ids": { "__main__.get_merged_da.merged": 103, "__main__.get_merged_da.merged_len": 104 } }, "hints": [ { "location": { "end_col": 7, "end_line": 389, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 361 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 17, "end_line": 359, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 28, "end_line": 392, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 392 }, "While expanding the reference 'merged' in:" ], "start_col": 11, "start_line": 359 } }, "220": { "accessible_scopes": ["__main__", "__main__.get_merged_da"], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 3 }, "reference_ids": { "__main__.get_merged_da.merged": 103, "__main__.get_merged_da.merged_len": 104 } }, "hints": [], "inst": { "end_col": 21, "end_line": 360, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 36, "end_line": 393, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 393 }, "While expanding the reference 'merged_len' in:" ], "start_col": 11, "start_line": 360 } }, "221": { "accessible_scopes": ["__main__", "__main__.get_merged_da"], "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 4 }, "reference_ids": { "__main__.get_merged_da.merged": 103, "__main__.get_merged_da.merged_len": 104 } }, "hints": [], "inst": { "end_col": 7, "end_line": 395, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 391 } }, "222": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 0 }, "reference_ids": { "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 107 } }, "hints": [], "inst": { "end_col": 7, "end_line": 399, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 399 } }, "224": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 0 }, "reference_ids": { "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 107 } }, "hints": [], "inst": { "end_col": 36, "end_line": 398, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 36, "end_line": 398, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 19, "end_line": 400, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 400 }, "While trying to retrieve the implicit argument 'output_ptr' in:" ], "start_col": 19, "start_line": 398 }, "While expanding the reference 'output_ptr' in:" ], "start_col": 19, "start_line": 398 } }, "225": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 1 }, "reference_ids": { "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 107 } }, "hints": [], "inst": { "end_col": 19, "end_line": 400, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 400 } }, "226": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 0 }, "reference_ids": { "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 107 } }, "hints": [], "inst": { "end_col": 18, "end_line": 402, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 402 } }, "228": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 0 }, "reference_ids": { "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 107, "__main__.output_array.value": 108 } }, "hints": [], "inst": { "end_col": 24, "end_line": 403, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 33, "end_line": 404, "input_file": { "filename": "src/merger.cairo" }, "start_col": 28, "start_line": 404 }, "While expanding the reference 'value' in:" ], "start_col": 17, "start_line": 403 } }, "229": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 1 }, "reference_ids": { "__main__.output_array.__temp5": 109, "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 107, "__main__.output_array.value": 108 } }, "hints": [], "inst": { "end_col": 34, "end_line": 404, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 404 } }, "230": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 1 }, "reference_ids": { "__main__.output_array.__temp5": 109, "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 110, "__main__.output_array.value": 108 } }, "hints": [], "inst": { "end_col": 36, "end_line": 405, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 406, "input_file": { "filename": "src/merger.cairo" }, "start_col": 36, "start_line": 406 }, "While expanding the reference 'output_ptr' in:" ], "start_col": 22, "start_line": 405 } }, "232": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 2 }, "reference_ids": { "__main__.output_array.__temp5": 109, "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 110, "__main__.output_array.value": 108 } }, "hints": [], "inst": { "end_col": 57, "end_line": 406, "input_file": { "filename": "src/merger.cairo" }, "start_col": 48, "start_line": 406 } }, "234": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 3 }, "reference_ids": { "__main__.output_array.__temp5": 109, "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 110, "__main__.output_array.value": 108 } }, "hints": [], "inst": { "end_col": 66, "end_line": 406, "input_file": { "filename": "src/merger.cairo" }, "start_col": 59, "start_line": 406 } }, "236": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 27, "offset": 4 }, "reference_ids": { "__main__.output_array.__temp5": 109, "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 110, "__main__.output_array.value": 108 } }, "hints": [], "inst": { "end_col": 67, "end_line": 406, "input_file": { "filename": "src/merger.cairo" }, "start_col": 12, "start_line": 406 } }, "238": { "accessible_scopes": ["__main__", "__main__.output_array"], "flow_tracking_data": { "ap_tracking": { "group": 28, "offset": 0 }, "reference_ids": { "__main__.output_array.__temp5": 109, "__main__.output_array.array": 105, "__main__.output_array.len": 106, "__main__.output_array.output_ptr": 111, "__main__.output_array.value": 108 } }, "hints": [], "inst": { "end_col": 68, "end_line": 406, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 406 } }, "239": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 0 }, "reference_ids": {} }, "hints": [], "inst": { "end_col": 21, "end_line": 426, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 426 } }, "241": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 14 }, "reference_ids": { "__main__.get_input.input_config": 112 } }, "hints": [], "inst": { "end_col": 28, "end_line": 430, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 430 } }, "243": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 20 }, "reference_ids": { "__main__.get_input.input_config": 112, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114 } }, "hints": [], "inst": { "end_col": 30, "end_line": 434, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 434 } }, "245": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 26 }, "reference_ids": { "__main__.get_input.input_config": 112, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116 } }, "hints": [], "inst": { "end_col": 31, "end_line": 438, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 438 } }, "247": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 32 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.input_config": 112, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116 } }, "hints": [], "inst": { "end_col": 31, "end_line": 442, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 442 } }, "249": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 38 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116 } }, "hints": [], "inst": { "end_col": 51, "end_line": 444, "input_file": { "filename": "src/merger.cairo" }, "start_col": 37, "start_line": 444 } }, "251": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 48 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116 } }, "hints": [], "inst": { "end_col": 50, "end_line": 445, "input_file": { "filename": "src/merger.cairo" }, "start_col": 36, "start_line": 445 } }, "253": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 54 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 34, "end_line": 425, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 38, "end_line": 448, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 448 }, "While expanding the reference 'input_config' in:" ], "start_col": 9, "start_line": 425 } }, "254": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 55 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 34, "end_line": 425, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 38, "end_line": 448, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 448 }, "While expanding the reference 'input_config' in:" ], "start_col": 9, "start_line": 425 } }, "255": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 56 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 34, "end_line": 425, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 38, "end_line": 448, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 448 }, "While expanding the reference 'input_config' in:" ], "start_col": 9, "start_line": 425 } }, "256": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 57 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 34, "end_line": 425, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 38, "end_line": 448, "input_file": { "filename": "src/merger.cairo" }, "start_col": 26, "start_line": 448 }, "While expanding the reference 'input_config' in:" ], "start_col": 9, "start_line": 425 } }, "257": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 58 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 32, "end_line": 429, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 48, "end_line": 449, "input_file": { "filename": "src/merger.cairo" }, "start_col": 31, "start_line": 449 }, "While expanding the reference 'nonce_updates_len' in:" ], "start_col": 9, "start_line": 429 } }, "258": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 59 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 37, "end_line": 428, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 40, "end_line": 450, "input_file": { "filename": "src/merger.cairo" }, "start_col": 27, "start_line": 450 }, "While expanding the reference 'nonce_updates' in:" ], "start_col": 9, "start_line": 428 } }, "259": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 60 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 34, "end_line": 433, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 52, "end_line": 451, "input_file": { "filename": "src/merger.cairo" }, "start_col": 33, "start_line": 451 }, "While expanding the reference 'storage_updates_len' in:" ], "start_col": 9, "start_line": 433 } }, "260": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 61 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 41, "end_line": 432, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 44, "end_line": 452, "input_file": { "filename": "src/merger.cairo" }, "start_col": 29, "start_line": 452 }, "While expanding the reference 'storage_updates' in:" ], "start_col": 9, "start_line": 432 } }, "261": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 62 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 35, "end_line": 437, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 54, "end_line": 453, "input_file": { "filename": "src/merger.cairo" }, "start_col": 34, "start_line": 453 }, "While expanding the reference 'contract_updates_len' in:" ], "start_col": 9, "start_line": 437 } }, "262": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 63 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 43, "end_line": 436, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 454, "input_file": { "filename": "src/merger.cairo" }, "start_col": 30, "start_line": 454 }, "While expanding the reference 'contract_updates' in:" ], "start_col": 9, "start_line": 436 } }, "263": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 64 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 35, "end_line": 441, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 54, "end_line": 455, "input_file": { "filename": "src/merger.cairo" }, "start_col": 34, "start_line": 455 }, "While expanding the reference 'declared_classes_len' in:" ], "start_col": 9, "start_line": 441 } }, "264": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 65 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 42, "end_line": 440, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 46, "end_line": 456, "input_file": { "filename": "src/merger.cairo" }, "start_col": 30, "start_line": 456 }, "While expanding the reference 'declared_classes' in:" ], "start_col": 9, "start_line": 440 } }, "265": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 66 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 33, "end_line": 444, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 30, "end_line": 457, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 457 }, "While expanding the reference 'messages' in:" ], "start_col": 10, "start_line": 444 } }, "266": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 67 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 33, "end_line": 444, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 30, "end_line": 457, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 457 }, "While expanding the reference 'messages' in:" ], "start_col": 10, "start_line": 444 } }, "267": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 68 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 33, "end_line": 444, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 30, "end_line": 457, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 457 }, "While expanding the reference 'messages' in:" ], "start_col": 10, "start_line": 444 } }, "268": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 69 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 33, "end_line": 444, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 30, "end_line": 457, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 457 }, "While expanding the reference 'messages' in:" ], "start_col": 10, "start_line": 444 } }, "269": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 70 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 32, "end_line": 445, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 30, "end_line": 458, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 458 }, "While expanding the reference 'world_da' in:" ], "start_col": 10, "start_line": 445 } }, "270": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 71 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 32, "end_line": 445, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 30, "end_line": 458, "input_file": { "filename": "src/merger.cairo" }, "start_col": 22, "start_line": 458 }, "While expanding the reference 'world_da' in:" ], "start_col": 10, "start_line": 445 } }, "271": { "accessible_scopes": ["__main__", "__main__.get_input"], "flow_tracking_data": { "ap_tracking": { "group": 29, "offset": 72 }, "reference_ids": { "__main__.get_input.contract_updates": 117, "__main__.get_input.contract_updates_len": 118, "__main__.get_input.declared_classes": 119, "__main__.get_input.declared_classes_len": 120, "__main__.get_input.input_config": 112, "__main__.get_input.messages": 121, "__main__.get_input.nonce_updates": 113, "__main__.get_input.nonce_updates_len": 114, "__main__.get_input.storage_updates": 115, "__main__.get_input.storage_updates_len": 116, "__main__.get_input.world_da": 122 } }, "hints": [], "inst": { "end_col": 7, "end_line": 460, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 447 } }, "272": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 0 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 18, "end_line": 464, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 464 } }, "274": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 37 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [ { "location": { "end_col": 7, "end_line": 469, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 467 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 46, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 35, "start_line": 470 } }, "276": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "277": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "278": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "279": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "280": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "281": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "282": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "283": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "284": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "285": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "286": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "287": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "288": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "289": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "290": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "291": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "292": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "293": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 127, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 470, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 470 }, "While auto generating local variable for 'input_1'." ], "start_col": 10, "start_line": 470 } }, "294": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [ { "location": { "end_col": 7, "end_line": 474, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 472 }, "n_prefix_newlines": 1 } ], "inst": { "end_col": 46, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 35, "start_line": 475 } }, "296": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "297": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "298": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "299": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "300": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "301": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "302": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "303": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "304": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "305": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "306": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "307": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "308": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "309": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "310": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "311": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "312": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "313": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 129, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 31, "end_line": 475, "input_file": { "filename": "src/merger.cairo" }, "start_col": 10, "start_line": 475 }, "While auto generating local variable for 'input_2'." ], "start_col": 10, "start_line": 475 } }, "314": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 65, "end_line": 478, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 478 } }, "315": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 185 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 29, "end_line": 479, "input_file": { "filename": "src/merger.cairo" }, "start_col": 28, "start_line": 479 } }, "317": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 186 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 30, "end_line": 479, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 479 } }, "318": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 186 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 62, "end_line": 480, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 480 } }, "319": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 186 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 60, "end_line": 481, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 481 } }, "320": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 186 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 61, "end_line": 482, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 482 } }, "321": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 186 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } }, "hints": [], "inst": { "end_col": 58, "end_line": 486, "input_file": { "filename": "src/merger.cairo" }, "start_col": 43, "start_line": 486 } }, "323": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 192 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 133 } }, "hints": [], "inst": { "end_col": 56, "end_line": 463, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 71, "end_line": 488, "input_file": { "filename": "src/merger.cairo" }, "start_col": 59, "start_line": 488 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 463 } }, "324": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 193 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 133 } }, "hints": [], "inst": { "end_col": 26, "end_line": 487, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 22, "end_line": 489, "input_file": { "filename": "src/merger.cairo" }, "start_col": 9, "start_line": 489 }, "While expanding the reference 'world_da_hash' in:" ], "start_col": 25, "start_line": 487 } }, "326": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 194 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 133 } }, "hints": [], "inst": { "end_col": 48, "end_line": 489, "input_file": { "filename": "src/merger.cairo" }, "start_col": 24, "start_line": 489 } }, "327": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 195 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 133 } }, "hints": [], "inst": { "end_col": 78, "end_line": 489, "input_file": { "filename": "src/merger.cairo" }, "start_col": 50, "start_line": 489 } }, "328": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 196 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 133 } }, "hints": [], "inst": { "end_col": 6, "end_line": 490, "input_file": { "filename": "src/merger.cairo" }, "start_col": 27, "start_line": 488 } }, "330": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 0 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 134, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 71, "end_line": 488, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 71, "end_line": 488, "input_file": { "filename": "src/merger.cairo" }, "start_col": 59, "start_line": 488 }, "While auto generating local variable for 'pedersen_ptr'." ], "start_col": 59, "start_line": 488 } }, "331": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 0 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 42, "end_line": 491, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 491 } }, "332": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 0 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 137, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 127, "end_line": 496, "input_file": { "filename": "src/merger.cairo" }, "start_col": 28, "start_line": 496 } }, "333": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 1 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 137, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 128, "end_line": 496, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 496 } }, "334": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 1 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 139, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 36, "end_line": 497, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 39, "end_line": 498, "input_file": { "filename": "src/merger.cairo" }, "start_col": 29, "start_line": 498 }, "While expanding the reference 'output_ptr' in:" ], "start_col": 22, "start_line": 497 } }, "336": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 2 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 139, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 85, "end_line": 498, "input_file": { "filename": "src/merger.cairo" }, "start_col": 41, "start_line": 498 } }, "337": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 3 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 139, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 135, "end_line": 498, "input_file": { "filename": "src/merger.cairo" }, "start_col": 87, "start_line": 498 } }, "338": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 31, "offset": 4 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 139, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 136, "end_line": 498, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 498 } }, "340": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 32, "offset": 0 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 140, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 85, "end_line": 499, "input_file": { "filename": "src/merger.cairo" }, "start_col": 41, "start_line": 499 } }, "341": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 32, "offset": 1 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 140, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 135, "end_line": 499, "input_file": { "filename": "src/merger.cairo" }, "start_col": 87, "start_line": 499 } }, "342": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 32, "offset": 2 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 140, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 136, "end_line": 499, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 499 } }, "344": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 0 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 141, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 127, "end_line": 501, "input_file": { "filename": "src/merger.cairo" }, "start_col": 28, "start_line": 501 } }, "345": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 1 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 141, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 128, "end_line": 501, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 501 } }, "346": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 1 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 143, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 36, "end_line": 502, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 39, "end_line": 503, "input_file": { "filename": "src/merger.cairo" }, "start_col": 29, "start_line": 503 }, "While expanding the reference 'output_ptr' in:" ], "start_col": 22, "start_line": 502 } }, "348": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 2 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 143, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 85, "end_line": 503, "input_file": { "filename": "src/merger.cairo" }, "start_col": 41, "start_line": 503 } }, "349": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 3 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 143, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 135, "end_line": 503, "input_file": { "filename": "src/merger.cairo" }, "start_col": 87, "start_line": 503 } }, "350": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 33, "offset": 4 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 143, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 136, "end_line": 503, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 503 } }, "352": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 34, "offset": 0 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 144, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 85, "end_line": 504, "input_file": { "filename": "src/merger.cairo" }, "start_col": 41, "start_line": 504 } }, "353": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 34, "offset": 1 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 144, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 135, "end_line": 504, "input_file": { "filename": "src/merger.cairo" }, "start_col": 87, "start_line": 504 } }, "354": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 34, "offset": 2 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 144, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 136, "end_line": 504, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 504 } }, "356": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 35, "offset": 0 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 145, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 71, "end_line": 488, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 71, "end_line": 488, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 56, "end_line": 463, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 15, "end_line": 508, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 508 }, "While trying to retrieve the implicit argument 'pedersen_ptr' in:" ], "start_col": 30, "start_line": 463 }, "While expanding the reference 'pedersen_ptr' in:" ], "start_col": 59, "start_line": 488 }, "While auto generating local variable for 'pedersen_ptr'." ], "start_col": 59, "start_line": 488 } }, "357": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 35, "offset": 1 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 145, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 79, "end_line": 463, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 79, "end_line": 463, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 15, "end_line": 508, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 508 }, "While trying to retrieve the implicit argument 'range_check_ptr' in:" ], "start_col": 58, "start_line": 463 }, "While expanding the reference 'range_check_ptr' in:" ], "start_col": 58, "start_line": 463 } }, "358": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 35, "offset": 2 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 145, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 99, "end_line": 463, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 99, "end_line": 463, "input_file": { "filename": "src/merger.cairo" }, "parent_location": [ { "end_col": 15, "end_line": 508, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 508 }, "While trying to retrieve the implicit argument 'bitwise_ptr' in:" ], "start_col": 81, "start_line": 463 }, "While expanding the reference 'bitwise_ptr' in:" ], "start_col": 81, "start_line": 463 } }, "359": { "accessible_scopes": ["__main__", "__main__.main"], "flow_tracking_data": { "ap_tracking": { "group": 35, "offset": 3 }, "reference_ids": { "__main__.main.__temp6": 131, "__main__.main.__temp7": 138, "__main__.main.__temp8": 142, "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.input_2": 130, "__main__.main.merged_world_da": 132, "__main__.main.output_ptr": 145, "__main__.main.pedersen_ptr": 136, "__main__.main.range_check_ptr": 125, "__main__.main.world_da_hash": 135 } }, "hints": [], "inst": { "end_col": 15, "end_line": 508, "input_file": { "filename": "src/merger.cairo" }, "start_col": 5, "start_line": 508 } } } }, "hints": { "14": [ { "accessible_scopes": ["__main__", "__main__.get_hashes"], "code": "ids.prev_state_root = int(prepared_program_input[\"prev_state_root\"])\nids.block_number = int(prepared_program_input[\"block_number\"])\nids.block_hash = int(prepared_program_input[\"block_hash\"])\nids.config_hash = int(prepared_program_input[\"config_hash\"])", "flow_tracking_data": { "ap_tracking": { "group": 3, "offset": 8 }, "reference_ids": { "__main__.get_hashes.block_hash": 8, "__main__.get_hashes.block_number": 7, "__main__.get_hashes.config_hash": 9, "__main__.get_hashes.input_config": 5, "__main__.get_hashes.prev_state_root": 6 } } } ], "21": [ { "accessible_scopes": ["__main__", "__main__.get_world_da"], "code": "world_da = [int(wd) for wd in prepared_program_input[\"world_da\"]]\nids.world_da = segments.gen_arg(world_da)\nids.world_da_len = len(world_da)", "flow_tracking_data": { "ap_tracking": { "group": 4, "offset": 2 }, "reference_ids": { "__main__.get_world_da.world_da": 10, "__main__.get_world_da.world_da_len": 11 } } } ], "45": [ { "accessible_scopes": ["__main__", "__main__.get_messages"], "code": "message_to_starknet_segment = \\\n [int(x) for x in prepared_program_input[\"message_to_starknet_segment\"]]\nmessage_to_appchain_segment = \\\n [int(x) for x in prepared_program_input[\"message_to_appchain_segment\"]]\n\nids.message_to_starknet_segment = \\\n segments.gen_arg(message_to_starknet_segment)\nids.message_to_starknet_segment_len = \\\n len(message_to_starknet_segment)\nids.message_to_appchain_segment = \\\n segments.gen_arg(message_to_appchain_segment)\nids.message_to_appchain_segment_len = \\\n len(message_to_appchain_segment)", "flow_tracking_data": { "ap_tracking": { "group": 7, "offset": 4 }, "reference_ids": { "__main__.get_messages.message_to_appchain_segment": 22, "__main__.get_messages.message_to_appchain_segment_len": 23, "__main__.get_messages.message_to_starknet_segment": 20, "__main__.get_messages.message_to_starknet_segment_len": 21 } } } ], "52": [ { "accessible_scopes": ["__main__", "__main__.get_nonce_updates"], "code": "program_input_nonce_updates = prepared_program_input[\"nonce_updates\"]\n\nnonce_updates = [\n (\n int(key),\n int(value),\n )\n for key, value in program_input_nonce_updates.items()\n]\nids.nonce_updates = segments.gen_arg(nonce_updates)\nids.nonce_updates_len = len(nonce_updates)", "flow_tracking_data": { "ap_tracking": { "group": 8, "offset": 2 }, "reference_ids": { "__main__.get_nonce_updates.nonce_updates": 24, "__main__.get_nonce_updates.nonce_updates_len": 25 } } } ], "86": [ { "accessible_scopes": ["__main__", "__main__.get_storage_updates"], "code": "program_input_storage_updates = prepared_program_input[\"storage_updates\"]\n\nstorage_updates = [\n (\n int(contract),\n int(key),\n int(value),\n )\n for \n contract, update in \n program_input_storage_updates.items() \n for \n key, value in update.items()\n]\nids.storage_updates = segments.gen_arg(storage_updates)\nids.storage_updates_len = len(storage_updates)", "flow_tracking_data": { "ap_tracking": { "group": 12, "offset": 2 }, "reference_ids": { "__main__.get_storage_updates.storage_updates": 41, "__main__.get_storage_updates.storage_updates_len": 42 } } } ], "123": [ { "accessible_scopes": ["__main__", "__main__.get_contract_updates"], "code": "program_input_contract_updates = prepared_program_input[\"contract_updates\"]\n\ncontract_updates = [\n (\n int(key),\n int(value),\n )\n for key, value in program_input_contract_updates.items()\n]\nids.contract_updates = segments.gen_arg(contract_updates)\nids.contract_updates_len = len(contract_updates)", "flow_tracking_data": { "ap_tracking": { "group": 16, "offset": 2 }, "reference_ids": { "__main__.get_contract_updates.contract_updates": 60, "__main__.get_contract_updates.contract_updates_len": 61 } } } ], "157": [ { "accessible_scopes": ["__main__", "__main__.get_declared_classes"], "code": "program_input_declared_classes = prepared_program_input[\"declared_classes\"]\n\ndeclared_classes = [\n (\n int(key),\n int(value),\n )\n for key, value in program_input_declared_classes.items()\n]\nids.declared_classes = segments.gen_arg(declared_classes)\nids.declared_classes_len = len(declared_classes)", "flow_tracking_data": { "ap_tracking": { "group": 20, "offset": 2 }, "reference_ids": { "__main__.get_declared_classes.declared_classes": 77, "__main__.get_declared_classes.declared_classes_len": 78 } } } ], "219": [ { "accessible_scopes": ["__main__", "__main__.get_merged_da"], "code": "# Load da.\nda = program_input[\"earlier\"][\"world_da\"]\nupdates = program_input[\"later\"][\"world_da\"]\nids.merged = merged = segments.add()\n\n# Find value after updates.\nafter = {}\nfor i in range(0, len(da), 2):\n after[da[i]] = da[i + 1]\nfor i in range(0, len(updates), 2):\n after[updates[i]] = updates[i + 1]\n\n# Update the da array.\nincluded = {}\nfor i in range(0, len(da), 2):\n da[i+1] = after[da[i]]\n included[da[i]] = True\n\nfor i in range(0, len(updates), 2):\n if updates[i] not in included:\n da.append(updates[i])\n da.append(updates[i + 1])\n\n# Pass da to cairo.\nids.merged_len = len(da)\nfor i in range(0, len(da)):\n memory[merged + i] = int(da[i])", "flow_tracking_data": { "ap_tracking": { "group": 26, "offset": 2 }, "reference_ids": { "__main__.get_merged_da.merged": 103, "__main__.get_merged_da.merged_len": 104 } } } ], "274": [ { "accessible_scopes": ["__main__", "__main__.main"], "code": "prepared_program_input = program_input[\"earlier\"]", "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 37 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } } } ], "294": [ { "accessible_scopes": ["__main__", "__main__.main"], "code": "prepared_program_input = program_input[\"later\"]", "flow_tracking_data": { "ap_tracking": { "group": 30, "offset": 111 }, "reference_ids": { "__main__.main.bitwise_ptr": 126, "__main__.main.input_1": 128, "__main__.main.output_ptr": 123, "__main__.main.pedersen_ptr": 124, "__main__.main.range_check_ptr": 125 } } } ] }, "identifiers": { "__main__.ContractUpdate": { "full_name": "__main__.ContractUpdate", "members": { "class_hash": { "cairo_type": "felt", "offset": 1 }, "contract_address": { "cairo_type": "felt", "offset": 0 } }, "size": 2, "type": "struct" }, "__main__.DeclaredClass": { "full_name": "__main__.DeclaredClass", "members": { "class_hash": { "cairo_type": "felt", "offset": 0 }, "compiled_class_hash": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "__main__.HashBuiltin": { "destination": "starkware.cairo.common.cairo_builtins.HashBuiltin", "type": "alias" }, "__main__.InputConfig": { "full_name": "__main__.InputConfig", "members": { "block_hash": { "cairo_type": "felt", "offset": 2 }, "block_number": { "cairo_type": "felt", "offset": 1 }, "config_hash": { "cairo_type": "felt", "offset": 3 }, "prev_state_root": { "cairo_type": "felt", "offset": 0 } }, "size": 4, "type": "struct" }, "__main__.MassagesInput": { "full_name": "__main__.MassagesInput", "members": { "message_to_appchain_segment": { "cairo_type": "felt*", "offset": 2 }, "message_to_appchain_segment_len": { "cairo_type": "felt", "offset": 3 }, "message_to_starknet_segment": { "cairo_type": "felt*", "offset": 0 }, "message_to_starknet_segment_len": { "cairo_type": "felt", "offset": 1 } }, "size": 4, "type": "struct" }, "__main__.NonceUpdate": { "full_name": "__main__.NonceUpdate", "members": { "contract_address": { "cairo_type": "felt", "offset": 0 }, "nonce": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "__main__.ProgramInput": { "full_name": "__main__.ProgramInput", "members": { "contract_updates": { "cairo_type": "__main__.ContractUpdate**", "offset": 9 }, "contract_updates_len": { "cairo_type": "felt", "offset": 8 }, "declared_classes": { "cairo_type": "__main__.DeclaredClass**", "offset": 11 }, "declared_classes_len": { "cairo_type": "felt", "offset": 10 }, "input_config": { "cairo_type": "__main__.InputConfig", "offset": 0 }, "messages": { "cairo_type": "__main__.MassagesInput", "offset": 12 }, "nonce_updates": { "cairo_type": "__main__.NonceUpdate**", "offset": 5 }, "nonce_updates_len": { "cairo_type": "felt", "offset": 4 }, "storage_updates": { "cairo_type": "__main__.StorageUpdate**", "offset": 7 }, "storage_updates_len": { "cairo_type": "felt", "offset": 6 }, "world_da": { "cairo_type": "__main__.WorldDaInput", "offset": 16 } }, "size": 18, "type": "struct" }, "__main__.StorageUpdate": { "full_name": "__main__.StorageUpdate", "members": { "contract_address": { "cairo_type": "felt", "offset": 0 }, "storage_key": { "cairo_type": "felt", "offset": 1 }, "storage_value": { "cairo_type": "felt", "offset": 2 } }, "size": 3, "type": "struct" }, "__main__.WorldDaInput": { "full_name": "__main__.WorldDaInput", "members": { "world_da": { "cairo_type": "felt*", "offset": 0 }, "world_da_len": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "__main__.__end__": { "pc": 4, "type": "label" }, "__main__.__start__": { "pc": 0, "type": "label" }, "__main__.get_contract_updates": { "decorators": [], "pc": 121, "type": "function" }, "__main__.get_contract_updates.Args": { "full_name": "__main__.get_contract_updates.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_contract_updates.ImplicitArgs": { "full_name": "__main__.get_contract_updates.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_contract_updates.Return": { "cairo_type": "(contract_updates: __main__.ContractUpdate**, contract_updates_len: felt)", "type": "type_definition" }, "__main__.get_contract_updates.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_contract_updates.contract_updates": { "cairo_type": "__main__.ContractUpdate**", "full_name": "__main__.get_contract_updates.contract_updates", "references": [ { "ap_tracking_data": { "group": 16, "offset": 2 }, "pc": 123, "value": "[cast(fp, __main__.ContractUpdate***)]" } ], "type": "reference" }, "__main__.get_contract_updates.contract_updates_len": { "cairo_type": "felt", "full_name": "__main__.get_contract_updates.contract_updates_len", "references": [ { "ap_tracking_data": { "group": 16, "offset": 2 }, "pc": 123, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_declared_classes": { "decorators": [], "pc": 155, "type": "function" }, "__main__.get_declared_classes.Args": { "full_name": "__main__.get_declared_classes.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_declared_classes.ImplicitArgs": { "full_name": "__main__.get_declared_classes.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_declared_classes.Return": { "cairo_type": "(declared_classes: __main__.DeclaredClass**, declared_classes_len: felt)", "type": "type_definition" }, "__main__.get_declared_classes.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_declared_classes.declared_classes": { "cairo_type": "__main__.DeclaredClass**", "full_name": "__main__.get_declared_classes.declared_classes", "references": [ { "ap_tracking_data": { "group": 20, "offset": 2 }, "pc": 157, "value": "[cast(fp, __main__.DeclaredClass***)]" } ], "type": "reference" }, "__main__.get_declared_classes.declared_classes_len": { "cairo_type": "felt", "full_name": "__main__.get_declared_classes.declared_classes_len", "references": [ { "ap_tracking_data": { "group": 20, "offset": 2 }, "pc": 157, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_hashes": { "decorators": [], "pc": 12, "type": "function" }, "__main__.get_hashes.Args": { "full_name": "__main__.get_hashes.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_hashes.ImplicitArgs": { "full_name": "__main__.get_hashes.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_hashes.Return": { "cairo_type": "(input_config: __main__.InputConfig)", "type": "type_definition" }, "__main__.get_hashes.SIZEOF_LOCALS": { "type": "const", "value": 8 }, "__main__.get_hashes.block_hash": { "cairo_type": "felt", "full_name": "__main__.get_hashes.block_hash", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 6, felt*)]" } ], "type": "reference" }, "__main__.get_hashes.block_number": { "cairo_type": "felt", "full_name": "__main__.get_hashes.block_number", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 5, felt*)]" } ], "type": "reference" }, "__main__.get_hashes.config_hash": { "cairo_type": "felt", "full_name": "__main__.get_hashes.config_hash", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 7, felt*)]" } ], "type": "reference" }, "__main__.get_hashes.input_config": { "cairo_type": "__main__.InputConfig", "full_name": "__main__.get_hashes.input_config", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp, __main__.InputConfig*)]" } ], "type": "reference" }, "__main__.get_hashes.prev_state_root": { "cairo_type": "felt", "full_name": "__main__.get_hashes.prev_state_root", "references": [ { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 4, felt*)]" } ], "type": "reference" }, "__main__.get_input": { "decorators": [], "pc": 239, "type": "function" }, "__main__.get_input.Args": { "full_name": "__main__.get_input.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_input.ImplicitArgs": { "full_name": "__main__.get_input.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_input.Return": { "cairo_type": "(res: __main__.ProgramInput)", "type": "type_definition" }, "__main__.get_input.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.get_input.contract_updates": { "cairo_type": "__main__.ContractUpdate**", "full_name": "__main__.get_input.contract_updates", "references": [ { "ap_tracking_data": { "group": 29, "offset": 32 }, "pc": 247, "value": "[cast(ap + (-2), __main__.ContractUpdate***)]" } ], "type": "reference" }, "__main__.get_input.contract_updates_len": { "cairo_type": "felt", "full_name": "__main__.get_input.contract_updates_len", "references": [ { "ap_tracking_data": { "group": 29, "offset": 32 }, "pc": 247, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.get_input.declared_classes": { "cairo_type": "__main__.DeclaredClass**", "full_name": "__main__.get_input.declared_classes", "references": [ { "ap_tracking_data": { "group": 29, "offset": 38 }, "pc": 249, "value": "[cast(ap + (-2), __main__.DeclaredClass***)]" } ], "type": "reference" }, "__main__.get_input.declared_classes_len": { "cairo_type": "felt", "full_name": "__main__.get_input.declared_classes_len", "references": [ { "ap_tracking_data": { "group": 29, "offset": 38 }, "pc": 249, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.get_input.input_config": { "cairo_type": "__main__.InputConfig", "full_name": "__main__.get_input.input_config", "references": [ { "ap_tracking_data": { "group": 29, "offset": 14 }, "pc": 241, "value": "[cast(ap + (-4), __main__.InputConfig*)]" } ], "type": "reference" }, "__main__.get_input.messages": { "cairo_type": "__main__.MassagesInput", "full_name": "__main__.get_input.messages", "references": [ { "ap_tracking_data": { "group": 29, "offset": 48 }, "pc": 251, "value": "[cast(ap + (-4), __main__.MassagesInput*)]" } ], "type": "reference" }, "__main__.get_input.nonce_updates": { "cairo_type": "__main__.NonceUpdate**", "full_name": "__main__.get_input.nonce_updates", "references": [ { "ap_tracking_data": { "group": 29, "offset": 20 }, "pc": 243, "value": "[cast(ap + (-2), __main__.NonceUpdate***)]" } ], "type": "reference" }, "__main__.get_input.nonce_updates_len": { "cairo_type": "felt", "full_name": "__main__.get_input.nonce_updates_len", "references": [ { "ap_tracking_data": { "group": 29, "offset": 20 }, "pc": 243, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.get_input.storage_updates": { "cairo_type": "__main__.StorageUpdate**", "full_name": "__main__.get_input.storage_updates", "references": [ { "ap_tracking_data": { "group": 29, "offset": 26 }, "pc": 245, "value": "[cast(ap + (-2), __main__.StorageUpdate***)]" } ], "type": "reference" }, "__main__.get_input.storage_updates_len": { "cairo_type": "felt", "full_name": "__main__.get_input.storage_updates_len", "references": [ { "ap_tracking_data": { "group": 29, "offset": 26 }, "pc": 245, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.get_input.world_da": { "cairo_type": "__main__.WorldDaInput", "full_name": "__main__.get_input.world_da", "references": [ { "ap_tracking_data": { "group": 29, "offset": 54 }, "pc": 253, "value": "[cast(ap + (-2), __main__.WorldDaInput*)]" } ], "type": "reference" }, "__main__.get_merged_da": { "decorators": [], "pc": 217, "type": "function" }, "__main__.get_merged_da.Args": { "full_name": "__main__.get_merged_da.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_merged_da.ImplicitArgs": { "full_name": "__main__.get_merged_da.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_merged_da.Return": { "cairo_type": "(res: __main__.WorldDaInput)", "type": "type_definition" }, "__main__.get_merged_da.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_merged_da.merged": { "cairo_type": "felt*", "full_name": "__main__.get_merged_da.merged", "references": [ { "ap_tracking_data": { "group": 26, "offset": 2 }, "pc": 219, "value": "[cast(fp, felt**)]" } ], "type": "reference" }, "__main__.get_merged_da.merged_len": { "cairo_type": "felt", "full_name": "__main__.get_merged_da.merged_len", "references": [ { "ap_tracking_data": { "group": 26, "offset": 2 }, "pc": 219, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_messages": { "decorators": [], "pc": 43, "type": "function" }, "__main__.get_messages.Args": { "full_name": "__main__.get_messages.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_messages.ImplicitArgs": { "full_name": "__main__.get_messages.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_messages.Return": { "cairo_type": "(__main__.MassagesInput,)", "type": "type_definition" }, "__main__.get_messages.SIZEOF_LOCALS": { "type": "const", "value": 4 }, "__main__.get_messages.message_to_appchain_segment": { "cairo_type": "felt*", "full_name": "__main__.get_messages.message_to_appchain_segment", "references": [ { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 2, felt**)]" } ], "type": "reference" }, "__main__.get_messages.message_to_appchain_segment_len": { "cairo_type": "felt", "full_name": "__main__.get_messages.message_to_appchain_segment_len", "references": [ { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 3, felt*)]" } ], "type": "reference" }, "__main__.get_messages.message_to_starknet_segment": { "cairo_type": "felt*", "full_name": "__main__.get_messages.message_to_starknet_segment", "references": [ { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp, felt**)]" } ], "type": "reference" }, "__main__.get_messages.message_to_starknet_segment_len": { "cairo_type": "felt", "full_name": "__main__.get_messages.message_to_starknet_segment_len", "references": [ { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_nonce_updates": { "decorators": [], "pc": 50, "type": "function" }, "__main__.get_nonce_updates.Args": { "full_name": "__main__.get_nonce_updates.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_nonce_updates.ImplicitArgs": { "full_name": "__main__.get_nonce_updates.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_nonce_updates.Return": { "cairo_type": "(nonce_updates: __main__.NonceUpdate**, nonce_updates_len: felt)", "type": "type_definition" }, "__main__.get_nonce_updates.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_nonce_updates.nonce_updates": { "cairo_type": "__main__.NonceUpdate**", "full_name": "__main__.get_nonce_updates.nonce_updates", "references": [ { "ap_tracking_data": { "group": 8, "offset": 2 }, "pc": 52, "value": "[cast(fp, __main__.NonceUpdate***)]" } ], "type": "reference" }, "__main__.get_nonce_updates.nonce_updates_len": { "cairo_type": "felt", "full_name": "__main__.get_nonce_updates.nonce_updates_len", "references": [ { "ap_tracking_data": { "group": 8, "offset": 2 }, "pc": 52, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_storage_updates": { "decorators": [], "pc": 84, "type": "function" }, "__main__.get_storage_updates.Args": { "full_name": "__main__.get_storage_updates.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_storage_updates.ImplicitArgs": { "full_name": "__main__.get_storage_updates.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_storage_updates.Return": { "cairo_type": "(storage_updates: __main__.StorageUpdate**, storage_updates_len: felt)", "type": "type_definition" }, "__main__.get_storage_updates.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_storage_updates.storage_updates": { "cairo_type": "__main__.StorageUpdate**", "full_name": "__main__.get_storage_updates.storage_updates", "references": [ { "ap_tracking_data": { "group": 12, "offset": 2 }, "pc": 86, "value": "[cast(fp, __main__.StorageUpdate***)]" } ], "type": "reference" }, "__main__.get_storage_updates.storage_updates_len": { "cairo_type": "felt", "full_name": "__main__.get_storage_updates.storage_updates_len", "references": [ { "ap_tracking_data": { "group": 12, "offset": 2 }, "pc": 86, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.get_world_da": { "decorators": [], "pc": 19, "type": "function" }, "__main__.get_world_da.Args": { "full_name": "__main__.get_world_da.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.get_world_da.ImplicitArgs": { "full_name": "__main__.get_world_da.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.get_world_da.Return": { "cairo_type": "(res: __main__.WorldDaInput)", "type": "type_definition" }, "__main__.get_world_da.SIZEOF_LOCALS": { "type": "const", "value": 2 }, "__main__.get_world_da.world_da": { "cairo_type": "felt*", "full_name": "__main__.get_world_da.world_da", "references": [ { "ap_tracking_data": { "group": 4, "offset": 2 }, "pc": 21, "value": "[cast(fp, felt**)]" } ], "type": "reference" }, "__main__.get_world_da.world_da_len": { "cairo_type": "felt", "full_name": "__main__.get_world_da.world_da_len", "references": [ { "ap_tracking_data": { "group": 4, "offset": 2 }, "pc": 21, "value": "[cast(fp + 1, felt*)]" } ], "type": "reference" }, "__main__.hash2": { "destination": "starkware.cairo.common.hash.hash2", "type": "alias" }, "__main__.hash_contract_update": { "decorators": [], "pc": 126, "type": "function" }, "__main__.hash_contract_update.Args": { "full_name": "__main__.hash_contract_update.Args", "members": { "contract_update": { "cairo_type": "__main__.ContractUpdate*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_contract_update.ImplicitArgs": { "full_name": "__main__.hash_contract_update.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_contract_update.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_contract_update.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_contract_update.contract_update": { "cairo_type": "__main__.ContractUpdate*", "full_name": "__main__.hash_contract_update.contract_update", "references": [ { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast(fp + (-3), __main__.ContractUpdate**)]" } ], "type": "reference" }, "__main__.hash_contract_update.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_contract_update.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 17, "offset": 7 }, "pc": 131, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_contract_update.res": { "cairo_type": "felt", "full_name": "__main__.hash_contract_update.res", "references": [ { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 17, "offset": 7 }, "pc": 131, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop": { "decorators": [], "pc": 132, "type": "function" }, "__main__.hash_contract_updates_loop.Args": { "full_name": "__main__.hash_contract_updates_loop.Args", "members": { "contract_updates": { "cairo_type": "__main__.ContractUpdate**", "offset": 1 }, "contract_updates_len": { "cairo_type": "felt", "offset": 2 }, "res": { "cairo_type": "felt", "offset": 0 } }, "size": 3, "type": "struct" }, "__main__.hash_contract_updates_loop.ImplicitArgs": { "full_name": "__main__.hash_contract_updates_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_contract_updates_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_contract_updates_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_contract_updates_loop.contract_update": { "cairo_type": "__main__.ContractUpdate*", "full_name": "__main__.hash_contract_updates_loop.contract_update", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 139, "value": "[cast([fp + (-4)], __main__.ContractUpdate**)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.contract_updates": { "cairo_type": "__main__.ContractUpdate**", "full_name": "__main__.hash_contract_updates_loop.contract_updates", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-4), __main__.ContractUpdate***)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.contract_updates_len": { "cairo_type": "felt", "full_name": "__main__.hash_contract_updates_loop.contract_updates_len", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.hash": { "cairo_type": "felt", "full_name": "__main__.hash_contract_updates_loop.hash", "references": [ { "ap_tracking_data": { "group": 18, "offset": 11 }, "pc": 143, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_contract_updates_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 11 }, "pc": 143, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 18 }, "pc": 148, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 19, "offset": 0 }, "pc": 154, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_contract_updates_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_contract_updates_loop.res", "references": [ { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 18 }, "pc": 148, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_declared_class": { "decorators": [], "pc": 160, "type": "function" }, "__main__.hash_declared_class.Args": { "full_name": "__main__.hash_declared_class.Args", "members": { "declared_class": { "cairo_type": "__main__.DeclaredClass*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_declared_class.ImplicitArgs": { "full_name": "__main__.hash_declared_class.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_declared_class.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_declared_class.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_declared_class.declared_class": { "cairo_type": "__main__.DeclaredClass*", "full_name": "__main__.hash_declared_class.declared_class", "references": [ { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast(fp + (-3), __main__.DeclaredClass**)]" } ], "type": "reference" }, "__main__.hash_declared_class.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_declared_class.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 21, "offset": 7 }, "pc": 165, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_declared_class.res": { "cairo_type": "felt", "full_name": "__main__.hash_declared_class.res", "references": [ { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 21, "offset": 7 }, "pc": 165, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop": { "decorators": [], "pc": 166, "type": "function" }, "__main__.hash_declared_classes_loop.Args": { "full_name": "__main__.hash_declared_classes_loop.Args", "members": { "declared_classes": { "cairo_type": "__main__.DeclaredClass**", "offset": 1 }, "declared_classes_len": { "cairo_type": "felt", "offset": 2 }, "res": { "cairo_type": "felt", "offset": 0 } }, "size": 3, "type": "struct" }, "__main__.hash_declared_classes_loop.ImplicitArgs": { "full_name": "__main__.hash_declared_classes_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_declared_classes_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_declared_classes_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_declared_classes_loop.declared_class": { "cairo_type": "__main__.DeclaredClass*", "full_name": "__main__.hash_declared_classes_loop.declared_class", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 173, "value": "[cast([fp + (-4)], __main__.DeclaredClass**)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.declared_classes": { "cairo_type": "__main__.DeclaredClass**", "full_name": "__main__.hash_declared_classes_loop.declared_classes", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-4), __main__.DeclaredClass***)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.declared_classes_len": { "cairo_type": "felt", "full_name": "__main__.hash_declared_classes_loop.declared_classes_len", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.hash": { "cairo_type": "felt", "full_name": "__main__.hash_declared_classes_loop.hash", "references": [ { "ap_tracking_data": { "group": 22, "offset": 11 }, "pc": 177, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_declared_classes_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 11 }, "pc": 177, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 18 }, "pc": 182, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 23, "offset": 0 }, "pc": 188, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_declared_classes_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_declared_classes_loop.res", "references": [ { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 18 }, "pc": 182, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_nonce_update": { "decorators": [], "pc": 55, "type": "function" }, "__main__.hash_nonce_update.Args": { "full_name": "__main__.hash_nonce_update.Args", "members": { "nonce_update": { "cairo_type": "__main__.NonceUpdate*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_nonce_update.ImplicitArgs": { "full_name": "__main__.hash_nonce_update.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_nonce_update.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_nonce_update.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_nonce_update.nonce_update": { "cairo_type": "__main__.NonceUpdate*", "full_name": "__main__.hash_nonce_update.nonce_update", "references": [ { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast(fp + (-3), __main__.NonceUpdate**)]" } ], "type": "reference" }, "__main__.hash_nonce_update.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_nonce_update.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 9, "offset": 7 }, "pc": 60, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_nonce_update.res": { "cairo_type": "felt", "full_name": "__main__.hash_nonce_update.res", "references": [ { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 9, "offset": 7 }, "pc": 60, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop": { "decorators": [], "pc": 61, "type": "function" }, "__main__.hash_nonce_updates_loop.Args": { "full_name": "__main__.hash_nonce_updates_loop.Args", "members": { "nonce_updates": { "cairo_type": "__main__.NonceUpdate**", "offset": 1 }, "nonce_updates_len": { "cairo_type": "felt", "offset": 2 }, "res": { "cairo_type": "felt", "offset": 0 } }, "size": 3, "type": "struct" }, "__main__.hash_nonce_updates_loop.ImplicitArgs": { "full_name": "__main__.hash_nonce_updates_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_nonce_updates_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_nonce_updates_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_nonce_updates_loop.hash": { "cairo_type": "felt", "full_name": "__main__.hash_nonce_updates_loop.hash", "references": [ { "ap_tracking_data": { "group": 10, "offset": 11 }, "pc": 72, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.nonce_update": { "cairo_type": "__main__.NonceUpdate*", "full_name": "__main__.hash_nonce_updates_loop.nonce_update", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 68, "value": "[cast([fp + (-4)], __main__.NonceUpdate**)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.nonce_updates": { "cairo_type": "__main__.NonceUpdate**", "full_name": "__main__.hash_nonce_updates_loop.nonce_updates", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-4), __main__.NonceUpdate***)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.nonce_updates_len": { "cairo_type": "felt", "full_name": "__main__.hash_nonce_updates_loop.nonce_updates_len", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_nonce_updates_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 11 }, "pc": 72, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 18 }, "pc": 77, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 11, "offset": 0 }, "pc": 83, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_nonce_updates_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_nonce_updates_loop.res", "references": [ { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 18 }, "pc": 77, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_storage_update": { "decorators": [], "pc": 89, "type": "function" }, "__main__.hash_storage_update.Args": { "full_name": "__main__.hash_storage_update.Args", "members": { "storage_update": { "cairo_type": "__main__.StorageUpdate*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_storage_update.ImplicitArgs": { "full_name": "__main__.hash_storage_update.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_storage_update.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_storage_update.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_storage_update.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_storage_update.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 7 }, "pc": 94, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 12 }, "pc": 97, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_storage_update.res": { "cairo_type": "felt", "full_name": "__main__.hash_storage_update.res", "references": [ { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 7 }, "pc": 94, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 12 }, "pc": 97, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_storage_update.storage_update": { "cairo_type": "__main__.StorageUpdate*", "full_name": "__main__.hash_storage_update.storage_update", "references": [ { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast(fp + (-3), __main__.StorageUpdate**)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop": { "decorators": [], "pc": 98, "type": "function" }, "__main__.hash_storage_updates_loop.Args": { "full_name": "__main__.hash_storage_updates_loop.Args", "members": { "res": { "cairo_type": "felt", "offset": 0 }, "storage_updates": { "cairo_type": "__main__.StorageUpdate**", "offset": 1 }, "storage_updates_len": { "cairo_type": "felt", "offset": 2 } }, "size": 3, "type": "struct" }, "__main__.hash_storage_updates_loop.ImplicitArgs": { "full_name": "__main__.hash_storage_updates_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_storage_updates_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_storage_updates_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_storage_updates_loop.hash": { "cairo_type": "felt", "full_name": "__main__.hash_storage_updates_loop.hash", "references": [ { "ap_tracking_data": { "group": 14, "offset": 16 }, "pc": 109, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_storage_updates_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 16 }, "pc": 109, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 23 }, "pc": 114, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 15, "offset": 0 }, "pc": 120, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_storage_updates_loop.res", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 23 }, "pc": 114, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.storage_update": { "cairo_type": "__main__.StorageUpdate*", "full_name": "__main__.hash_storage_updates_loop.storage_update", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 105, "value": "[cast([fp + (-4)], __main__.StorageUpdate**)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.storage_updates": { "cairo_type": "__main__.StorageUpdate**", "full_name": "__main__.hash_storage_updates_loop.storage_updates", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-4), __main__.StorageUpdate***)]" } ], "type": "reference" }, "__main__.hash_storage_updates_loop.storage_updates_len": { "cairo_type": "felt", "full_name": "__main__.hash_storage_updates_loop.storage_updates_len", "references": [ { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.hash_world_da_loop": { "decorators": [], "pc": 24, "type": "function" }, "__main__.hash_world_da_loop.Args": { "full_name": "__main__.hash_world_da_loop.Args", "members": { "res": { "cairo_type": "felt", "offset": 0 }, "world_da": { "cairo_type": "felt*", "offset": 1 }, "world_da_len": { "cairo_type": "felt", "offset": 2 } }, "size": 3, "type": "struct" }, "__main__.hash_world_da_loop.ImplicitArgs": { "full_name": "__main__.hash_world_da_loop.ImplicitArgs", "members": { "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.hash_world_da_loop.Return": { "cairo_type": "(res: felt)", "type": "type_definition" }, "__main__.hash_world_da_loop.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.hash_world_da_loop.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.hash_world_da_loop.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 5, "offset": 7 }, "pc": 36, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 6, "offset": 0 }, "pc": 42, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.hash_world_da_loop.res": { "cairo_type": "felt", "full_name": "__main__.hash_world_da_loop.res", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 7 }, "pc": 36, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.hash_world_da_loop.value": { "cairo_type": "felt", "full_name": "__main__.hash_world_da_loop.value", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 31, "value": "[cast([fp + (-4)], felt*)]" } ], "type": "reference" }, "__main__.hash_world_da_loop.world_da": { "cairo_type": "felt*", "full_name": "__main__.hash_world_da_loop.world_da", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-4), felt**)]" } ], "type": "reference" }, "__main__.hash_world_da_loop.world_da_len": { "cairo_type": "felt", "full_name": "__main__.hash_world_da_loop.world_da_len", "references": [ { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.main": { "decorators": [], "pc": 272, "type": "function" }, "__main__.main.Args": { "full_name": "__main__.main.Args", "members": {}, "size": 0, "type": "struct" }, "__main__.main.ImplicitArgs": { "full_name": "__main__.main.ImplicitArgs", "members": { "bitwise_ptr": { "cairo_type": "felt*", "offset": 3 }, "output_ptr": { "cairo_type": "felt*", "offset": 0 }, "pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 1 }, "range_check_ptr": { "cairo_type": "felt", "offset": 2 } }, "size": 4, "type": "struct" }, "__main__.main.Return": { "cairo_type": "()", "type": "type_definition" }, "__main__.main.SIZEOF_LOCALS": { "type": "const", "value": 37 }, "__main__.main.__temp6": { "cairo_type": "felt", "full_name": "__main__.main.__temp6", "references": [ { "ap_tracking_data": { "group": 30, "offset": 186 }, "pc": 317, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.main.__temp7": { "cairo_type": "felt", "full_name": "__main__.main.__temp7", "references": [ { "ap_tracking_data": { "group": 31, "offset": 1 }, "pc": 333, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.main.__temp8": { "cairo_type": "felt", "full_name": "__main__.main.__temp8", "references": [ { "ap_tracking_data": { "group": 33, "offset": 1 }, "pc": 345, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.main.bitwise_ptr": { "cairo_type": "felt*", "full_name": "__main__.main.bitwise_ptr", "references": [ { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 272, "value": "[cast(fp + (-3), felt**)]" } ], "type": "reference" }, "__main__.main.input_1": { "cairo_type": "__main__.ProgramInput", "full_name": "__main__.main.input_1", "references": [ { "ap_tracking_data": { "group": 30, "offset": 111 }, "pc": 276, "value": "[cast(ap + (-18), __main__.ProgramInput*)]" }, { "ap_tracking_data": { "group": 30, "offset": 111 }, "pc": 294, "value": "[cast(fp, __main__.ProgramInput*)]" } ], "type": "reference" }, "__main__.main.input_2": { "cairo_type": "__main__.ProgramInput", "full_name": "__main__.main.input_2", "references": [ { "ap_tracking_data": { "group": 30, "offset": 185 }, "pc": 296, "value": "[cast(ap + (-18), __main__.ProgramInput*)]" }, { "ap_tracking_data": { "group": 30, "offset": 185 }, "pc": 314, "value": "[cast(fp + 18, __main__.ProgramInput*)]" } ], "type": "reference" }, "__main__.main.merged_world_da": { "cairo_type": "__main__.WorldDaInput", "full_name": "__main__.main.merged_world_da", "references": [ { "ap_tracking_data": { "group": 30, "offset": 192 }, "pc": 323, "value": "[cast(ap + (-2), __main__.WorldDaInput*)]" } ], "type": "reference" }, "__main__.main.output_ptr": { "cairo_type": "felt*", "full_name": "__main__.main.output_ptr", "references": [ { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 272, "value": "[cast(fp + (-6), felt**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 295, "value": "cast([fp + (-6)] + 6, felt*)" }, { "ap_tracking_data": { "group": 31, "offset": 1 }, "pc": 297, "value": "cast([fp + (-6)] + 7, felt*)" }, { "ap_tracking_data": { "group": 32, "offset": 0 }, "pc": 303, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 33, "offset": 0 }, "pc": 307, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 33, "offset": 1 }, "pc": 309, "value": "cast([ap + (-2)] + 1, felt*)" }, { "ap_tracking_data": { "group": 34, "offset": 0 }, "pc": 315, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 35, "offset": 0 }, "pc": 319, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 332, "value": "cast([fp + (-6)] + 6, felt*)" }, { "ap_tracking_data": { "group": 31, "offset": 1 }, "pc": 334, "value": "cast([fp + (-6)] + 7, felt*)" }, { "ap_tracking_data": { "group": 32, "offset": 0 }, "pc": 340, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 33, "offset": 0 }, "pc": 344, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 33, "offset": 1 }, "pc": 346, "value": "cast([ap + (-2)] + 1, felt*)" }, { "ap_tracking_data": { "group": 34, "offset": 0 }, "pc": 352, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 35, "offset": 0 }, "pc": 356, "value": "[cast(ap + (-1), felt**)]" } ], "type": "reference" }, "__main__.main.pedersen_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "__main__.main.pedersen_ptr", "references": [ { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 272, "value": "[cast(fp + (-5), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 294, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 330, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 331, "value": "[cast(fp + 36, starkware.cairo.common.cairo_builtins.HashBuiltin**)]" } ], "type": "reference" }, "__main__.main.range_check_ptr": { "cairo_type": "felt", "full_name": "__main__.main.range_check_ptr", "references": [ { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 272, "value": "[cast(fp + (-4), felt*)]" } ], "type": "reference" }, "__main__.main.world_da_hash": { "cairo_type": "felt", "full_name": "__main__.main.world_da_hash", "references": [ { "ap_tracking_data": { "group": 30, "offset": 192 }, "pc": 323, "value": "cast(0, felt)" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 330, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.output_array": { "decorators": [], "pc": 222, "type": "function" }, "__main__.output_array.Args": { "full_name": "__main__.output_array.Args", "members": { "array": { "cairo_type": "felt*", "offset": 0 }, "len": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "__main__.output_array.ImplicitArgs": { "full_name": "__main__.output_array.ImplicitArgs", "members": { "output_ptr": { "cairo_type": "felt*", "offset": 0 } }, "size": 1, "type": "struct" }, "__main__.output_array.Return": { "cairo_type": "()", "type": "type_definition" }, "__main__.output_array.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.output_array.__temp5": { "cairo_type": "felt", "full_name": "__main__.output_array.__temp5", "references": [ { "ap_tracking_data": { "group": 27, "offset": 1 }, "pc": 229, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.output_array.array": { "cairo_type": "felt*", "full_name": "__main__.output_array.array", "references": [ { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 222, "value": "[cast(fp + (-4), felt**)]" } ], "type": "reference" }, "__main__.output_array.len": { "cairo_type": "felt", "full_name": "__main__.output_array.len", "references": [ { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 222, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "__main__.output_array.output_ptr": { "cairo_type": "felt*", "full_name": "__main__.output_array.output_ptr", "references": [ { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 222, "value": "[cast(fp + (-5), felt**)]" }, { "ap_tracking_data": { "group": 27, "offset": 1 }, "pc": 230, "value": "cast([fp + (-5)] + 1, felt*)" }, { "ap_tracking_data": { "group": 28, "offset": 0 }, "pc": 238, "value": "[cast(ap + (-1), felt**)]" } ], "type": "reference" }, "__main__.output_array.value": { "cairo_type": "felt", "full_name": "__main__.output_array.value", "references": [ { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 228, "value": "[cast([fp + (-4)], felt*)]" } ], "type": "reference" }, "__main__.replace_or_append": { "decorators": [], "pc": 189, "type": "function" }, "__main__.replace_or_append.Args": { "full_name": "__main__.replace_or_append.Args", "members": { "array": { "cairo_type": "felt*", "offset": 0 }, "key": { "cairo_type": "felt", "offset": 2 }, "len": { "cairo_type": "felt", "offset": 1 }, "value": { "cairo_type": "felt", "offset": 3 } }, "size": 4, "type": "struct" }, "__main__.replace_or_append.ImplicitArgs": { "full_name": "__main__.replace_or_append.ImplicitArgs", "members": {}, "size": 0, "type": "struct" }, "__main__.replace_or_append.Return": { "cairo_type": "(replaced: felt)", "type": "type_definition" }, "__main__.replace_or_append.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "__main__.replace_or_append.__temp0": { "cairo_type": "felt", "full_name": "__main__.replace_or_append.__temp0", "references": [ { "ap_tracking_data": { "group": 24, "offset": 1 }, "pc": 192, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.replace_or_append.__temp1": { "cairo_type": "felt", "full_name": "__main__.replace_or_append.__temp1", "references": [ { "ap_tracking_data": { "group": 24, "offset": 2 }, "pc": 195, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.replace_or_append.__temp2": { "cairo_type": "felt", "full_name": "__main__.replace_or_append.__temp2", "references": [ { "ap_tracking_data": { "group": 24, "offset": 3 }, "pc": 196, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.replace_or_append.__temp3": { "cairo_type": "felt", "full_name": "__main__.replace_or_append.__temp3", "references": [ { "ap_tracking_data": { "group": 24, "offset": 1 }, "pc": 201, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.replace_or_append.__temp4": { "cairo_type": "felt", "full_name": "__main__.replace_or_append.__temp4", "references": [ { "ap_tracking_data": { "group": 24, "offset": 2 }, "pc": 202, "value": "[cast(ap + (-1), felt*)]" } ], "type": "reference" }, "__main__.replace_or_append.array": { "cairo_type": "felt*", "full_name": "__main__.replace_or_append.array", "references": [ { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-6), felt**)]" } ], "type": "reference" }, "__main__.replace_or_append.key": { "cairo_type": "felt", "full_name": "__main__.replace_or_append.key", "references": [ { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-4), felt*)]" } ], "type": "reference" }, "__main__.replace_or_append.len": { "cairo_type": "felt", "full_name": "__main__.replace_or_append.len", "references": [ { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-5), felt*)]" } ], "type": "reference" }, "__main__.replace_or_append.value": { "cairo_type": "felt", "full_name": "__main__.replace_or_append.value", "references": [ { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "starkware.cairo.common.cairo_builtins.BitwiseBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.BitwiseBuiltin", "members": { "x": { "cairo_type": "felt", "offset": 0 }, "x_and_y": { "cairo_type": "felt", "offset": 2 }, "x_or_y": { "cairo_type": "felt", "offset": 4 }, "x_xor_y": { "cairo_type": "felt", "offset": 3 }, "y": { "cairo_type": "felt", "offset": 1 } }, "size": 5, "type": "struct" }, "starkware.cairo.common.cairo_builtins.EcOpBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.EcOpBuiltin", "members": { "m": { "cairo_type": "felt", "offset": 4 }, "p": { "cairo_type": "starkware.cairo.common.ec_point.EcPoint", "offset": 0 }, "q": { "cairo_type": "starkware.cairo.common.ec_point.EcPoint", "offset": 2 }, "r": { "cairo_type": "starkware.cairo.common.ec_point.EcPoint", "offset": 5 } }, "size": 7, "type": "struct" }, "starkware.cairo.common.cairo_builtins.EcPoint": { "destination": "starkware.cairo.common.ec_point.EcPoint", "type": "alias" }, "starkware.cairo.common.cairo_builtins.HashBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.HashBuiltin", "members": { "result": { "cairo_type": "felt", "offset": 2 }, "x": { "cairo_type": "felt", "offset": 0 }, "y": { "cairo_type": "felt", "offset": 1 } }, "size": 3, "type": "struct" }, "starkware.cairo.common.cairo_builtins.KeccakBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.KeccakBuiltin", "members": { "input": { "cairo_type": "starkware.cairo.common.keccak_state.KeccakBuiltinState", "offset": 0 }, "output": { "cairo_type": "starkware.cairo.common.keccak_state.KeccakBuiltinState", "offset": 8 } }, "size": 16, "type": "struct" }, "starkware.cairo.common.cairo_builtins.KeccakBuiltinState": { "destination": "starkware.cairo.common.keccak_state.KeccakBuiltinState", "type": "alias" }, "starkware.cairo.common.cairo_builtins.PoseidonBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.PoseidonBuiltin", "members": { "input": { "cairo_type": "starkware.cairo.common.poseidon_state.PoseidonBuiltinState", "offset": 0 }, "output": { "cairo_type": "starkware.cairo.common.poseidon_state.PoseidonBuiltinState", "offset": 3 } }, "size": 6, "type": "struct" }, "starkware.cairo.common.cairo_builtins.PoseidonBuiltinState": { "destination": "starkware.cairo.common.poseidon_state.PoseidonBuiltinState", "type": "alias" }, "starkware.cairo.common.cairo_builtins.SignatureBuiltin": { "full_name": "starkware.cairo.common.cairo_builtins.SignatureBuiltin", "members": { "message": { "cairo_type": "felt", "offset": 1 }, "pub_key": { "cairo_type": "felt", "offset": 0 } }, "size": 2, "type": "struct" }, "starkware.cairo.common.ec_point.EcPoint": { "full_name": "starkware.cairo.common.ec_point.EcPoint", "members": { "x": { "cairo_type": "felt", "offset": 0 }, "y": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "starkware.cairo.common.hash.HashBuiltin": { "destination": "starkware.cairo.common.cairo_builtins.HashBuiltin", "type": "alias" }, "starkware.cairo.common.hash.hash2": { "decorators": [], "pc": 6, "type": "function" }, "starkware.cairo.common.hash.hash2.Args": { "full_name": "starkware.cairo.common.hash.hash2.Args", "members": { "x": { "cairo_type": "felt", "offset": 0 }, "y": { "cairo_type": "felt", "offset": 1 } }, "size": 2, "type": "struct" }, "starkware.cairo.common.hash.hash2.ImplicitArgs": { "full_name": "starkware.cairo.common.hash.hash2.ImplicitArgs", "members": { "hash_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "offset": 0 } }, "size": 1, "type": "struct" }, "starkware.cairo.common.hash.hash2.Return": { "cairo_type": "(result: felt)", "type": "type_definition" }, "starkware.cairo.common.hash.hash2.SIZEOF_LOCALS": { "type": "const", "value": 0 }, "starkware.cairo.common.hash.hash2.hash_ptr": { "cairo_type": "starkware.cairo.common.cairo_builtins.HashBuiltin*", "full_name": "starkware.cairo.common.hash.hash2.hash_ptr", "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-5), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 8, "value": "cast([fp + (-5)] + 3, starkware.cairo.common.cairo_builtins.HashBuiltin*)" } ], "type": "reference" }, "starkware.cairo.common.hash.hash2.result": { "cairo_type": "felt", "full_name": "starkware.cairo.common.hash.hash2.result", "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 8, "value": "[cast([fp + (-5)] + 2, felt*)]" } ], "type": "reference" }, "starkware.cairo.common.hash.hash2.x": { "cairo_type": "felt", "full_name": "starkware.cairo.common.hash.hash2.x", "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-4), felt*)]" } ], "type": "reference" }, "starkware.cairo.common.hash.hash2.y": { "cairo_type": "felt", "full_name": "starkware.cairo.common.hash.hash2.y", "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-3), felt*)]" } ], "type": "reference" }, "starkware.cairo.common.keccak_state.KeccakBuiltinState": { "full_name": "starkware.cairo.common.keccak_state.KeccakBuiltinState", "members": { "s0": { "cairo_type": "felt", "offset": 0 }, "s1": { "cairo_type": "felt", "offset": 1 }, "s2": { "cairo_type": "felt", "offset": 2 }, "s3": { "cairo_type": "felt", "offset": 3 }, "s4": { "cairo_type": "felt", "offset": 4 }, "s5": { "cairo_type": "felt", "offset": 5 }, "s6": { "cairo_type": "felt", "offset": 6 }, "s7": { "cairo_type": "felt", "offset": 7 } }, "size": 8, "type": "struct" }, "starkware.cairo.common.poseidon_state.PoseidonBuiltinState": { "full_name": "starkware.cairo.common.poseidon_state.PoseidonBuiltinState", "members": { "s0": { "cairo_type": "felt", "offset": 0 }, "s1": { "cairo_type": "felt", "offset": 1 }, "s2": { "cairo_type": "felt", "offset": 2 } }, "size": 3, "type": "struct" } }, "main_scope": "__main__", "prime": "0x800000000000011000000000000000000000000000000000000000000000001", "reference_manager": { "references": [ { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-4), felt*)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 6, "value": "[cast(fp + (-5), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 8, "value": "[cast([fp + (-5)] + 2, felt*)]" }, { "ap_tracking_data": { "group": 2, "offset": 0 }, "pc": 8, "value": "cast([fp + (-5)] + 3, starkware.cairo.common.cairo_builtins.HashBuiltin*)" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp, __main__.InputConfig*)]" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 4, felt*)]" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 5, felt*)]" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 6, felt*)]" }, { "ap_tracking_data": { "group": 3, "offset": 8 }, "pc": 14, "value": "[cast(fp + 7, felt*)]" }, { "ap_tracking_data": { "group": 4, "offset": 2 }, "pc": 21, "value": "[cast(fp, felt**)]" }, { "ap_tracking_data": { "group": 4, "offset": 2 }, "pc": 21, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-4), felt**)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 24, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 5, "offset": 0 }, "pc": 31, "value": "[cast([fp + (-4)], felt*)]" }, { "ap_tracking_data": { "group": 5, "offset": 7 }, "pc": 36, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 5, "offset": 7 }, "pc": 36, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 6, "offset": 0 }, "pc": 42, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp, felt**)]" }, { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 2, felt**)]" }, { "ap_tracking_data": { "group": 7, "offset": 4 }, "pc": 45, "value": "[cast(fp + 3, felt*)]" }, { "ap_tracking_data": { "group": 8, "offset": 2 }, "pc": 52, "value": "[cast(fp, __main__.NonceUpdate***)]" }, { "ap_tracking_data": { "group": 8, "offset": 2 }, "pc": 52, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast(fp + (-3), __main__.NonceUpdate**)]" }, { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 9, "offset": 0 }, "pc": 55, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 9, "offset": 7 }, "pc": 60, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 9, "offset": 7 }, "pc": 60, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-4), __main__.NonceUpdate***)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 61, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 0 }, "pc": 68, "value": "[cast([fp + (-4)], __main__.NonceUpdate**)]" }, { "ap_tracking_data": { "group": 10, "offset": 11 }, "pc": 72, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 11 }, "pc": 72, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 10, "offset": 18 }, "pc": 77, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 10, "offset": 18 }, "pc": 77, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 11, "offset": 0 }, "pc": 83, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 12, "offset": 2 }, "pc": 86, "value": "[cast(fp, __main__.StorageUpdate***)]" }, { "ap_tracking_data": { "group": 12, "offset": 2 }, "pc": 86, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast(fp + (-3), __main__.StorageUpdate**)]" }, { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 0 }, "pc": 89, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 7 }, "pc": 94, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 7 }, "pc": 94, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 13, "offset": 12 }, "pc": 97, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 13, "offset": 12 }, "pc": 97, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-4), __main__.StorageUpdate***)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 98, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 0 }, "pc": 105, "value": "[cast([fp + (-4)], __main__.StorageUpdate**)]" }, { "ap_tracking_data": { "group": 14, "offset": 16 }, "pc": 109, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 16 }, "pc": 109, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 14, "offset": 23 }, "pc": 114, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 14, "offset": 23 }, "pc": 114, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 15, "offset": 0 }, "pc": 120, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 16, "offset": 2 }, "pc": 123, "value": "[cast(fp, __main__.ContractUpdate***)]" }, { "ap_tracking_data": { "group": 16, "offset": 2 }, "pc": 123, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast(fp + (-3), __main__.ContractUpdate**)]" }, { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 17, "offset": 0 }, "pc": 126, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 17, "offset": 7 }, "pc": 131, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 17, "offset": 7 }, "pc": 131, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-4), __main__.ContractUpdate***)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 132, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 0 }, "pc": 139, "value": "[cast([fp + (-4)], __main__.ContractUpdate**)]" }, { "ap_tracking_data": { "group": 18, "offset": 11 }, "pc": 143, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 11 }, "pc": 143, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 18, "offset": 18 }, "pc": 148, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 18, "offset": 18 }, "pc": 148, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 19, "offset": 0 }, "pc": 154, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 20, "offset": 2 }, "pc": 157, "value": "[cast(fp, __main__.DeclaredClass***)]" }, { "ap_tracking_data": { "group": 20, "offset": 2 }, "pc": 157, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast(fp + (-3), __main__.DeclaredClass**)]" }, { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast(fp + (-4), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 21, "offset": 0 }, "pc": 160, "value": "[cast([fp + (-3)], felt*)]" }, { "ap_tracking_data": { "group": 21, "offset": 7 }, "pc": 165, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 21, "offset": 7 }, "pc": 165, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-4), __main__.DeclaredClass***)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 166, "value": "[cast(fp + (-6), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 0 }, "pc": 173, "value": "[cast([fp + (-4)], __main__.DeclaredClass**)]" }, { "ap_tracking_data": { "group": 22, "offset": 11 }, "pc": 177, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 11 }, "pc": 177, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 22, "offset": 18 }, "pc": 182, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 22, "offset": 18 }, "pc": 182, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 23, "offset": 0 }, "pc": 188, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-6), felt**)]" }, { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-5), felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-4), felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 0 }, "pc": 189, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 1 }, "pc": 192, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 2 }, "pc": 195, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 3 }, "pc": 196, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 1 }, "pc": 201, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 24, "offset": 2 }, "pc": 202, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 26, "offset": 2 }, "pc": 219, "value": "[cast(fp, felt**)]" }, { "ap_tracking_data": { "group": 26, "offset": 2 }, "pc": 219, "value": "[cast(fp + 1, felt*)]" }, { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 222, "value": "[cast(fp + (-4), felt**)]" }, { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 222, "value": "[cast(fp + (-3), felt*)]" }, { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 222, "value": "[cast(fp + (-5), felt**)]" }, { "ap_tracking_data": { "group": 27, "offset": 0 }, "pc": 228, "value": "[cast([fp + (-4)], felt*)]" }, { "ap_tracking_data": { "group": 27, "offset": 1 }, "pc": 229, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 27, "offset": 1 }, "pc": 230, "value": "cast([fp + (-5)] + 1, felt*)" }, { "ap_tracking_data": { "group": 28, "offset": 0 }, "pc": 238, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 29, "offset": 14 }, "pc": 241, "value": "[cast(ap + (-4), __main__.InputConfig*)]" }, { "ap_tracking_data": { "group": 29, "offset": 20 }, "pc": 243, "value": "[cast(ap + (-2), __main__.NonceUpdate***)]" }, { "ap_tracking_data": { "group": 29, "offset": 20 }, "pc": 243, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 29, "offset": 26 }, "pc": 245, "value": "[cast(ap + (-2), __main__.StorageUpdate***)]" }, { "ap_tracking_data": { "group": 29, "offset": 26 }, "pc": 245, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 29, "offset": 32 }, "pc": 247, "value": "[cast(ap + (-2), __main__.ContractUpdate***)]" }, { "ap_tracking_data": { "group": 29, "offset": 32 }, "pc": 247, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 29, "offset": 38 }, "pc": 249, "value": "[cast(ap + (-2), __main__.DeclaredClass***)]" }, { "ap_tracking_data": { "group": 29, "offset": 38 }, "pc": 249, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 29, "offset": 48 }, "pc": 251, "value": "[cast(ap + (-4), __main__.MassagesInput*)]" }, { "ap_tracking_data": { "group": 29, "offset": 54 }, "pc": 253, "value": "[cast(ap + (-2), __main__.WorldDaInput*)]" }, { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 272, "value": "[cast(fp + (-6), felt**)]" }, { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 272, "value": "[cast(fp + (-5), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 272, "value": "[cast(fp + (-4), felt*)]" }, { "ap_tracking_data": { "group": 30, "offset": 0 }, "pc": 272, "value": "[cast(fp + (-3), felt**)]" }, { "ap_tracking_data": { "group": 30, "offset": 111 }, "pc": 276, "value": "[cast(ap + (-18), __main__.ProgramInput*)]" }, { "ap_tracking_data": { "group": 30, "offset": 111 }, "pc": 294, "value": "[cast(fp, __main__.ProgramInput*)]" }, { "ap_tracking_data": { "group": 30, "offset": 185 }, "pc": 296, "value": "[cast(ap + (-18), __main__.ProgramInput*)]" }, { "ap_tracking_data": { "group": 30, "offset": 185 }, "pc": 314, "value": "[cast(fp + 18, __main__.ProgramInput*)]" }, { "ap_tracking_data": { "group": 30, "offset": 186 }, "pc": 317, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 30, "offset": 192 }, "pc": 323, "value": "[cast(ap + (-2), __main__.WorldDaInput*)]" }, { "ap_tracking_data": { "group": 30, "offset": 192 }, "pc": 323, "value": "cast(0, felt)" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 330, "value": "[cast(ap + (-2), starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 330, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 331, "value": "[cast(fp + 36, starkware.cairo.common.cairo_builtins.HashBuiltin**)]" }, { "ap_tracking_data": { "group": 31, "offset": 0 }, "pc": 332, "value": "cast([fp + (-6)] + 6, felt*)" }, { "ap_tracking_data": { "group": 31, "offset": 1 }, "pc": 333, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 31, "offset": 1 }, "pc": 334, "value": "cast([fp + (-6)] + 7, felt*)" }, { "ap_tracking_data": { "group": 32, "offset": 0 }, "pc": 340, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 33, "offset": 0 }, "pc": 344, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 33, "offset": 1 }, "pc": 345, "value": "[cast(ap + (-1), felt*)]" }, { "ap_tracking_data": { "group": 33, "offset": 1 }, "pc": 346, "value": "cast([ap + (-2)] + 1, felt*)" }, { "ap_tracking_data": { "group": 34, "offset": 0 }, "pc": 352, "value": "[cast(ap + (-1), felt**)]" }, { "ap_tracking_data": { "group": 35, "offset": 0 }, "pc": 356, "value": "[cast(ap + (-1), felt**)]" } ] }} \ No newline at end of file diff --git a/bin/saya/src/args/mod.rs b/bin/saya/src/args/mod.rs index e9199126ae..7c40bd4935 100644 --- a/bin/saya/src/args/mod.rs +++ b/bin/saya/src/args/mod.rs @@ -6,7 +6,7 @@ use std::path::PathBuf; use clap::Parser; use saya_core::data_availability::celestia::CelestiaConfig; use saya_core::data_availability::DataAvailabilityConfig; -use saya_core::SayaConfig; +use saya_core::{ProverAccessKey, SayaConfig}; use tracing::Subscriber; use tracing_subscriber::{fmt, EnvFilter}; use url::Url; @@ -32,7 +32,19 @@ pub struct SayaArgs { #[arg(long)] #[arg(value_name = "PROVER URL")] #[arg(help = "The Prover URL for remote proving.")] - pub prover_url: Url, + pub url: Url, + + /// Specify the Prover Key. + #[arg(long)] + #[arg(value_name = "PROVER KEY")] + #[arg(help = "An authorized prover key for remote proving.")] + pub private_key: String, + + #[arg(long)] + #[arg(value_name = "STORE PROOFS")] + #[arg(help = "When enabled all proofs are saved as a file.")] + #[arg(default_value_t = false)] + pub store_proofs: bool, /// Enable JSON logging. #[arg(long)] @@ -50,6 +62,10 @@ pub struct SayaArgs { #[arg(short, long, default_value = "0")] pub start_block: u64, + #[arg(short, long, default_value = "1")] + #[arg(help = "The number of blocks to be merged into a single proof.")] + pub batch_size: usize, + #[command(flatten)] #[command(next_help_heading = "Data availability options")] pub data_availability: DataAvailabilityOptions, @@ -117,10 +133,17 @@ impl TryFrom for SayaConfig { None => None, }; + let prover_key = ProverAccessKey::from_hex_string(&args.private_key).map_err(|e| { + Box::new(std::io::Error::new(std::io::ErrorKind::InvalidInput, e.to_string())) + })?; + Ok(SayaConfig { katana_rpc: args.rpc_url, - prover_url: args.prover_url, + url: args.url, + private_key: prover_key, + store_proofs: args.store_proofs, start_block: args.start_block, + batch_size: args.batch_size, data_availability: da_config, world_address: args.proof.world_address, fact_registry_address: args.proof.fact_registry_address, @@ -145,9 +168,13 @@ mod tests { let args = SayaArgs { config_file: Some(config_file_path.clone()), rpc_url: Url::parse("http://localhost:5050").unwrap(), - prover_url: Url::parse("http://localhost:5050").unwrap(), + url: Url::parse("http://localhost:5050").unwrap(), + private_key: "0xd0fa91f4949e9a777ebec071ca3ca6acc1f5cd6c6827f123b798f94e73425027" + .into(), + store_proofs: true, json_log: false, start_block: 0, + batch_size: 4, data_availability: DataAvailabilityOptions { da_chain: None, celestia: CelestiaOptions { @@ -165,7 +192,13 @@ mod tests { let config: SayaConfig = args.try_into().unwrap(); assert_eq!(config.katana_rpc.as_str(), "http://localhost:5050/"); - assert_eq!(config.prover_url.as_str(), "http://localhost:1234/"); + assert_eq!(config.url.as_str(), "http://localhost:1234/"); + assert_eq!(config.batch_size, 4); + assert_eq!( + config.private_key.signing_key_as_hex_string(), + "0xd0fa91f4949e9a777ebec071ca3ca6acc1f5cd6c6827f123b798f94e73425027" + ); + assert!(!config.store_proofs); assert_eq!(config.start_block, 0); if let Some(DataAvailabilityConfig::Celestia(celestia_config)) = config.data_availability { assert_eq!(celestia_config.node_url.as_str(), "http://localhost:26657/"); diff --git a/bin/saya/src/args/test_saya_config_file.json b/bin/saya/src/args/test_saya_config_file.json index b3445089fd..478f88faf6 100644 --- a/bin/saya/src/args/test_saya_config_file.json +++ b/bin/saya/src/args/test_saya_config_file.json @@ -1,6 +1,9 @@ { "katana_rpc": "http://localhost:5050", - "prover_url": "http://localhost:1234", + "url": "http://localhost:1234", + "private_key": "0xd0fa91f4949e9a777ebec071ca3ca6acc1f5cd6c6827f123b798f94e73425027", + "store_proofs": false, + "batch_size": 4, "world_address": "0x332b8ff41b1b026991fa9b7f0ec352909f8bc33416b65a80527edc988a9b082", "fact_registry_address": "0x217746a5f74c2e5b6fa92c97e902d8cd78b1fabf1e8081c4aa0d2fe159bc0eb", "start_block": 0, diff --git a/bin/saya/src/main.rs b/bin/saya/src/main.rs index 9ed0796eb9..376a337b21 100644 --- a/bin/saya/src/main.rs +++ b/bin/saya/src/main.rs @@ -6,6 +6,9 @@ use tokio::signal::ctrl_c; mod args; +#[cfg(test)] +mod tests; + use args::SayaArgs; #[tokio::main] @@ -54,7 +57,7 @@ CONFIGURATION if let Some(da_config) = &config.data_availability { println!( r" -DATA AVAILBILITY +DATA AVAILABILITY ================== {da_config} ", diff --git a/bin/saya/src/tests.rs b/bin/saya/src/tests.rs new file mode 100644 index 0000000000..fbb9b4b727 --- /dev/null +++ b/bin/saya/src/tests.rs @@ -0,0 +1,408 @@ +use std::env; +use std::str::FromStr; +use std::sync::Arc; +use std::time::Duration; + +use cairo_proof_parser::output::extract_output; +use katana_primitives::contract::ContractAddress; +use katana_primitives::state::StateUpdates; +use saya_core::prover::extract::program_input_from_program_output; +use saya_core::prover::{ + prove_diff, HttpProverParams, MessageToAppchain, MessageToStarknet, ProgramInput, ProveProgram, + ProverIdentifier, ProvingState, Scheduler, +}; +use saya_core::ProverAccessKey; +use starknet_crypto::FieldElement; +use tokio::time::sleep; + +fn prover_identifier() -> ProverIdentifier { + let prover_key = env::var("PROVER_ACCESS_KEY").expect("PROVER_ACCESS_KEY not set."); + + ProverIdentifier::Http(Arc::new(HttpProverParams { + prover_url: "http://prover.visoft.dev:3618".parse().unwrap(), + prover_key: ProverAccessKey::from_hex_string(&prover_key) + .expect("Failed to parse prover key."), + })) +} + +fn sorted(mut v: Vec) -> Vec +where + E: std::cmp::Ord, +{ + v.sort(); + v +} + +#[ignore] +#[tokio::test] +async fn test_program_input_from_program_output() -> anyhow::Result<()> { + let mut input = ProgramInput { + prev_state_root: FieldElement::from_str("101").unwrap(), + block_number: 102, + block_hash: FieldElement::from_str("103").unwrap(), + config_hash: FieldElement::from_str("104").unwrap(), + message_to_starknet_segment: vec![ + MessageToStarknet { + from_address: ContractAddress::from(FieldElement::from_str("105").unwrap()), + to_address: ContractAddress::from(FieldElement::from_str("106").unwrap()), + payload: vec![FieldElement::from_str("107").unwrap()], + }, + MessageToStarknet { + from_address: ContractAddress::from(FieldElement::from_str("105").unwrap()), + to_address: ContractAddress::from(FieldElement::from_str("106").unwrap()), + payload: vec![FieldElement::from_str("107").unwrap()], + }, + ], + message_to_appchain_segment: vec![ + MessageToAppchain { + from_address: ContractAddress::from(FieldElement::from_str("108").unwrap()), + to_address: ContractAddress::from(FieldElement::from_str("109").unwrap()), + nonce: FieldElement::from_str("110").unwrap(), + selector: FieldElement::from_str("111").unwrap(), + payload: vec![FieldElement::from_str("112").unwrap()], + }, + MessageToAppchain { + from_address: ContractAddress::from(FieldElement::from_str("108").unwrap()), + to_address: ContractAddress::from(FieldElement::from_str("109").unwrap()), + nonce: FieldElement::from_str("110").unwrap(), + selector: FieldElement::from_str("111").unwrap(), + payload: vec![FieldElement::from_str("112").unwrap()], + }, + ], + state_updates: StateUpdates { + nonce_updates: { + let mut map = std::collections::HashMap::new(); + map.insert( + ContractAddress::from(FieldElement::from_str("1111").unwrap()), + FieldElement::from_str("22222").unwrap(), + ); + map + }, + storage_updates: vec![( + ContractAddress::from(FieldElement::from_str("333")?), + vec![(FieldElement::from_str("4444")?, FieldElement::from_str("555")?)] + .into_iter() + .collect(), + )] + .into_iter() + .collect(), + contract_updates: { + let mut map = std::collections::HashMap::new(); + map.insert( + ContractAddress::from(FieldElement::from_str("66666").unwrap()), + FieldElement::from_str("7777").unwrap(), + ); + map + }, + declared_classes: { + let mut map = std::collections::HashMap::new(); + map.insert( + FieldElement::from_str("88888").unwrap(), + FieldElement::from_str("99999").unwrap(), + ); + map + }, + }, + world_da: None, + }; + + input.fill_da(333u64.into()); + + let serialized_input = serde_json::to_string(&input).unwrap(); + let proof = + prove_diff(serialized_input, prover_identifier(), ProveProgram::Differ).await.unwrap(); + + let program_output_from_proof = extract_output(&proof).unwrap().program_output; + let program_input_from_proof = program_input_from_program_output( + program_output_from_proof, + input.clone().state_updates, + 333u64.into(), + ) + .unwrap(); + assert_eq!(input, program_input_from_proof); + Ok(()) +} + +#[ignore] +#[tokio::test] +async fn test_combine_proofs() { + let input1 = r#"{ + "prev_state_root": "101", + "block_number": 102, + "block_hash": "103", + "config_hash": "104", + "message_to_starknet_segment": [ + "105", + "106", + "1", + "107" + ], + "message_to_appchain_segment": [ + "108", + "109", + "110", + "111", + "1", + "112" + ], + "nonce_updates": { + "1111": "22222" + }, + "storage_updates": { + "333": { + "4444": "555" + } + }, + "contract_updates": { + "66666": "7777" + }, + "declared_classes": { + "88888": "99999" + }, + "world_da": [] + }"#; + let input2 = r#"{ + "prev_state_root": "201", + "block_number": 103, + "block_hash": "203", + "config_hash": "204", + "message_to_starknet_segment": [ + "205", + "206", + "1", + "207" + ], + "message_to_appchain_segment": [ + "208", + "209", + "210", + "211", + "1", + "207" + ], + "nonce_updates": { + "12334": "214354" + }, + "storage_updates": { + "333": { + "44536346444": "565474555" + } + }, + "contract_updates": { + "4356345": "775468977" + }, + "declared_classes": { + "88556753888": "9995764599" + }, + "world_da": [] + }"#; + let expected = r#"{ + "prev_state_root": "101", + "block_number": 103, + "block_hash": "203", + "config_hash": "104", + "message_to_starknet_segment": [ + "105", + "106", + "1", + "107", + "205", + "206", + "1", + "207" + ], + "message_to_appchain_segment": [ + "108", + "109", + "110", + "111", + "1", + "112", + "208", + "209", + "210", + "211", + "1", + "207" + ], + "nonce_updates": { + "12334": "214354", + "1111": "22222" + }, + "storage_updates": { + "333": { + "44536346444": "565474555", + "4444": "555" + } + }, + "contract_updates": { + "4356345": "775468977", + "66666": "7777" + }, + "declared_classes": { + "88556753888": "9995764599", + "88888": "99999" + }, + "world_da": [ + "4444", + "555", + "44536346444", + "565474555" + ] + }"#; + + let mut inputs = vec![input1, input2] + .into_iter() + .map(|s| serde_json::from_str::(s).unwrap()) + .collect::>(); + + let world = FieldElement::from_dec_str("333").unwrap(); + for input in &mut inputs { + input.fill_da(world) + } + + let mut scheduler = Scheduler::new(2, world, prover_identifier()); + scheduler.push_diff(inputs.remove(0)).unwrap(); + + sleep(Duration::from_millis(5)).await; + + assert!(!scheduler.is_full()); + assert_eq!(scheduler.query(102).await.unwrap(), ProvingState::Proving); + assert_eq!(scheduler.query(103).await.unwrap(), ProvingState::NotPushed); + + scheduler.push_diff(inputs.remove(0)).unwrap(); + sleep(Duration::from_millis(5)).await; + + assert!(scheduler.is_full()); + assert_eq!(scheduler.query(102).await.unwrap(), ProvingState::Proving); + assert_eq!(scheduler.query(103).await.unwrap(), ProvingState::Proving); + + let (_, output, block_range) = scheduler.proved().await.unwrap(); + let expected: ProgramInput = serde_json::from_str(expected).unwrap(); + assert_eq!(output, expected); + assert_eq!(block_range, (102, 103)); +} + +#[ignore] +#[tokio::test] +async fn test_4_combine_proofs() -> anyhow::Result<()> { + let world = FieldElement::from_dec_str("42")?; + + let input_1 = r#"{ + "prev_state_root": "101", + "block_number": 101, + "block_hash": "103", + "config_hash": "104", + "message_to_starknet_segment": ["105", "106", "1", "1"], + "message_to_appchain_segment": ["108", "109", "110", "111", "1", "112"], + "storage_updates": { + "42": { + "2010": "1200", + "2012": "1300" + } + }, + "nonce_updates": {}, + "contract_updates": {}, + "declared_classes": {} + } + "#; + + let input_2 = r#"{ + "prev_state_root": "1011", + "block_number": 102, + "block_hash": "1033", + "config_hash": "104", + "message_to_starknet_segment": ["135", "136", "1", "1"], + "message_to_appchain_segment": ["158", "159", "150", "151", "1", "152"], + "storage_updates": { + "42": { + "2010": "1250", + "2032": "1300" + } + }, + "nonce_updates": {}, + "contract_updates": {}, + "declared_classes": {} + }"#; + + let input_3 = r#"{ + "prev_state_root": "10111", + "block_number": 103, + "block_hash": "10333", + "config_hash": "104", + "message_to_starknet_segment": [], + "message_to_appchain_segment": [], + "storage_updates": { + "42": { + "2013": "2" + } + }, + "nonce_updates": {}, + "contract_updates": {}, + "declared_classes": {} + }"#; + + let input_4 = r#"{ + "prev_state_root": "101111", + "block_number": 104, + "block_hash": "103333", + "config_hash": "104", + "message_to_starknet_segment": ["165", "166", "1", "1"], + "message_to_appchain_segment": ["168", "169", "160", "161", "1", "162"], + "storage_updates": { + "42": { + "2010": "1700" + } + }, + "nonce_updates": {}, + "contract_updates": {}, + "declared_classes": {} + } + "#; + + let expected = r#"{ + "prev_state_root": "101", + "block_number": 104, + "block_hash": "103333", + "config_hash": "104", + "message_to_starknet_segment": ["105", "106", "1", "1", "135", "136", "1", "1", "165", "166", "1", "1"], + "message_to_appchain_segment": ["108", "109", "110", "111", "1", "112", "158", "159", "150", "151", "1", "152", "168", "169", "160", "161", "1", "162"], + "storage_updates": { + "42": { + "2010": "1700", + "2012": "1300", + "2032": "1300", + "2013": "2" + } + }, + "nonce_updates": {}, + "contract_updates": {}, + "declared_classes": {}, + "world_da": ["2010", "1700", "2012", "1300", "2032", "1300", "2013", "2"] + }"#; + + let inputs = vec![input_1, input_2, input_3, input_4] + .into_iter() + .map(|input| { + let mut input = serde_json::from_str::(input).unwrap(); + input.fill_da(world); + input + }) + .collect::>(); + + let expected = serde_json::from_str::(expected).unwrap(); + + let (_proof, output) = Scheduler::merge(inputs, world, prover_identifier()).await?; + assert_eq!(output.message_to_appchain_segment, expected.message_to_appchain_segment); + assert_eq!(output.message_to_starknet_segment, expected.message_to_starknet_segment); + + assert_eq!(sorted(output.world_da.unwrap()), sorted(expected.world_da.unwrap())); + assert_eq!(output.state_updates, expected.state_updates); + + assert_eq!(expected.prev_state_root, output.prev_state_root); + assert_eq!(expected.block_number, output.block_number); + assert_eq!(expected.block_hash, output.block_hash); + assert_eq!(expected.config_hash, output.config_hash); + + Ok(()) +} diff --git a/bin/scheduler/Cargo.toml b/bin/scheduler/Cargo.toml new file mode 100644 index 0000000000..2db9f60385 --- /dev/null +++ b/bin/scheduler/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "scheduler" +edition.workspace = true +license.workspace = true +repository.workspace = true +version.workspace = true + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +saya-core.workspace = true +katana-primitives.workspace = true +tokio.workspace = true +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +clap.workspace = true +clap_complete.workspace = true +url = "2.5.0" diff --git a/bin/scheduler/README.md b/bin/scheduler/README.md new file mode 100644 index 0000000000..baa673141b --- /dev/null +++ b/bin/scheduler/README.md @@ -0,0 +1,36 @@ +# `scheduler` + +```sh +cargo run --bin scheduler -- --world --key your_input.json your_input2.json ... your_input2^n +``` +## number of inputs have to be power of 2 +# input format example + +```json +{ + "prev_state_root":101, + "block_number":102, + "block_hash":103, + "config_hash":104, + "message_to_starknet_segment":[105,106,1,1], + "message_to_appchain_segment":[108,109,110,111,1,112], + "nonce_updates":{}, + "storage_updates":{ + "42": { + "2010": 1200, + "2012": 1300 + } + }, + "contract_updates":{}, + "declared_classes":{} +} +``` + +# output +## scheduler outputs map of proofs in result.json file +```json +{ + "proof1": proof, + "proof2": proof, +} +``` \ No newline at end of file diff --git a/bin/scheduler/src/main.rs b/bin/scheduler/src/main.rs new file mode 100644 index 0000000000..275b4036ed --- /dev/null +++ b/bin/scheduler/src/main.rs @@ -0,0 +1,78 @@ +use std::fs; +use std::sync::Arc; + +use clap::Parser; +use katana_primitives::FieldElement; +use saya_core::prover::{HttpProverParams, ProgramInput, ProverIdentifier, Scheduler}; +use saya_core::ProverAccessKey; +use serde::{Deserialize, Serialize}; +use serde_json::{Map, Value}; +use tokio::fs::File; +use tokio::io::AsyncWriteExt; + +#[derive(Parser, Debug, Serialize, Deserialize)] +#[clap(author, version, about, long_about = None)] +pub struct CliInput { + #[arg(short, long)] + pub world: FieldElement, + #[arg(short, long)] + pub key: String, + pub files: Vec, +} + +fn read_json_file(file_path: &str) -> Value { + let data = fs::read_to_string(file_path).expect("Unable to read file"); + serde_json::from_str(&data).expect("Unable to parse JSON") +} + +fn program_input_from_json(json_data: Value) -> ProgramInput { + serde_json::from_value(json_data).unwrap() +} + +async fn prove_to_json(result: Vec) { + let mut file = File::create("result.json").await.expect("Failed to create file"); + + let mut json_map = Map::new(); + for (index, elem) in result.iter().enumerate() { + let v: Value = serde_json::from_str(elem).expect("Failed to parse JSON"); + json_map.insert(format!("proof {}", index + 1), v); // Labels start from "proof 1", "proof 2", ... + } + + let serialized = serde_json::to_string_pretty(&json_map).expect("Failed to serialize result"); + + file.write_all(serialized.as_bytes()).await.expect("Failed to write to file"); +} + +// Entry point of the program with async main function to handle I/O operations. + +#[tokio::main] +async fn main() { + use url::Url; + let args = CliInput::parse(); // Parse CLI arguments. + if args.files.is_empty() { + eprintln!("No files provided"); + std::process::exit(1); + } + if !args.files.len().is_power_of_two() { + eprintln!("Only 2^n files are supported. Got {} files", args.files.len()); + std::process::exit(1); + } + + // Process each file, converting JSON data to ProgramInput. + let inputs: Vec = args + .files + .iter() + .map(|file| { + let json_data = read_json_file(file.to_str().unwrap()); + program_input_from_json(json_data) + }) + .collect(); + let prover_params = Arc::new(HttpProverParams { + prover_url: Url::parse("http://localhost:3000").unwrap(), + prover_key: ProverAccessKey::from_hex_string(&args.key).unwrap(), + }); + + let result = + Scheduler::merge(inputs, args.world, ProverIdentifier::Http(prover_params)).await.unwrap(); + prove_to_json(vec![result.0]).await; +} diff --git a/bin/sozo/README.md b/bin/sozo/README.md index c88c71a7e2..bb864ed5b3 100644 --- a/bin/sozo/README.md +++ b/bin/sozo/README.md @@ -4,7 +4,7 @@ curl -L https://install.dojoengine.org | bash ``` -[Documentation](https://book.dojoengine.org/toolchain/sozo/overview) +[Documentation](https://book.dojoengine.org/toolchain/sozo) Some parts of sozo were inspired by [starkli](https://github.com/xJonathanLEI/starkli) created by Jonathan LEI. It is licensed under Apache 2.0 / MIT License. diff --git a/bin/sozo/src/commands/build.rs b/bin/sozo/src/commands/build.rs index 14faaf5eb8..b94785575e 100644 --- a/bin/sozo/src/commands/build.rs +++ b/bin/sozo/src/commands/build.rs @@ -1,8 +1,8 @@ use anyhow::{Context, Result}; use clap::Args; use dojo_bindgen::{BuiltinPlugins, PluginManager}; -use dojo_lang::compiler::MANIFESTS_DIR; use dojo_lang::scarb_internal::compile_workspace; +use dojo_world::manifest::MANIFESTS_DIR; use dojo_world::metadata::dojo_metadata_from_workspace; use prettytable::format::consts::FORMAT_NO_LINESEP_WITH_TITLE; use prettytable::{format, Cell, Row, Table}; diff --git a/bin/sozo/src/commands/clean.rs b/bin/sozo/src/commands/clean.rs index 9374a79c9a..41da4a1921 100644 --- a/bin/sozo/src/commands/clean.rs +++ b/bin/sozo/src/commands/clean.rs @@ -3,7 +3,7 @@ use std::fs; use anyhow::Result; use camino::Utf8PathBuf; use clap::Args; -use dojo_lang::compiler::{ABIS_DIR, BASE_DIR, MANIFESTS_DIR}; +use dojo_world::manifest::{ABIS_DIR, BASE_DIR, MANIFESTS_DIR}; use scarb::core::Config; use tracing::trace; diff --git a/bin/sozo/src/commands/dev.rs b/bin/sozo/src/commands/dev.rs index d2b8ba383c..79d866b1a0 100644 --- a/bin/sozo/src/commands/dev.rs +++ b/bin/sozo/src/commands/dev.rs @@ -8,9 +8,8 @@ use cairo_lang_compiler::db::RootDatabase; use cairo_lang_filesystem::db::{AsFilesGroupMut, FilesGroupEx, PrivRawFileContentQuery}; use cairo_lang_filesystem::ids::FileId; use clap::Args; -use dojo_lang::compiler::{BASE_DIR, MANIFESTS_DIR}; use dojo_lang::scarb_internal::build_scarb_root_database; -use dojo_world::manifest::{BaseManifest, DeploymentManifest}; +use dojo_world::manifest::{BaseManifest, DeploymentManifest, BASE_DIR, MANIFESTS_DIR}; use dojo_world::metadata::dojo_metadata_from_workspace; use dojo_world::migration::world::WorldDiff; use dojo_world::migration::TxnConfig; diff --git a/bin/sozo/src/commands/migrate.rs b/bin/sozo/src/commands/migrate.rs index 734f77c128..0d36af3fbc 100644 --- a/bin/sozo/src/commands/migrate.rs +++ b/bin/sozo/src/commands/migrate.rs @@ -1,6 +1,6 @@ use anyhow::{anyhow, Context, Result}; use clap::{Args, Subcommand}; -use dojo_lang::compiler::MANIFESTS_DIR; +use dojo_world::manifest::MANIFESTS_DIR; use dojo_world::metadata::{dojo_metadata_from_workspace, Environment}; use dojo_world::migration::TxnConfig; use katana_rpc_api::starknet::RPC_SPEC_VERSION; @@ -50,6 +50,8 @@ pub enum MigrateCommand { #[command(flatten)] transaction: TransactionOptions, }, + #[command(about = "Generate overlays file.")] + GenerateOverlays, } impl MigrateArgs { @@ -58,6 +60,13 @@ impl MigrateArgs { let ws = scarb::ops::read_workspace(config.manifest_path(), config)?; let dojo_metadata = dojo_metadata_from_workspace(&ws); + // This variant is tested before the match on `self.command` to avoid + // having the need to spin up a Katana to generate the files. + if let MigrateCommand::GenerateOverlays = self.command { + trace!("Generating overlays."); + return migration::generate_overlays(&ws); + } + let env_metadata = if config.manifest_path().exists() { dojo_metadata.env().cloned() } else { @@ -82,6 +91,7 @@ impl MigrateArgs { match self.command { MigrateCommand::Plan => config.tokio_handle().block_on(async { + trace!(name, "Planning migration."); migration::migrate( &ws, world_address, @@ -110,6 +120,7 @@ impl MigrateArgs { ) .await }), + _ => unreachable!("other case handled above."), } } } diff --git a/bin/torii/README.md b/bin/torii/README.md index 635eb16da0..21ff59ea1a 100644 --- a/bin/torii/README.md +++ b/bin/torii/README.md @@ -4,4 +4,4 @@ curl -L https://install.dojoengine.org | bash ``` -[Documentation](https://book.dojoengine.org/toolchain/torii/overview) +[Documentation](https://book.dojoengine.org/toolchain/torii) diff --git a/crates/benches/src/deployer.rs b/crates/benches/src/deployer.rs index abb0251c07..2a3aa0e08c 100644 --- a/crates/benches/src/deployer.rs +++ b/crates/benches/src/deployer.rs @@ -3,9 +3,9 @@ use std::path::PathBuf; use anyhow::{anyhow, bail, Context, Ok, Result}; use clap::Parser; -use dojo_lang::compiler::{DojoCompiler, DEPLOYMENTS_DIR, MANIFESTS_DIR}; +use dojo_lang::compiler::DojoCompiler; use dojo_lang::plugin::CairoPluginRepository; -use dojo_world::manifest::DeploymentManifest; +use dojo_world::manifest::{DeploymentManifest, DEPLOYMENTS_DIR, MANIFESTS_DIR}; use futures::executor::block_on; use katana_runner::KatanaRunner; use scarb::compiler::CompilerRepository; diff --git a/crates/dojo-bindgen/src/lib.rs b/crates/dojo-bindgen/src/lib.rs index baa5f9b7e3..ea93b0637e 100644 --- a/crates/dojo-bindgen/src/lib.rs +++ b/crates/dojo-bindgen/src/lib.rs @@ -292,9 +292,9 @@ mod tests { assert_eq!(moves.name, "Moves"); assert_eq!(moves.qualified_path, "dojo_examples::models::Moves"); - let moved = data.models.get("EmoteMessage").unwrap(); - assert_eq!(moved.name, "EmoteMessage"); - assert_eq!(moved.qualified_path, "dojo_examples::models::EmoteMessage"); + let moved = data.models.get("Message").unwrap(); + assert_eq!(moved.name, "Message"); + assert_eq!(moved.qualified_path, "dojo_examples::models::Message"); let player_config = data.models.get("PlayerConfig").unwrap(); assert_eq!(player_config.name, "PlayerConfig"); diff --git a/crates/dojo-core/src/base_test.cairo b/crates/dojo-core/src/base_test.cairo index d3c974abd3..a90d40b071 100644 --- a/crates/dojo-core/src/base_test.cairo +++ b/crates/dojo-core/src/base_test.cairo @@ -122,7 +122,7 @@ mod invalid_legacy_model { impl InvalidModelMetadata of super::IMetadataOnly { fn selector(self: @ContractState) -> felt252 { // Pre-computed address of a contract deployed through the world. - 0x742c3d09472a40914dedcbd609788fd547bde613d6c4d4c2f15d41f4e241f25 + 0x1b1edb46931b1a98d8c6ecf2703e8483ec1d85fb75b3e9c061eab383fc8f8f1 } fn name(self: @ContractState) -> ByteArray { @@ -160,7 +160,7 @@ mod invalid_model { fn selector(self: @ContractState) -> felt252 { // NOTE: Need to update this value if address changes // Pre-computed address of a contract deployed through the world. - 0x42503befcd7ad05718645aca9c5ddd83b53dca440f9239ce2dcf63018fba16 + 0x1b1edb46931b1a98d8c6ecf2703e8483ec1d85fb75b3e9c061eab383fc8f8f1 } fn name(self: @ContractState) -> ByteArray { diff --git a/crates/dojo-core/src/config/component.cairo b/crates/dojo-core/src/config/component.cairo index eea1cebc4d..ce77eb5b49 100644 --- a/crates/dojo-core/src/config/component.cairo +++ b/crates/dojo-core/src/config/component.cairo @@ -15,13 +15,19 @@ mod Config { #[event] #[derive(Drop, starknet::Event, Debug, PartialEq)] pub enum Event { - ProgramHashUpdate: ProgramHashUpdate, + DifferProgramHashUpdate: DifferProgramHashUpdate, + MergerProgramHashUpdate: MergerProgramHashUpdate, FactsRegistryUpdate: FactsRegistryUpdate } #[derive(Drop, starknet::Event, Debug, PartialEq)] - pub struct ProgramHashUpdate { - program_hash: felt252 + pub struct DifferProgramHashUpdate { + program_hash: felt252, + } + + #[derive(Drop, starknet::Event, Debug, PartialEq)] + pub struct MergerProgramHashUpdate { + program_hash: felt252, } #[derive(Drop, starknet::Event, Debug, PartialEq)] @@ -31,7 +37,8 @@ mod Config { #[storage] struct Storage { - program_hash: felt252, + differ_program_hash: felt252, + merger_program_hash: felt252, facts_registry: ContractAddress, owner: ContractAddress } @@ -45,19 +52,32 @@ mod Config { } } - #[embeddable_as(ConfigImpl)] impl Config< TContractState, +HasComponent > of IConfig> { - fn set_program_hash(ref self: ComponentState, program_hash: felt252) { + fn set_differ_program_hash( + ref self: ComponentState, program_hash: felt252 + ) { + assert(get_caller_address() == self.owner.read(), errors::INVALID_CALLER); + self.differ_program_hash.write(program_hash); + self.emit(DifferProgramHashUpdate { program_hash }); + } + + fn set_merger_program_hash( + ref self: ComponentState, program_hash: felt252 + ) { assert(get_caller_address() == self.owner.read(), errors::INVALID_CALLER); - self.program_hash.write(program_hash); - self.emit(ProgramHashUpdate { program_hash: program_hash }); + self.merger_program_hash.write(program_hash); + self.emit(MergerProgramHashUpdate { program_hash }); + } + + fn get_differ_program_hash(self: @ComponentState) -> felt252 { + self.differ_program_hash.read() } - fn get_program_hash(self: @ComponentState) -> felt252 { - self.program_hash.read() + fn get_merger_program_hash(self: @ComponentState) -> felt252 { + self.merger_program_hash.read() } fn set_facts_registry(ref self: ComponentState, address: ContractAddress) { diff --git a/crates/dojo-core/src/config/interface.cairo b/crates/dojo-core/src/config/interface.cairo index da3aa19150..de82abcdec 100644 --- a/crates/dojo-core/src/config/interface.cairo +++ b/crates/dojo-core/src/config/interface.cairo @@ -9,7 +9,8 @@ trait IConfig { /// /// * `program_hash` - The program hash. /// * `config_hash` - The program's config hash. - fn set_program_hash(ref self: T, program_hash: felt252); + fn set_differ_program_hash(ref self: T, program_hash: felt252); + fn set_merger_program_hash(ref self: T, program_hash: felt252); /// Gets the information of the program that generates the /// state transition trace (namely DojoOS). @@ -17,7 +18,8 @@ trait IConfig { /// # Returns /// /// The program hash and it's configuration hash. - fn get_program_hash(self: @T) -> felt252; + fn get_differ_program_hash(self: @T) -> felt252; + fn get_merger_program_hash(self: @T) -> felt252; /// Sets the facts registry contract address, which is already /// initialized with the verifier information. diff --git a/crates/dojo-core/src/interfaces.cairo b/crates/dojo-core/src/interfaces.cairo index 4b944d22b0..853305fc4f 100644 --- a/crates/dojo-core/src/interfaces.cairo +++ b/crates/dojo-core/src/interfaces.cairo @@ -21,7 +21,10 @@ struct ProgramOutput { #[starknet::interface] trait IUpgradeableState { fn upgrade_state( - ref self: TContractState, new_state: Span, program_output: ProgramOutput + ref self: TContractState, + new_state: Span, + program_output: ProgramOutput, + program_hash: felt252 ); } diff --git a/crates/dojo-core/src/world.cairo b/crates/dojo-core/src/world.cairo index 083c7b6c2b..e58610bdec 100644 --- a/crates/dojo-core/src/world.cairo +++ b/crates/dojo-core/src/world.cairo @@ -108,6 +108,7 @@ mod world { #[abi(embed_v0)] impl ConfigImpl = Config::ConfigImpl; + impl ConfigInternalImpl = Config::InternalImpl; #[event] #[derive(Drop, starknet::Event)] @@ -223,6 +224,8 @@ mod world { (resource_metadata::initial_class_hash(), resource_metadata::initial_address()) ); + self.config.initializer(creator); + EventEmitter::emit(ref self, WorldSpawned { address: get_contract_address(), creator }); } @@ -618,7 +621,10 @@ mod world { #[abi(embed_v0)] impl UpgradeableState of IUpgradeableState { fn upgrade_state( - ref self: ContractState, new_state: Span, program_output: ProgramOutput + ref self: ContractState, + new_state: Span, + program_output: ProgramOutput, + program_hash: felt252 ) { let mut da_hasher = PedersenImpl::new(0); let mut i = 0; @@ -633,11 +639,16 @@ mod world { let da_hash = da_hasher.finalize(); assert(da_hash == program_output.world_da_hash, 'wrong output hash'); + assert( + program_hash == self.config.get_differ_program_hash() + || program_hash == self.config.get_merger_program_hash(), + 'wrong program hash' + ); + let mut program_output_array = array![]; program_output.serialize(ref program_output_array); let program_output_hash = poseidon::poseidon_hash_span(program_output_array.span()); - let program_hash = self.config.get_program_hash(); let fact = poseidon::PoseidonImpl::new() .update(program_hash) .update(program_output_hash) @@ -657,7 +668,7 @@ mod world { 0, starknet::storage_address_from_base(base), *new_state.at(i).value ) .unwrap_syscall(); - i += 2; + i += 1; }; EventEmitter::emit(ref self, StateUpdated { da_hash: da_hash }); } diff --git a/crates/dojo-core/src/world_test.cairo b/crates/dojo-core/src/world_test.cairo index 5106cba9a4..4d8829410e 100644 --- a/crates/dojo-core/src/world_test.cairo +++ b/crates/dojo-core/src/world_test.cairo @@ -17,7 +17,9 @@ use dojo::database::introspect::{Introspect, Layout, FieldLayout}; use dojo::database::MAX_ARRAY_LENGTH; use dojo::test_utils::{spawn_test_world, deploy_with_world_address, assert_array}; use dojo::benchmarks::{Character, end}; -use dojo::config::component::Config::{ProgramHashUpdate, FactsRegistryUpdate}; +use dojo::config::component::Config::{ + DifferProgramHashUpdate, MergerProgramHashUpdate, FactsRegistryUpdate +}; use dojo::model::Model; #[derive(Introspect, Copy, Drop, Serde)] @@ -807,16 +809,16 @@ fn drop_all_events(address: ContractAddress) { #[test] #[available_gas(6000000)] -fn test_program_hash_event_emit() { +fn test_differ_program_hash_event_emit() { let world = deploy_world(); drop_all_events(world.contract_address); let config = IConfigDispatcher { contract_address: world.contract_address }; - config.set_program_hash(program_hash: 98758347158781475198374598718743); + config.set_differ_program_hash(program_hash: 98758347158781475198374598718743); assert_eq!( starknet::testing::pop_log(world.contract_address), - Option::Some(ProgramHashUpdate { program_hash: 98758347158781475198374598718743 }) + Option::Some(DifferProgramHashUpdate { program_hash: 98758347158781475198374598718743 }) ); } diff --git a/crates/dojo-lang/src/compiler.rs b/crates/dojo-lang/src/compiler.rs index 653aab250e..e21edfe2bb 100644 --- a/crates/dojo-lang/src/compiler.rs +++ b/crates/dojo-lang/src/compiler.rs @@ -21,7 +21,8 @@ use camino::{Utf8Path, Utf8PathBuf}; use convert_case::{Case, Casing}; use dojo_world::manifest::{ AbiFormat, Class, ComputedValueEntrypoint, DojoContract, DojoModel, Manifest, ManifestMethods, - BASE_CONTRACT_NAME, WORLD_CONTRACT_NAME, + ABIS_DIR, BASE_CONTRACT_NAME, BASE_DIR, CONTRACTS_DIR, MANIFESTS_DIR, MODELS_DIR, + WORLD_CONTRACT_NAME, }; use itertools::Itertools; use scarb::compiler::helpers::{build_compiler_config, collect_main_crate_ids}; @@ -40,15 +41,6 @@ use crate::semantics::utils::find_module_rw; const CAIRO_PATH_SEPARATOR: &str = "::"; -pub const MANIFESTS_DIR: &str = "manifests"; -pub const BASE_DIR: &str = "base"; -pub const OVERLAYS_DIR: &str = "overlays"; -pub const DEPLOYMENTS_DIR: &str = "deployments"; -pub const ABIS_DIR: &str = "abis"; - -pub const CONTRACTS_DIR: &str = "contracts"; -pub const MODELS_DIR: &str = "models"; - pub const SOURCES_DIR: &str = "src"; pub(crate) const LOG_TARGET: &str = "dojo_lang::compiler"; diff --git a/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/abis/base/dojo_world_world.json b/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/abis/base/dojo_world_world.json index 63207ddec9..c1a2447839 100644 --- a/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/abis/base/dojo_world_world.json +++ b/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/abis/base/dojo_world_world.json @@ -555,6 +555,10 @@ { "name": "program_output", "type": "dojo::interfaces::ProgramOutput" + }, + { + "name": "program_hash", + "type": "core::felt252" } ], "outputs": [], @@ -573,7 +577,19 @@ "items": [ { "type": "function", - "name": "set_program_hash", + "name": "set_differ_program_hash", + "inputs": [ + { + "name": "program_hash", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_merger_program_hash", "inputs": [ { "name": "program_hash", @@ -585,7 +601,18 @@ }, { "type": "function", - "name": "get_program_hash", + "name": "get_differ_program_hash", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_merger_program_hash", "inputs": [], "outputs": [ { @@ -831,7 +858,19 @@ }, { "type": "event", - "name": "dojo::config::component::Config::ProgramHashUpdate", + "name": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "struct", + "members": [ + { + "name": "program_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "struct", "members": [ { @@ -859,8 +898,13 @@ "kind": "enum", "variants": [ { - "name": "ProgramHashUpdate", - "type": "dojo::config::component::Config::ProgramHashUpdate", + "name": "DifferProgramHashUpdate", + "type": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "nested" + }, + { + "name": "MergerProgramHashUpdate", + "type": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "nested" }, { diff --git a/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/base/dojo_world_world.toml b/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/base/dojo_world_world.toml index f80ccef0d2..2555ec3eda 100644 --- a/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/base/dojo_world_world.toml +++ b/crates/dojo-lang/src/manifest_test_data/compiler_cairo/manifests/dev/base/dojo_world_world.toml @@ -1,5 +1,5 @@ kind = "Class" -class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" -original_class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" +class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" +original_class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" abi = "manifests/dev/abis/base/dojo_world_world.json" name = "dojo::world::world" diff --git a/crates/dojo-test-utils/src/migration.rs b/crates/dojo-test-utils/src/migration.rs index 51036a2c0e..9edfb3e969 100644 --- a/crates/dojo-test-utils/src/migration.rs +++ b/crates/dojo-test-utils/src/migration.rs @@ -1,7 +1,6 @@ use anyhow::Result; use camino::Utf8PathBuf; -use dojo_lang::compiler::{BASE_DIR, MANIFESTS_DIR, OVERLAYS_DIR}; -use dojo_world::manifest::{BaseManifest, OverlayManifest}; +use dojo_world::manifest::{BaseManifest, OverlayManifest, BASE_DIR, MANIFESTS_DIR, OVERLAYS_DIR}; use dojo_world::migration::strategy::{prepare_for_migration, MigrationStrategy}; use dojo_world::migration::world::WorldDiff; use katana_primitives::FieldElement; diff --git a/crates/dojo-world/src/contracts/abi/world.rs b/crates/dojo-world/src/contracts/abi/world.rs index e2958635f1..4f9016025e 100644 --- a/crates/dojo-world/src/contracts/abi/world.rs +++ b/crates/dojo-world/src/contracts/abi/world.rs @@ -561,6 +561,10 @@ abigen!( { "name": "program_output", "type": "dojo::interfaces::ProgramOutput" + }, + { + "name": "program_hash", + "type": "core::felt252" } ], "outputs": [], @@ -579,7 +583,19 @@ abigen!( "items": [ { "type": "function", - "name": "set_program_hash", + "name": "set_differ_program_hash", + "inputs": [ + { + "name": "program_hash", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_merger_program_hash", "inputs": [ { "name": "program_hash", @@ -591,7 +607,18 @@ abigen!( }, { "type": "function", - "name": "get_program_hash", + "name": "get_differ_program_hash", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_merger_program_hash", "inputs": [], "outputs": [ { @@ -837,7 +864,19 @@ abigen!( }, { "type": "event", - "name": "dojo::config::component::Config::ProgramHashUpdate", + "name": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "struct", + "members": [ + { + "name": "program_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "struct", "members": [ { @@ -865,8 +904,13 @@ abigen!( "kind": "enum", "variants": [ { - "name": "ProgramHashUpdate", - "type": "dojo::config::component::Config::ProgramHashUpdate", + "name": "DifferProgramHashUpdate", + "type": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "nested" + }, + { + "name": "MergerProgramHashUpdate", + "type": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "nested" }, { diff --git a/crates/dojo-world/src/contracts/world_test.rs b/crates/dojo-world/src/contracts/world_test.rs index b0edb3de52..21759c1ee2 100644 --- a/crates/dojo-world/src/contracts/world_test.rs +++ b/crates/dojo-world/src/contracts/world_test.rs @@ -1,14 +1,13 @@ use std::time::Duration; use camino::Utf8PathBuf; -use dojo_lang::compiler::{BASE_DIR, MANIFESTS_DIR, OVERLAYS_DIR}; use dojo_test_utils::compiler; use katana_runner::KatanaRunner; use starknet::accounts::{Account, ConnectedAccount}; use starknet::core::types::{BlockId, BlockTag, FieldElement}; use super::{WorldContract, WorldContractReader}; -use crate::manifest::{BaseManifest, OverlayManifest}; +use crate::manifest::{BaseManifest, OverlayManifest, BASE_DIR, MANIFESTS_DIR, OVERLAYS_DIR}; use crate::metadata::dojo_metadata_from_workspace; use crate::migration::strategy::prepare_for_migration; use crate::migration::world::WorldDiff; diff --git a/crates/dojo-world/src/manifest/manifest_test.rs b/crates/dojo-world/src/manifest/manifest_test.rs index d6a2166fd0..4b003cab89 100644 --- a/crates/dojo-world/src/manifest/manifest_test.rs +++ b/crates/dojo-world/src/manifest/manifest_test.rs @@ -2,7 +2,6 @@ use std::io::Write; use cainome::cairo_serde::{ByteArray, CairoSerde}; use camino::Utf8PathBuf; -use dojo_lang::compiler::{BASE_DIR, MANIFESTS_DIR, OVERLAYS_DIR}; use dojo_test_utils::compiler; use dojo_test_utils::rpc::MockJsonRpcTransport; use katana_runner::KatanaRunner; @@ -14,10 +13,14 @@ use starknet::macros::{felt, selector}; use starknet::providers::jsonrpc::{JsonRpcClient, JsonRpcMethod}; use super::{ - parse_contracts_events, AbiFormat, BaseManifest, DojoContract, DojoModel, OverlayManifest, + parse_contracts_events, AbiFormat, BaseManifest, DojoContract, DojoModel, OverlayDojoContract, + OverlayManifest, }; use crate::contracts::world::test::deploy_world; -use crate::manifest::{parse_models_events, AbstractManifestError, DeploymentManifest, Manifest}; +use crate::manifest::{ + parse_models_events, AbstractManifestError, DeploymentManifest, Manifest, OverlayClass, + OverlayDojoModel, BASE_DIR, MANIFESTS_DIR, OVERLAYS_DIR, +}; use crate::metadata::dojo_metadata_from_workspace; use crate::migration::world::WorldDiff; @@ -497,3 +500,168 @@ fn test_abi_format_load_abi_string() -> Result<(), Box> { Ok(()) } + +#[test] +fn overlay_merge_for_contract_and_model_work_as_expected() { + let other = OverlayManifest { + contracts: vec![ + OverlayDojoContract { name: "othercontract1".into(), ..Default::default() }, + OverlayDojoContract { name: "othercontract2".into(), ..Default::default() }, + OverlayDojoContract { name: "existingcontract".into(), ..Default::default() }, + ], + models: vec![ + OverlayDojoModel { name: "othermodel1".into(), ..Default::default() }, + OverlayDojoModel { name: "othermodel2".into(), ..Default::default() }, + OverlayDojoModel { name: "existingmodel".into(), ..Default::default() }, + ], + ..Default::default() + }; + + let mut current = OverlayManifest { + contracts: vec![ + OverlayDojoContract { name: "currentcontract1".into(), ..Default::default() }, + OverlayDojoContract { name: "currentcontract2".into(), ..Default::default() }, + OverlayDojoContract { name: "existingcontract".into(), ..Default::default() }, + ], + models: vec![ + OverlayDojoModel { name: "currentmodel1".into(), ..Default::default() }, + OverlayDojoModel { name: "currentmodel2".into(), ..Default::default() }, + OverlayDojoModel { name: "existingmodel".into(), ..Default::default() }, + ], + ..Default::default() + }; + + let expected = OverlayManifest { + contracts: vec![ + OverlayDojoContract { name: "currentcontract1".into(), ..Default::default() }, + OverlayDojoContract { name: "currentcontract2".into(), ..Default::default() }, + OverlayDojoContract { name: "existingcontract".into(), ..Default::default() }, + OverlayDojoContract { name: "othercontract1".into(), ..Default::default() }, + OverlayDojoContract { name: "othercontract2".into(), ..Default::default() }, + ], + models: vec![ + OverlayDojoModel { name: "currentmodel1".into(), ..Default::default() }, + OverlayDojoModel { name: "currentmodel2".into(), ..Default::default() }, + OverlayDojoModel { name: "existingmodel".into(), ..Default::default() }, + OverlayDojoModel { name: "othermodel1".into(), ..Default::default() }, + OverlayDojoModel { name: "othermodel2".into(), ..Default::default() }, + ], + ..Default::default() + }; + + current.merge(other); + + assert_eq!(current, expected); +} + +#[test] +fn overlay_merge_for_world_work_as_expected() { + // when other.world is none and current.world is some + let other = OverlayManifest { ..Default::default() }; + let mut current = OverlayManifest { + world: Some(OverlayClass { name: "world".into(), ..Default::default() }), + ..Default::default() + }; + let expected = OverlayManifest { + world: Some(OverlayClass { name: "world".into(), ..Default::default() }), + ..Default::default() + }; + current.merge(other); + + assert_eq!(current, expected); + + // when other.world is some and current.world is none + let other = OverlayManifest { + world: Some(OverlayClass { name: "world".into(), ..Default::default() }), + ..Default::default() + }; + let mut current = OverlayManifest { ..Default::default() }; + let expected = OverlayManifest { + world: Some(OverlayClass { name: "world".into(), ..Default::default() }), + ..Default::default() + }; + + current.merge(other); + assert_eq!(current, expected); + + // when other.world is some and current.world is some + let other = OverlayManifest { + world: Some(OverlayClass { name: "worldother".into(), ..Default::default() }), + ..Default::default() + }; + let mut current = OverlayManifest { + world: Some(OverlayClass { name: "worldcurrent".into(), ..Default::default() }), + ..Default::default() + }; + let expected = OverlayManifest { + world: Some(OverlayClass { name: "worldcurrent".into(), ..Default::default() }), + ..Default::default() + }; + + current.merge(other); + assert_eq!(current, expected); + + // when other.world is none and current.world is none + let other = OverlayManifest { ..Default::default() }; + let mut current = OverlayManifest { ..Default::default() }; + let expected = OverlayManifest { ..Default::default() }; + + current.merge(other); + assert_eq!(current, expected); +} + +#[test] +fn overlay_merge_for_base_work_as_expected() { + // when other.base is none and current.base is some + let other = OverlayManifest { ..Default::default() }; + let mut current = OverlayManifest { + base: Some(OverlayClass { name: "base".into(), ..Default::default() }), + ..Default::default() + }; + let expected = OverlayManifest { + base: Some(OverlayClass { name: "base".into(), ..Default::default() }), + ..Default::default() + }; + current.merge(other); + + assert_eq!(current, expected); + + // when other.base is some and current.base is none + let other = OverlayManifest { + base: Some(OverlayClass { name: "base".into(), ..Default::default() }), + ..Default::default() + }; + let mut current = OverlayManifest { ..Default::default() }; + let expected = OverlayManifest { + base: Some(OverlayClass { name: "base".into(), ..Default::default() }), + ..Default::default() + }; + + current.merge(other); + assert_eq!(current, expected); + + // when other.base is some and current.base is some + let other = OverlayManifest { + base: Some(OverlayClass { name: "baseother".into(), ..Default::default() }), + ..Default::default() + }; + let mut current = OverlayManifest { + base: Some(OverlayClass { name: "basecurrent".into(), ..Default::default() }), + ..Default::default() + }; + let expected = OverlayManifest { + base: Some(OverlayClass { name: "basecurrent".into(), ..Default::default() }), + ..Default::default() + }; + + current.merge(other); + assert_eq!(current, expected); + + // when other.base is none and current.base is none + let other = OverlayManifest { ..Default::default() }; + let mut current = OverlayManifest { ..Default::default() }; + let expected = OverlayManifest { ..Default::default() }; + + current.merge(other); + assert_eq!(current, expected); +} diff --git a/crates/dojo-world/src/manifest/mod.rs b/crates/dojo-world/src/manifest/mod.rs index f6f45f8059..d3906595ab 100644 --- a/crates/dojo-world/src/manifest/mod.rs +++ b/crates/dojo-world/src/manifest/mod.rs @@ -40,6 +40,15 @@ pub const BASE_CONTRACT_NAME: &str = "dojo::base::base"; pub const RESOURCE_METADATA_CONTRACT_NAME: &str = "dojo::resource_metadata::resource_metadata"; pub const RESOURCE_METADATA_MODEL_NAME: &str = "0x5265736f757263654d65746164617461"; +pub const MANIFESTS_DIR: &str = "manifests"; +pub const BASE_DIR: &str = "base"; +pub const OVERLAYS_DIR: &str = "overlays"; +pub const DEPLOYMENTS_DIR: &str = "deployments"; +pub const ABIS_DIR: &str = "abis"; + +pub const CONTRACTS_DIR: &str = "contracts"; +pub const MODELS_DIR: &str = "models"; + #[derive(Error, Debug)] pub enum AbstractManifestError { #[error("Remote World not found.")] @@ -57,7 +66,9 @@ pub enum AbstractManifestError { #[error(transparent)] Model(#[from] ModelError), #[error(transparent)] - TOML(#[from] toml::de::Error), + TomlDe(#[from] toml::de::Error), + #[error(transparent)] + TomlSer(#[from] toml::ser::Error), #[error(transparent)] IO(#[from] io::Error), #[error("Abi couldn't be loaded from path: {0}")] @@ -94,8 +105,8 @@ impl From for DeploymentManifest { impl BaseManifest { /// Load the manifest from a file at the given path. pub fn load_from_path(path: &Utf8PathBuf) -> Result { - let contract_dir = path.join("contracts"); - let model_dir = path.join("models"); + let contract_dir = path.join(CONTRACTS_DIR); + let model_dir = path.join(MODELS_DIR); let world: Manifest = toml::from_str(&fs::read_to_string( path.join(WORLD_CONTRACT_NAME.replace("::", "_")).with_extension("toml"), @@ -147,6 +158,8 @@ impl BaseManifest { impl OverlayManifest { pub fn load_from_path(path: &Utf8PathBuf) -> Result { + fs::create_dir_all(path)?; + let mut world: Option = None; let world_path = path.join(WORLD_CONTRACT_NAME.replace("::", "_")).with_extension("toml"); @@ -162,15 +175,72 @@ impl OverlayManifest { base = Some(toml::from_str(&fs::read_to_string(base_path)?)?); } - let contract_dir = path.join("contracts"); - + let contract_dir = path.join(CONTRACTS_DIR); let contracts = if contract_dir.exists() { overlay_elements_from_path::(&contract_dir)? } else { vec![] }; - Ok(Self { world, base, contracts }) + let model_dir = path.join(MODELS_DIR); + let models = if model_dir.exists() { + overlay_elements_from_path::(&model_dir)? + } else { + vec![] + }; + + Ok(Self { world, base, contracts, models }) + } + + /// Writes `Self` to overlay manifests folder. + /// + /// - `world` and `base` manifest are written to root of the folder. + /// - `contracts` and `models` are written to their respective directories. + pub fn write_to_path_nested(&self, path: &Utf8PathBuf) -> Result<(), AbstractManifestError> { + fs::create_dir_all(path)?; + + if let Some(ref world) = self.world { + let world = toml::to_string(world)?; + let file_name = + path.join(WORLD_CONTRACT_NAME.replace("::", "_")).with_extension("toml"); + fs::write(file_name, world)?; + } + + if let Some(ref base) = self.base { + let base = toml::to_string(base)?; + let file_name = path.join(BASE_CONTRACT_NAME.replace("::", "_")).with_extension("toml"); + fs::write(file_name, base)?; + } + + overlay_dojo_contracts_to_path(&path.join(CONTRACTS_DIR), self.contracts.as_slice())?; + overlay_dojo_model_to_path(&path.join(MODELS_DIR), self.models.as_slice())?; + Ok(()) + } + + /// Add missing overlay items from `others` to `self`. + /// Note that this method don't override if certain item already exists in `self`. + pub fn merge(&mut self, other: OverlayManifest) { + if self.world.is_none() { + self.world = other.world; + } + + if self.base.is_none() { + self.base = other.base; + } + + for other_contract in other.contracts { + let found = self.contracts.iter().find(|c| c.name == other_contract.name); + if found.is_none() { + self.contracts.push(other_contract); + } + } + + for other_model in other.models { + let found = self.models.iter().find(|m| m.name == other_model.name); + if found.is_none() { + self.models.push(other_model); + } + } } } @@ -496,20 +566,6 @@ fn parse_models_events(events: Vec) -> Vec> { .collect() } -// fn elements_to_path(item_dir: &Utf8PathBuf, items: &Vec>) -> Result<()> -// where -// T: Serialize + ManifestMethods, -// { -// fs::create_dir_all(item_dir)?; -// for item in items { -// let item_toml = toml::to_string_pretty(&item)?; -// let item_name = item.name.split("::").last().unwrap(); -// fs::write(item_dir.join(item_name).with_extension("toml"), item_toml)?; -// } - -// Ok(()) -// } - fn elements_from_path(path: &Utf8PathBuf) -> Result>, AbstractManifestError> where T: DeserializeOwned + ManifestMethods, @@ -557,6 +613,32 @@ where Ok(elements) } +fn overlay_dojo_contracts_to_path( + path: &Utf8PathBuf, + elements: &[OverlayDojoContract], +) -> Result<(), AbstractManifestError> { + fs::create_dir_all(path)?; + + for element in elements { + let path = path.join(element.name.replace("::", "_")).with_extension("toml"); + fs::write(path, toml::to_string(&element)?)?; + } + Ok(()) +} + +fn overlay_dojo_model_to_path( + path: &Utf8PathBuf, + elements: &[OverlayDojoModel], +) -> Result<(), AbstractManifestError> { + fs::create_dir_all(path)?; + + for element in elements { + let path = path.join(element.name.replace("::", "_")).with_extension("toml"); + fs::write(path, toml::to_string(&element)?)?; + } + Ok(()) +} + impl ManifestMethods for DojoContract { type OverlayType = OverlayDojoContract; diff --git a/crates/dojo-world/src/manifest/types.rs b/crates/dojo-world/src/manifest/types.rs index dbbee2fd58..5eb3e67d0c 100644 --- a/crates/dojo-world/src/manifest/types.rs +++ b/crates/dojo-world/src/manifest/types.rs @@ -36,12 +36,13 @@ pub struct DeploymentManifest { pub models: Vec>, } -#[derive(Clone, Debug, Serialize, Deserialize)] +#[derive(Default, Clone, Debug, Serialize, Deserialize)] #[cfg_attr(test, derive(PartialEq))] pub struct OverlayManifest { pub world: Option, pub base: Option, pub contracts: Vec, + pub models: Vec, } #[derive(Clone, Serialize, Deserialize, Debug)] diff --git a/crates/dojo-world/src/metadata_test.rs b/crates/dojo-world/src/metadata_test.rs index 6d6edd1aa5..a25c00c146 100644 --- a/crates/dojo-world/src/metadata_test.rs +++ b/crates/dojo-world/src/metadata_test.rs @@ -145,7 +145,7 @@ async fn get_full_dojo_metadata_from_workspace() { assert!(env.world_address.is_some()); assert_eq!( env.world_address.unwrap(), - "0x2e31cfde9f9990c7fe44b25043e3c6958a849c0a66ab535686d2b710e97f309" + "0x07efebb0c2d4cc285d48a97a7174def3be7fdd6b7bd29cca758fa2e17e03ef30" ); assert!(env.keystore_path.is_none()); diff --git a/crates/saya/README.md b/crates/saya/README.md index f33e6514e4..a291ec3ca2 100644 --- a/crates/saya/README.md +++ b/crates/saya/README.md @@ -69,15 +69,6 @@ However, papyrus and blockifier which we depend on are still in `-dev` version, - cairo-lang (we should support `2.5` now) - scarb (breaking changes between 2.4 and 2.5 to be addresses, not required to only build saya and SNOS) -## Local Testing - -```bash -cargo run -r -p katana # Start an appchain -cargo run -r -p sozo -- build --manifest-path examples/spawn-and-move/Scarb.toml -cargo run -r -p sozo -- migrate --manifest-path examples/spawn-and-move/Scarb.toml # Make some transactions -cargo run -r --bin saya -- --rpc-url http://localhost:5050 # Run Saya -``` - ## Additional documentation [Hackmd note](https://hackmd.io/@glihm/saya) diff --git a/crates/saya/core/Cargo.toml b/crates/saya/core/Cargo.toml index 246bd8253f..256d727638 100644 --- a/crates/saya/core/Cargo.toml +++ b/crates/saya/core/Cargo.toml @@ -19,7 +19,7 @@ async-trait.workspace = true cairo-proof-parser.workspace = true cairo-vm.workspace = true convert_case.workspace = true -dojo-world = { workspace = true, features = [ "contracts", "metadata", "migration" ] } +dojo-world = { workspace = true, features = [ "contracts", "manifest", "metadata", "migration" ] } flate2.workspace = true futures.workspace = true itertools.workspace = true @@ -45,3 +45,6 @@ celestia-types = "0.1.1" cairo-felt = "0.9.1" num-bigint = "0.4.4" +num-traits = "0.2.18" + +prover-sdk = { git = "https://github.com/neotheprogramist/http-prover", rev = "05aa9dbb7fdd5618693cead978d4ab0eebbf8f80" } diff --git a/crates/saya/core/src/dojo_os/mod.rs b/crates/saya/core/src/dojo_os/mod.rs index 824bfdda3b..bf479bc8d3 100644 --- a/crates/saya/core/src/dojo_os/mod.rs +++ b/crates/saya/core/src/dojo_os/mod.rs @@ -9,7 +9,7 @@ use std::time::Duration; -use anyhow::bail; +use anyhow::{bail, Context}; use dojo_world::migration::TxnConfig; use dojo_world::utils::TransactionExt; use itertools::chain; @@ -52,13 +52,16 @@ pub async fn starknet_apply_diffs( world: FieldElement, new_state: Vec, program_output: Vec, + program_hash: FieldElement, + nonce: FieldElement, ) -> anyhow::Result { let calldata = chain![ - vec![FieldElement::from_dec_str(&(new_state.len() / 2).to_string()).unwrap()].into_iter(), + vec![FieldElement::from(new_state.len() as u64 / 2)].into_iter(), new_state.clone().into_iter(), - program_output.into_iter() + program_output.into_iter(), + vec![program_hash], ] - .collect::>(); + .collect(); let txn_config = TxnConfig { wait: true, receipt: true, ..Default::default() }; let tx = STARKNET_ACCOUNT @@ -67,9 +70,10 @@ pub async fn starknet_apply_diffs( selector: get_selector_from_name("upgrade_state").expect("invalid selector"), calldata, }]) + .nonce(nonce) .send_with_cfg(&txn_config) .await - .unwrap(); + .context("Failed to send `upgrade state` transaction.")?; let start_fetching = std::time::Instant::now(); let wait_for = Duration::from_secs(60); diff --git a/crates/saya/core/src/lib.rs b/crates/saya/core/src/lib.rs index dfd9883533..f3c98ef1de 100644 --- a/crates/saya/core/src/lib.rs +++ b/crates/saya/core/src/lib.rs @@ -1,28 +1,34 @@ //! Saya core library. +use std::ops::RangeInclusive; use std::sync::Arc; -use std::time::Duration; +use anyhow::Context; use cairo_proof_parser::output::{extract_output, ExtractOutputResult}; use cairo_proof_parser::parse; use cairo_proof_parser::program::{extract_program, ExtractProgramResult}; +use futures::future; use katana_primitives::block::{BlockNumber, FinalityStatus, SealedBlock, SealedBlockWithStatus}; +use katana_primitives::state::StateUpdatesWithDeclaredClasses; use katana_primitives::transaction::Tx; use katana_primitives::FieldElement; -use prover::ProverIdentifier; +use katana_rpc_types::trace::TxExecutionInfo; +use prover::{HttpProverParams, ProverIdentifier}; +pub use prover_sdk::ProverAccessKey; use saya_provider::rpc::JsonRpcProvider; use saya_provider::Provider as SayaProvider; use serde::{Deserialize, Serialize}; use starknet_crypto::poseidon_hash_many; -use tokio::time::sleep; +use tokio::fs::File; +use tokio::io::AsyncWriteExt; use tracing::{error, info, trace}; use url::Url; -use verifier::VerifierIdentifier; use crate::blockchain::Blockchain; use crate::data_availability::{DataAvailabilityClient, DataAvailabilityConfig}; use crate::error::SayaResult; -use crate::prover::{extract_messages, ProgramInput}; +use crate::prover::{extract_messages, ProgramInput, Scheduler}; +use crate::verifier::VerifierIdentifier; pub mod blockchain; pub mod data_availability; @@ -39,8 +45,11 @@ pub struct SayaConfig { #[serde(deserialize_with = "url_deserializer")] pub katana_rpc: Url, #[serde(deserialize_with = "url_deserializer")] - pub prover_url: Url, + pub url: Url, + pub private_key: ProverAccessKey, + pub store_proofs: bool, pub start_block: u64, + pub batch_size: usize, pub data_availability: Option, pub world_address: FieldElement, pub fact_registry_address: FieldElement, @@ -66,6 +75,14 @@ pub struct Saya { blockchain: Blockchain, } +struct FetchedBlockInfo { + block_number: BlockNumber, + block: SealedBlock, + prev_state_root: FieldElement, + state_updates: StateUpdatesWithDeclaredClasses, + exec_infos: Vec, +} + impl Saya { /// Initializes a new [`Saya`] instance from the given [`SayaConfig`]. /// @@ -99,7 +116,19 @@ impl Saya { let mut block = self.config.start_block.max(1); // Genesis block is not proven. We advance to block 1 let block_before_the_first = self.provider.fetch_block(block - 1).await; - let mut previous_block = block_before_the_first?; + let mut previous_block_state_root = block_before_the_first?.header.header.state_root; + + let prover_identifier = ProverIdentifier::Http(Arc::new(HttpProverParams { + prover_url: self.config.url.clone(), + prover_key: self.config.private_key.clone(), + })); + + // The structure responsible for proving. + let mut prove_scheduler = Scheduler::new( + self.config.batch_size, + self.config.world_address, + prover_identifier.clone(), + ); loop { let latest_block = match self.provider.block_number().await { @@ -117,48 +146,125 @@ impl Saya { continue; } - let fetched_block = self.provider.fetch_block(block).await?; + let (last_state_root, params) = + self.prefetch_blocks(block..=latest_block, previous_block_state_root).await?; + previous_block_state_root = last_state_root; + + // Updating the local state sequentially, as there is only one instance of + // `self.blockchain` This part does no actual proving, so should not be a + // problem + for p in params { + self.process_block(&mut prove_scheduler, block, p)?; + + if prove_scheduler.is_full() { + self.process_proven(prove_scheduler).await?; - self.process_block(block, (&fetched_block, previous_block)).await?; + prove_scheduler = Scheduler::new( + self.config.batch_size, + self.config.world_address, + prover_identifier.clone(), + ); + } - previous_block = fetched_block; - block += 1; + block += 1; + } } } + async fn prefetch_blocks( + &mut self, + block_numbers: RangeInclusive, + previous_block_state_root: FieldElement, + ) -> SayaResult<(FieldElement, Vec)> { + // Fetch all blocks from the current block to the latest block + let fetched_blocks = future::try_join_all( + block_numbers.clone().map(|block_number| self.provider.fetch_block(block_number)), + ) + .await?; + + // Shift the state roots to the right by one, as proof of each block is based on the + // previous state root + let mut state_roots = vec![previous_block_state_root]; + state_roots.extend(fetched_blocks.iter().map(|block| block.header.header.state_root)); + let previous_block_state_root = state_roots.pop().unwrap(); + + let mut state_updates_and_exec_info = vec![]; + + let (state_updates, da_state_updates): (Vec<_>, Vec<_>) = future::try_join_all( + block_numbers + .clone() + .map(|block_number| self.provider.fetch_state_updates(block_number)), + ) + .await? + .into_iter() + .unzip(); + let transactions_executions = future::try_join_all( + block_numbers + .clone() + .map(|block_number| self.provider.fetch_transactions_executions(block_number)), + ) + .await?; + + for da_state_update in da_state_updates { + if let Some(da) = &self.da_client { + // Publish state difference if DA client is available + da.publish_state_diff_felts(&da_state_update).await?; + } + } + + state_updates.into_iter().zip(transactions_executions.into_iter()).for_each( + |(state_updates, exec_info)| { + state_updates_and_exec_info.push((state_updates, exec_info)); + }, + ); + + // Prepare parameters + let params = fetched_blocks + .into_iter() + .zip(state_roots) + .zip(state_updates_and_exec_info) + .map(|((block, prev_state_root), (state_updates, exec_infos))| FetchedBlockInfo { + block_number: block.header.header.number, + block, + prev_state_root, + state_updates, + exec_infos, + }) + .collect::>(); + + trace!(target: LOG_TARGET, block_number = block_numbers.start(), to = block_numbers.end(), "Fetched blocks."); + + Ok((previous_block_state_root, params)) + } + /// Processes the given block number. /// /// # Summary /// - /// 1. Pulls state update to update local state accordingly. We may publish DA at this point. + /// 1. Update local state accordingly to pulled state. We may publish DA at this point. /// /// 2. Pulls all transactions and data required to generate the trace. /// /// 3. Computes facts for this state transition. We may optimistically register the facts. /// - /// 4. Computes the proof from the trace with a prover. - /// - /// 5. Registers the facts + the send the proof to verifier. Not all provers require this step - /// (a.k.a. SHARP). + /// 4. Starts computing the proof from the trace with a prover. /// /// # Arguments /// + /// * `prove_scheduler` - A parallel prove scheduler. /// * `block_number` - The block number. - async fn process_block( + /// * `block_info` - The block to process, along with the state roots of the previous block and + /// the genesis block. + fn process_block( &mut self, + prove_scheduler: &mut Scheduler, block_number: BlockNumber, - blocks: (&SealedBlock, SealedBlock), + block_info: FetchedBlockInfo, ) -> SayaResult<()> { trace!(target: LOG_TARGET, block_number = %block_number, "Processing block."); - let (block, prev_block) = blocks; - - let (state_updates, da_state_update) = - self.provider.fetch_state_updates(block_number).await?; - - if let Some(da) = &self.da_client { - da.publish_state_diff_felts(&da_state_update).await?; - } + let FetchedBlockInfo { block, prev_state_root, state_updates, exec_infos, block_number } = + block_info; let block = SealedBlockWithStatus { block: block.clone(), status: FinalityStatus::AcceptedOnL2 }; @@ -170,8 +276,6 @@ impl Saya { return Ok(()); } - let exec_infos = self.provider.fetch_transactions_executions(block_number).await?; - if exec_infos.is_empty() { trace!(target: LOG_TARGET, block_number, "Skipping empty block."); return Ok(()); @@ -191,50 +295,69 @@ impl Saya { let (message_to_starknet_segment, message_to_appchain_segment) = extract_messages(&exec_infos, &transactions); - let new_program_input = ProgramInput { - prev_state_root: prev_block.header.header.state_root, - block_number: FieldElement::from(block_number), + let mut state_diff_prover_input = ProgramInput { + prev_state_root, + block_number, block_hash: block.block.header.hash, config_hash: FieldElement::from(0u64), message_to_starknet_segment, message_to_appchain_segment, state_updates: state_updates_to_prove, + world_da: None, }; + state_diff_prover_input.fill_da(self.config.world_address); - let world_da = new_program_input.da_as_calldata(self.config.world_address); - let world_da_printable: Vec = world_da.iter().map(|x| x.to_string()).collect(); - trace!(target: LOG_TARGET, world_da = ?world_da_printable, "World DA computed."); + prove_scheduler.push_diff(state_diff_prover_input)?; - trace!(target: LOG_TARGET, "Proving block {block_number}."); - let proof = prover::prove( - new_program_input.serialize(self.config.world_address)?, - ProverIdentifier::Http(self.config.prover_url.clone()), - ) - .await?; - info!(target: LOG_TARGET, block_number, "Block proven."); + info!(target: LOG_TARGET, block_number, "Block processed."); + + Ok(()) + } + + /// Registers the facts + the send the proof to verifier. Not all provers require this step + /// (a.k.a. SHARP). + /// + /// # Arguments + /// + /// * `prove_scheduler` - A full parallel prove scheduler. + /// * `last_block` - The last block number in the `prove_scheduler`. + async fn process_proven(&self, prove_scheduler: Scheduler) -> SayaResult<()> { + // Prove each of the leaf nodes of the recursion tree and merge them into one + let (proof, state_diff, (_, last_block)) = + prove_scheduler.proved().await.context("Failed to prove.")?; + + if self.config.store_proofs { + let filename = format!("proof_{}.json", last_block); + let mut file = File::create(filename).await.context("Failed to create proof file.")?; + file.write_all(proof.as_bytes()).await.context("Failed to write proof.")?; + } let serialized_proof: Vec = parse(&proof)?.into(); + let world_da = state_diff.world_da.unwrap(); - trace!(target: LOG_TARGET, block_number, "Verifying block."); - let transaction_hash = verifier::verify( + trace!(target: LOG_TARGET, last_block, "Verifying block."); + let (transaction_hash, nonce_after) = verifier::verify( VerifierIdentifier::HerodotusStarknetSepolia(self.config.fact_registry_address), serialized_proof, ) .await?; - info!(target: LOG_TARGET, block_number, transaction_hash, "Block verified."); + info!(target: LOG_TARGET, last_block, transaction_hash, "Block verified."); let ExtractProgramResult { program: _, program_hash } = extract_program(&proof)?; let ExtractOutputResult { program_output, program_output_hash } = extract_output(&proof)?; let expected_fact = poseidon_hash_many(&[program_hash, program_output_hash]).to_string(); info!(target: LOG_TARGET, expected_fact, "Expected fact."); - sleep(Duration::from_millis(5000)).await; - - trace!(target: LOG_TARGET, block_number, "Applying diffs."); - let transaction_hash = - dojo_os::starknet_apply_diffs(self.config.world_address, world_da, program_output) - .await?; - info!(target: LOG_TARGET, block_number, transaction_hash, "Diffs applied."); + trace!(target: LOG_TARGET, last_block, "Applying diffs."); + let transaction_hash = dojo_os::starknet_apply_diffs( + self.config.world_address, + world_da, + program_output, + program_hash, + nonce_after + 1u64.into(), + ) + .await?; + info!(target: LOG_TARGET, last_block, transaction_hash, "Diffs applied."); Ok(()) } diff --git a/crates/saya/core/src/prover/client.rs b/crates/saya/core/src/prover/client.rs index 644b24e8a7..43f23b3a50 100644 --- a/crates/saya/core/src/prover/client.rs +++ b/crates/saya/core/src/prover/client.rs @@ -1,8 +1,36 @@ +use std::sync::Arc; + +use anyhow::Context; +use prover_sdk::{ProverSDK, ProverSdkErrors}; +use tokio::sync::OnceCell; +use tracing::trace; use url::Url; -pub async fn http_prove(prover_url: Url, input: String) -> anyhow::Result { - let client = reqwest::Client::new(); - let resp = client.post(prover_url).body(input).send().await?; - let result = resp.text().await?; - Ok(result) +use super::ProveProgram; +use crate::prover::loader::prepare_input_cairo0; +use crate::LOG_TARGET; + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct HttpProverParams { + pub prover_url: Url, + pub prover_key: prover_sdk::ProverAccessKey, +} + +static ONCE: OnceCell> = OnceCell::const_new(); + +pub async fn http_prove( + prover_params: Arc, + input: String, + prove_program: ProveProgram, +) -> anyhow::Result { + let prover = ONCE + .get_or_init(|| async { + trace!(target: LOG_TARGET, "Proving with cairo0."); + ProverSDK::new(prover_params.prover_key.clone(), prover_params.prover_url.clone()).await + }) + .await; + let prover = prover.as_ref().map_err(|e| anyhow::anyhow!(e.to_string()))?; + + let input = prepare_input_cairo0(input, prove_program).await?; + prover.prove_cairo0(input).await.context("Failed to prove using the http prover") } diff --git a/crates/saya/core/src/prover/extract.rs b/crates/saya/core/src/prover/extract.rs new file mode 100644 index 0000000000..7ae3cf7bdd --- /dev/null +++ b/crates/saya/core/src/prover/extract.rs @@ -0,0 +1,98 @@ +use anyhow::anyhow; +use katana_primitives::contract::ContractAddress; +use katana_primitives::state::StateUpdates; +use katana_primitives::FieldElement; +use num_traits::ToPrimitive; + +use super::{MessageToAppchain, MessageToStarknet, ProgramInput}; + +pub fn program_input_from_program_output( + output: Vec, + state_updates: StateUpdates, + world: FieldElement, +) -> anyhow::Result { + let prev_state_root = output[0]; + let block_number = serde_json::from_str(&output[2].to_string()).unwrap(); + let block_hash = output[3]; + let config_hash = output[4]; + let mut decimal = output[6].clone().to_big_decimal(0); // Convert with no decimal places + let num = decimal.to_u64().ok_or_else(|| anyhow!("Conversion to u64 failed"))?; + + let message_to_starknet_segment = match num { + 0..=3 => Default::default(), + 4..=u64::MAX => get_message_to_starknet_segment(&output[7..7 + num as usize])?, + }; + + let index = 7 + num as usize; + decimal = output[index].clone().to_big_decimal(0); + let num = decimal.to_u64().ok_or_else(|| anyhow!("Conversion to u64 failed"))?; + let message_to_appchain_segment = match num { + 0..=4 => Default::default(), + 5..=u64::MAX => { + get_message_to_appchain_segment(&output[index + 1..index + 1 + num as usize])? + } + }; + + let mut input = ProgramInput { + prev_state_root, + block_number, + block_hash, + config_hash, + message_to_starknet_segment, + message_to_appchain_segment, + state_updates, + world_da: None, + }; + + input.fill_da(world); + Ok(input) +} + +fn get_message_to_starknet_segment( + output: &[FieldElement], +) -> anyhow::Result> { + let mut message_to_starknet_segment: Vec = vec![]; + let mut index = 0; + loop { + if index >= output.len() { + break; + } + let from_address = ContractAddress::from(output[index]); + let to_address = ContractAddress::from(output[index + 1]); + let decimal = output[index + 2].to_big_decimal(0); + let num = decimal.to_u64().ok_or_else(|| anyhow!("Conversion to u64 failed"))?; + let payload = output[index + 3..index + 3 + num as usize].to_vec(); + message_to_starknet_segment.push(MessageToStarknet { from_address, to_address, payload }); + index += 3 + num as usize; + } + Ok(message_to_starknet_segment) +} + +fn get_message_to_appchain_segment( + output: &[FieldElement], +) -> anyhow::Result> { + let mut message_to_appchain_segment: Vec = vec![]; + let mut index = 0; + loop { + if index >= output.len() { + break; + } + let from_address = ContractAddress::from(output[index]); + let to_address = ContractAddress::from(output[index + 1]); + let nonce = output[index + 2]; + let selector = output[index + 3]; + let decimal = output[index + 4].to_big_decimal(0); + let num = decimal.to_u64().ok_or_else(|| anyhow!("Conversion to u64 failed"))?; + let payload = output[index + 5..index + 5 + num as usize].to_vec(); + + message_to_appchain_segment.push(MessageToAppchain { + from_address, + to_address, + nonce, + selector, + payload, + }); + index += 5 + num as usize; + } + Ok(message_to_appchain_segment) +} diff --git a/crates/saya/core/src/prover/loader.rs b/crates/saya/core/src/prover/loader.rs new file mode 100644 index 0000000000..9ae585aef7 --- /dev/null +++ b/crates/saya/core/src/prover/loader.rs @@ -0,0 +1,36 @@ +use std::env; +use std::path::PathBuf; + +use prover_sdk::Cairo0ProverInput; +use serde_json::Value; +use tokio::fs::File; +use tokio::io::AsyncReadExt; + +use super::ProveProgram; + +pub async fn load_program(prove_program: ProveProgram) -> anyhow::Result { + let manifest_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR")?); + let program_file = match prove_program { + ProveProgram::Differ => manifest_dir.join("programs/cairo0differ.json"), + ProveProgram::Merger => manifest_dir.join("programs/cairo0merger.json"), + }; + let mut program_file = File::open(program_file).await?; + + let mut data = String::new(); + program_file.read_to_string(&mut data).await?; + let json_value: Value = serde_json::from_str(&data)?; + + Ok(json_value) +} + +pub async fn prepare_input_cairo0( + arguments: String, + prove_program: ProveProgram, +) -> anyhow::Result { + let program = load_program(prove_program).await?; + + let program = serde_json::from_str(&serde_json::to_string(&program)?)?; + let program_input: Value = serde_json::from_str(&arguments)?; + + Ok(Cairo0ProverInput { program, program_input, layout: "recursive".into() }) +} diff --git a/crates/saya/core/src/prover/mod.rs b/crates/saya/core/src/prover/mod.rs index 1739881ef7..420cce9bde 100644 --- a/crates/saya/core/src/prover/mod.rs +++ b/crates/saya/core/src/prover/mod.rs @@ -2,39 +2,52 @@ //! //! The prover is in charge of generating a proof from the cairo execution trace. use std::str::FromStr; +use std::sync::Arc; use anyhow::bail; use async_trait::async_trait; mod client; +pub mod extract; +mod loader; mod program_input; +mod scheduler; pub mod state_diff; mod stone_image; mod vec252; +pub use client::HttpProverParams; pub use program_input::*; -use serde::{Deserialize, Serialize}; +pub use scheduler::*; pub use stone_image::*; -use url::Url; use self::client::http_prove; /// The prover used to generate the proof. -#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)] +#[derive(Debug, Clone, PartialEq, Eq, Default)] pub enum ProverIdentifier { #[default] Stone, Sharp, Platinum, - Http(Url), + Http(Arc), } -pub async fn prove(input: String, prover: ProverIdentifier) -> anyhow::Result { +pub enum ProveProgram { + Differ, + Merger, +} + +pub async fn prove_diff( + input: String, + prover: ProverIdentifier, + program: ProveProgram, +) -> anyhow::Result { match prover { + ProverIdentifier::Http(params) => http_prove(params, input, program).await, + ProverIdentifier::Stone => prove_stone(input, program).await, ProverIdentifier::Sharp => todo!(), - ProverIdentifier::Stone => todo!(), ProverIdentifier::Platinum => todo!(), - ProverIdentifier::Http(prover_url) => http_prove(prover_url, input).await, } } @@ -44,10 +57,8 @@ pub trait ProverClient { fn identifier() -> ProverIdentifier; /// Generates the proof from the given trace. - /// At the moment prover is coupled with the program it proves. Because of this input should - /// correspond to the program. + /// The proven input has to be valid for the proving program. async fn prove(&self, input: String) -> anyhow::Result; - async fn local_verify(&self, proof: String) -> anyhow::Result<()>; } impl FromStr for ProverIdentifier { diff --git a/crates/saya/core/src/prover/program_input.rs b/crates/saya/core/src/prover/program_input.rs index 3bffdb6c9c..146f9ce111 100644 --- a/crates/saya/core/src/prover/program_input.rs +++ b/crates/saya/core/src/prover/program_input.rs @@ -1,22 +1,55 @@ +use std::str::FromStr; + +use anyhow::bail; use katana_primitives::contract::ContractAddress; use katana_primitives::state::StateUpdates; use katana_primitives::trace::{CallInfo, EntryPointType}; use katana_primitives::transaction::{L1HandlerTx, TxHash}; use katana_rpc_types::trace::TxExecutionInfo; +use serde::ser::{SerializeSeq, Serializer}; +use serde::{Deserialize, Deserializer, Serialize}; use starknet::core::types::FieldElement; -use super::state_diff::state_updates_to_json_like; - /// Based on https://github.com/cartridge-gg/piltover/blob/2be9d46f00c9c71e2217ab74341f77b09f034c81/src/snos_output.cairo#L19-L20 /// With the new state root computed by the prover. +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, Default)] pub struct ProgramInput { pub prev_state_root: FieldElement, - pub block_number: FieldElement, + pub block_number: u64, pub block_hash: FieldElement, pub config_hash: FieldElement, + #[serde(serialize_with = "MessageToStarknet::serialize_message_to_starknet")] + #[serde(deserialize_with = "MessageToStarknet::deserialize_message_to_starknet")] pub message_to_starknet_segment: Vec, + #[serde(serialize_with = "MessageToAppchain::serialize_message_to_appchain")] + #[serde(deserialize_with = "MessageToAppchain::deserialize_message_to_appchain")] pub message_to_appchain_segment: Vec, + #[serde(flatten)] pub state_updates: StateUpdates, + #[serde(serialize_with = "serialize_world_da")] + pub world_da: Option>, +} + +fn serialize_world_da( + element: &Option>, + serializer: S, +) -> Result +where + S: Serializer, +{ + if let Some(da) = element { + let mut seq = serializer.serialize_seq(Some(da.len()))?; + + for d in da { + let decimal = d.to_big_decimal(0); // Convert with no decimal places + let num = decimal.to_string(); + seq.serialize_element(&num)?; + } + + seq.end() + } else { + Err(serde::ser::Error::custom("Compute `world_da` first")) + } } fn get_messages_recursively(info: &CallInfo) -> Vec { @@ -43,7 +76,7 @@ fn get_messages_recursively(info: &CallInfo) -> Vec { pub fn extract_messages( exec_infos: &[TxExecutionInfo], - transactions: &[(TxHash, &L1HandlerTx)], + l1_transactions: &[(TxHash, &L1HandlerTx)], ) -> (Vec, Vec) { // extract messages to starknet (ie l2 -> l1) let message_to_starknet_segment = exec_infos @@ -57,8 +90,8 @@ pub fn extract_messages( // get the call infos from the trace and the corresponding tx hash let calls = exec_infos.iter().filter_map(|t| { let calls = t.trace.execute_call_info.as_ref()?; - let tx = transactions.iter().find(|tx| tx.0 == t.hash).expect("qed; tx must exist"); - Some((tx.1, calls)) + // Not present if not a l1 handler tx. + l1_transactions.iter().find(|tx| tx.0 == t.hash).map(|(_, tx)| (tx, calls)) }); // filter only the l1 handler tx @@ -80,49 +113,76 @@ pub fn extract_messages( } impl ProgramInput { - pub fn serialize(&self, world: FieldElement) -> anyhow::Result { - let message_to_starknet = self - .message_to_starknet_segment + /// Extracts the storage updates for the given world, and flattens them into a single vector + /// that represent the serialized DA. The length is not included as the array contains + /// serialiazed struct with two members: key and value. + /// TODO: migrate to cainome + simple rust vec for better devX in the future. + pub fn fill_da(&mut self, world: FieldElement) { + let updates = self + .state_updates + .storage_updates + .get(&ContractAddress::from(world)) + .unwrap_or(&std::collections::HashMap::new()) .iter() - .map(MessageToStarknet::serialize) - .collect::>>()? - .into_iter() - .flatten() - .map(|e| format!("{}", e)) - .collect::>() - .join(","); + .flat_map(|(k, v)| vec![*k, *v]) + .collect::>(); - let message_to_appchain = self - .message_to_appchain_segment - .iter() - .map(|m| m.serialize()) - .collect::>>()? - .into_iter() - .flatten() - .map(|e| format!("{}", e)) - .collect::>() - .join(","); + self.world_da = Some(updates); + } - let mut result = String::from('{'); - result.push_str(&format!(r#""prev_state_root":{},"#, self.prev_state_root)); - result.push_str(&format!(r#""block_number":{},"#, self.block_number)); - result.push_str(&format!(r#""block_hash":{},"#, self.block_hash)); - result.push_str(&format!(r#""config_hash":{},"#, self.config_hash)); + pub fn combine(mut self, latter: ProgramInput) -> anyhow::Result { + self.message_to_appchain_segment.extend(latter.message_to_appchain_segment); + self.message_to_starknet_segment.extend(latter.message_to_starknet_segment); - result.push_str(&format!(r#""message_to_starknet_segment":[{}],"#, message_to_starknet)); - result.push_str(&format!(r#""message_to_appchain_segment":[{}],"#, message_to_appchain)); + // the later state should overwrite the previous one. + latter.state_updates.contract_updates.into_iter().for_each(|(k, v)| { + self.state_updates.contract_updates.insert(k, v); + }); + latter.state_updates.declared_classes.into_iter().for_each(|(k, v)| { + self.state_updates.declared_classes.insert(k, v); + }); + latter.state_updates.nonce_updates.into_iter().for_each(|(k, v)| { + self.state_updates.nonce_updates.insert(k, v); + }); + latter.state_updates.storage_updates.into_iter().for_each(|(c, h)| { + h.into_iter().for_each(|(k, v)| { + self.state_updates.storage_updates.entry(c).or_default().insert(k, v); + }); + }); - result.push_str(&state_updates_to_json_like(&self.state_updates, world)); + if self.world_da.is_none() || latter.world_da.is_none() { + bail!("Both world_da must be present to combine them"); + } - result.push('}'); + let mut world_da = self.world_da.unwrap_or_default(); + for later in latter.world_da.unwrap_or_default().chunks(2) { + let mut replaced = false; + for earlier in world_da.chunks_mut(2) { + if later[0] == earlier[0] { + earlier[1] = later[1]; + replaced = true; + continue; + } + } - Ok(result) + if !replaced { + world_da.extend(later) + } + } + + // The block number is the one from the last block. + Ok(ProgramInput { + prev_state_root: self.prev_state_root, + block_number: latter.block_number, + block_hash: latter.block_hash, + config_hash: self.config_hash, + message_to_appchain_segment: self.message_to_appchain_segment, + message_to_starknet_segment: self.message_to_starknet_segment, + state_updates: self.state_updates, + world_da: Some(world_da), + }) } - /// Extracts the storage updates for the given world, and flattens them into a single vector - /// that represent the serialized DA. The length is not included as the array contains - /// serialiazed struct with two members: key and value. - /// TODO: migrate to cainome + simple rust vec for better devX in the future. pub fn da_as_calldata(&self, world: FieldElement) -> Vec { let updates = self .state_updates @@ -135,9 +195,80 @@ impl ProgramInput { updates } + + fn serialize_to_prover_args(&self) -> Vec { + let mut out = vec![ + self.prev_state_root, + FieldElement::from(self.block_number), + self.block_hash, + self.config_hash, + ]; + + out.push(FieldElement::from(self.state_updates.nonce_updates.len())); + for (k, v) in &self.state_updates.nonce_updates { + out.push(**k); + out.push(*v); + } + + out.push(FieldElement::from(self.state_updates.storage_updates.len())); + for (c, h) in &self.state_updates.storage_updates { + out.push(**c); + out.push(FieldElement::from(h.len())); + for (k, v) in h { + out.push(*k); + out.push(*v); + } + } + + out.push(FieldElement::from(self.state_updates.contract_updates.len())); + for (k, v) in &self.state_updates.contract_updates { + out.push(**k); + out.push(*v); + } + + out.push(FieldElement::from(self.state_updates.declared_classes.len())); + for (k, v) in &self.state_updates.declared_classes { + out.push(*k); + out.push(*v); + } + + let starknet_messages = self + .message_to_starknet_segment + .iter() + .flat_map(|m| m.serialize().unwrap()) + .collect::>(); + out.push(FieldElement::from(starknet_messages.len())); + out.extend(starknet_messages); + + let appchain_messages = self + .message_to_appchain_segment + .iter() + .flat_map(|m| m.serialize().unwrap()) + .collect::>(); + + out.push(FieldElement::from(appchain_messages.len())); + out.extend(appchain_messages); + + out.push(FieldElement::from(self.world_da.as_ref().unwrap().len() / 2)); + out.extend(self.world_da.as_ref().unwrap().iter().cloned()); + + out.push(FieldElement::from(0u64)); // Proofs + + out + } + + pub fn prepare_differ_args(inputs: Vec) -> String { + let serialized = + inputs.iter().flat_map(|input| input.serialize_to_prover_args()).collect::>(); + + let joined = serialized.iter().map(|f| f.to_big_decimal(0).to_string()).collect::>(); + + format!("[{} {}]", inputs.len(), joined.join(" ")) + } } /// Based on https://github.com/cartridge-gg/piltover/blob/2be9d46f00c9c71e2217ab74341f77b09f034c81/src/messaging/output_process.cairo#L16 +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, Default, PartialOrd, Ord)] pub struct MessageToStarknet { pub from_address: ContractAddress, pub to_address: ContractAddress, @@ -145,15 +276,88 @@ pub struct MessageToStarknet { } impl MessageToStarknet { + pub fn serialize_message_to_starknet( + messages: &[MessageToStarknet], + serializer: S, + ) -> Result + where + S: Serializer, + { + let mut seq = serializer.serialize_seq(Some(messages.len()))?; + for message in messages { + let serialized = message.serialize().unwrap(); + // Instead of adding serialized as an array, add each element individually + for field_element in serialized { + let decimal = field_element.to_big_decimal(0); // Assuming no decimal places for simplicity + let num = decimal.to_string(); + seq.serialize_element(&num)?; + } + } + seq.end() + } + pub fn serialize(&self) -> anyhow::Result> { let mut result = vec![*self.from_address, *self.to_address]; result.push(FieldElement::from(self.payload.len())); result.extend(self.payload.iter().cloned()); Ok(result) } + + fn deserialize_message_to_starknet<'de, D>( + deserializer: D, + ) -> Result, D::Error> + where + D: Deserializer<'de>, + { + struct MessageToStarknetVisitor; + + impl<'de> serde::de::Visitor<'de> for MessageToStarknetVisitor { + type Value = Vec; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("a flat list of integers for MessageToStarknet") + } + + fn visit_seq(self, mut seq: V) -> Result + where + V: serde::de::SeqAccess<'de>, + { + let mut messages = Vec::new(); + while let Some(from_address) = seq + .next_element::()? + .map(|num| FieldElement::from_str(&num.to_string()).unwrap()) + { + let to_address = seq + .next_element::()? + .map(|num| FieldElement::from_str(&num.to_string()).unwrap()) + .unwrap_or_default(); + let payload_length_str = seq.next_element::()?.unwrap_or_default(); + let payload_length: usize = payload_length_str.parse().unwrap_or_default(); + let mut payload = Vec::new(); + for _ in 0..payload_length { + if let Some(element) = seq + .next_element::()? + .map(|num| FieldElement::from_str(&num.to_string()).unwrap()) + { + payload.push(element); + } + } + messages.push(MessageToStarknet { + from_address: ContractAddress::from(from_address), + to_address: ContractAddress::from(to_address), + payload, + }); + } + Ok(messages) + } + } + + deserializer.deserialize_seq(MessageToStarknetVisitor) + } } /// Based on https://github.com/cartridge-gg/piltover/blob/2be9d46f00c9c71e2217ab74341f77b09f034c81/src/messaging/output_process.cairo#L28 +#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq, Default, PartialOrd, Ord)] pub struct MessageToAppchain { pub from_address: ContractAddress, pub to_address: ContractAddress, @@ -163,27 +367,210 @@ pub struct MessageToAppchain { } impl MessageToAppchain { + pub fn serialize_message_to_appchain( + messages: &[MessageToAppchain], + serializer: S, + ) -> Result + where + S: Serializer, + { + let mut seq = serializer.serialize_seq(Some(messages.len()))?; + for message in messages { + let serialized = message.serialize().unwrap(); + for field_element in serialized { + let decimal = field_element.to_big_decimal(0); // Assuming no decimal places for simplicity + let num = decimal.to_string(); + seq.serialize_element(&num)?; + } + } + seq.end() + } + pub fn serialize(&self) -> anyhow::Result> { let mut result = vec![*self.from_address, *self.to_address, self.nonce, self.selector]; result.push(FieldElement::from(self.payload.len())); result.extend(self.payload.iter().cloned()); Ok(result) } + + fn deserialize_message_to_appchain<'de, D>( + deserializer: D, + ) -> Result, D::Error> + where + D: Deserializer<'de>, + { + struct MessageToAppchainVisitor; + + impl<'de> serde::de::Visitor<'de> for MessageToAppchainVisitor { + type Value = Vec; + + fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + formatter.write_str("a flat list of integers for MessageToAppchain") + } + + fn visit_seq(self, mut seq: V) -> Result + where + V: serde::de::SeqAccess<'de>, + { + let mut messages = Vec::new(); + while let Some(from_address) = seq + .next_element::()? + .map(|num| FieldElement::from_str(&num.to_string()).unwrap()) + { + let to_address = seq + .next_element::()? + .map(|num| FieldElement::from_str(&num.to_string()).unwrap()) + .unwrap_or_default(); + let nonce = seq + .next_element::()? + .map(|num| FieldElement::from_str(&num.to_string()).unwrap()) + .unwrap_or_default(); + let selector = seq + .next_element::()? + .map(|num| FieldElement::from_str(&num.to_string()).unwrap()) + .unwrap_or_default(); + let payload_length_str = seq.next_element::()?.unwrap_or_default(); + let payload_length: usize = payload_length_str.parse().unwrap_or_default(); + let mut payload = Vec::new(); + for _ in 0..payload_length { + if let Some(element) = seq + .next_element::()? + .map(|num| FieldElement::from_str(&num.to_string()).unwrap()) + { + payload.push(element); + } + } + messages.push(MessageToAppchain { + from_address: ContractAddress::from(from_address), + to_address: ContractAddress::from(to_address), + nonce, + selector, + payload, + }); + } + Ok(messages) + } + } + + deserializer.deserialize_seq(MessageToAppchainVisitor) + } +} + +#[test] +fn test_deserialize_input() -> anyhow::Result<()> { + use std::str::FromStr; + + let input = r#"{ + "prev_state_root":"101", + "block_number":102, + "block_hash":"103", + "config_hash":"104", + "message_to_starknet_segment":["105","106","1","1"], + "message_to_appchain_segment":["108","109","110","111","1","112"], + "storage_updates":{ + "42": { + "2010": "1200", + "2012": "1300" + } + }, + "nonce_updates":{ + "1111": "22222", + "1116": "22223" + }, + "contract_updates":{ + "3": "437267489" + }, + "declared_classes":{ + "1234": "12345" + } + }"#; + + let mut expected = ProgramInput { + prev_state_root: FieldElement::from_str("101")?, + block_number: 102, + block_hash: FieldElement::from_str("103")?, + config_hash: FieldElement::from_str("104")?, + message_to_starknet_segment: vec![MessageToStarknet { + from_address: ContractAddress::from(FieldElement::from_str("105")?), + to_address: ContractAddress::from(FieldElement::from_str("106")?), + payload: vec![FieldElement::from_str("1")?], + }], + message_to_appchain_segment: vec![MessageToAppchain { + from_address: ContractAddress::from(FieldElement::from_str("108")?), + to_address: ContractAddress::from(FieldElement::from_str("109")?), + nonce: FieldElement::from_str("110")?, + selector: FieldElement::from_str("111")?, + payload: vec![FieldElement::from_str("112")?], + }], + state_updates: StateUpdates { + storage_updates: vec![( + ContractAddress::from(FieldElement::from_str("42")?), + vec![ + (FieldElement::from_str("2010")?, FieldElement::from_str("1200")?), + (FieldElement::from_str("2012")?, FieldElement::from_str("1300")?), + ] + .into_iter() + .collect(), + )] + .into_iter() + .collect(), + + nonce_updates: vec![ + ( + ContractAddress::from(FieldElement::from_str("1111")?), + FieldElement::from_str("22222")?, + ), + ( + ContractAddress::from(FieldElement::from_str("1116")?), + FieldElement::from_str("22223")?, + ), + ] + .into_iter() + .collect(), + + contract_updates: vec![( + ContractAddress::from(FieldElement::from_str("3")?), + FieldElement::from_str("437267489")?, + )] + .into_iter() + .collect(), + + declared_classes: vec![( + FieldElement::from_str("1234")?, + FieldElement::from_str("12345")?, + )] + .into_iter() + .collect(), + }, + world_da: None, + }; + let mut deserialized = serde_json::from_str::(input)?; + assert_eq!(expected, deserialized); + + deserialized.fill_da(FieldElement::from_str("42")?); + expected.world_da = Some(vec![ + FieldElement::from_str("2010")?, + FieldElement::from_str("1200")?, + FieldElement::from_str("2012")?, + FieldElement::from_str("1300")?, + ]); + + Ok(()) } #[test] -fn test_program_input() -> anyhow::Result<()> { +fn test_serialize_input() -> anyhow::Result<()> { use std::str::FromStr; let input = ProgramInput { prev_state_root: FieldElement::from_str("101")?, - block_number: FieldElement::from_str("102")?, + block_number: 102, block_hash: FieldElement::from_str("103")?, config_hash: FieldElement::from_str("104")?, message_to_starknet_segment: vec![MessageToStarknet { from_address: ContractAddress::from(FieldElement::from_str("105")?), to_address: ContractAddress::from(FieldElement::from_str("106")?), - payload: vec![FieldElement::from_str("107")?], + payload: vec![FieldElement::from_str("1")?], }], message_to_appchain_segment: vec![MessageToAppchain { from_address: ContractAddress::from(FieldElement::from_str("108")?), @@ -193,45 +580,100 @@ fn test_program_input() -> anyhow::Result<()> { payload: vec![FieldElement::from_str("112")?], }], state_updates: StateUpdates { - nonce_updates: std::collections::HashMap::new(), storage_updates: vec![( - ContractAddress::from(FieldElement::from_str("113")?), - vec![(FieldElement::from_str("114")?, FieldElement::from_str("115")?)] - .into_iter() - .collect(), + ContractAddress::from(FieldElement::from_str("42")?), + vec![ + (FieldElement::from_str("2010")?, FieldElement::from_str("1200")?), + (FieldElement::from_str("2012")?, FieldElement::from_str("1300")?), + ] + .into_iter() + .collect(), + )] + .into_iter() + .collect(), + + nonce_updates: vec![ + ( + ContractAddress::from(FieldElement::from_str("1111")?), + FieldElement::from_str("22222")?, + ), + ( + ContractAddress::from(FieldElement::from_str("1116")?), + FieldElement::from_str("22223")?, + ), + ] + .into_iter() + .collect(), + + contract_updates: vec![( + ContractAddress::from(FieldElement::from_str("3")?), + FieldElement::from_str("437267489")?, + )] + .into_iter() + .collect(), + + declared_classes: vec![( + FieldElement::from_str("1234")?, + FieldElement::from_str("12345")?, )] .into_iter() .collect(), - contract_updates: std::collections::HashMap::new(), - declared_classes: std::collections::HashMap::new(), }, + world_da: Some(vec![ + FieldElement::from_str("2010")?, + FieldElement::from_str("1200")?, + FieldElement::from_str("2012")?, + FieldElement::from_str("1300")?, + ]), }; - // Serialize with the DA. - let serialized_with_da = input.serialize(FieldElement::from_str("113")?).unwrap(); - println!("Serialized: {}", serialized_with_da); - pub const EXPECTED_WITH_DA: &str = r#"{ - "prev_state_root": 101, - "block_number": 102, - "block_hash": 103, - "config_hash": 104, - "message_to_starknet_segment": [105,106,1,107], - "message_to_appchain_segment": [108,109,110,111,1,112], - "nonce_updates": {}, - "storage_updates": {"113":{"114":115}}, - "contract_updates": {}, - "declared_classes": {}, - "world_da": [114, 115] - }"#; - - let expected = EXPECTED_WITH_DA.chars().filter(|c| !c.is_whitespace()).collect::(); - println!("{}", expected); - assert_eq!(serialized_with_da, expected); - - // Serialize just the DA as calldata. The length is not included, only the array of - // updates [key, value, key, value...]. - let da_calldata = input.da_as_calldata(FieldElement::from_str("113")?); - assert_eq!(da_calldata, vec![FieldElement::from_str("114")?, FieldElement::from_str("115")?]); + let serialized = serde_json::to_string::(&input.clone())?; + let deserialized = serde_json::from_str::(&serialized)?; + assert_eq!(input, deserialized); + + Ok(()) +} + +#[test] +fn test_serialize_to_prover_args() -> anyhow::Result<()> { + let input = r#"{ + "prev_state_root":"101", + "block_number":102, + "block_hash":"103", + "config_hash":"104", + "nonce_updates":{ + "1111": "22222" + }, + "storage_updates":{ + "333": { + "4444": "555" + } + }, + "contract_updates":{ + "66666": "7777" + }, + "declared_classes":{ + "88888": "99999" + }, + "message_to_starknet_segment":["123","456","123","128"], + "message_to_appchain_segment":["108","109","110","111","1","112"] + }"#; + let mut input = serde_json::from_str::(input)?; + input.fill_da(FieldElement::from_str("333")?); + + println!("{:?}", input); + + let serialized = input.serialize_to_prover_args(); + + let expected = vec![ + 101, 102, 103, 104, 1, 1111, 22222, 1, 333, 1, 4444, 555, 1, 66666, 7777, 1, 88888, 99999, + 4, 123, 456, 1, 128, 6, 108, 109, 110, 111, 1, 112, 1, 4444, 555, 0u64, + ] + .into_iter() + .map(FieldElement::from) + .collect::>(); + + assert_eq!(serialized, expected); Ok(()) } diff --git a/crates/saya/core/src/prover/scheduler.rs b/crates/saya/core/src/prover/scheduler.rs new file mode 100644 index 0000000000..3f90eab46f --- /dev/null +++ b/crates/saya/core/src/prover/scheduler.rs @@ -0,0 +1,222 @@ +use anyhow::{bail, Context}; +use cairo_proof_parser::output::{extract_output, ExtractOutputResult}; +use futures::future::BoxFuture; +use futures::FutureExt; +use katana_primitives::state::StateUpdates; +use katana_primitives::FieldElement; +use tokio::sync::{mpsc, oneshot}; +use tracing::{info, trace}; + +use super::{prove_diff, ProgramInput, ProverIdentifier}; +use crate::prover::extract::program_input_from_program_output; +use crate::prover::ProveProgram; +use crate::LOG_TARGET; + +type Proof = String; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum ProvingState { + Proving, + Proved, + NotPushed, +} +type ProvingStateWithBlock = (u64, ProvingState); + +pub struct Scheduler { + root_task: BoxFuture<'static, anyhow::Result<(Proof, ProgramInput)>>, + free_differs: Vec>, + proving_tasks: Vec, + update_channel: mpsc::Receiver, + block_range: (u64, u64), +} + +impl Scheduler { + pub fn new(capacity: usize, world: FieldElement, prover: ProverIdentifier) -> Self { + let (senders, receivers): (Vec<_>, Vec<_>) = + (0..capacity).map(|_| oneshot::channel::()).unzip(); + + let (update_sender, update_channel) = mpsc::channel(capacity * 2); + let root_task = prove_recursively(receivers, world, prover, update_sender); + + Scheduler { + root_task, + free_differs: senders, + proving_tasks: Vec::with_capacity(capacity), + update_channel, + block_range: (u64::MAX, 0), + } + } + + pub fn is_full(&self) -> bool { + self.free_differs.is_empty() + } + + pub fn push_diff(&mut self, input: ProgramInput) -> anyhow::Result<()> { + if self.is_full() { + bail!("Scheduler is full"); + } + let block_number = input.block_number; + + let sender = self.free_differs.remove(0); + + if sender.send(input).is_err() { + bail!("Failed to send input to differ"); + } + + self.block_range = + (self.block_range.0.min(block_number), self.block_range.1.max(block_number)); + + Ok(()) + } + + pub async fn proved(self) -> anyhow::Result<(Proof, ProgramInput, (u64, u64))> { + let (proof, input) = self.root_task.await?; + Ok((proof, input, self.block_range)) + } + + pub async fn merge( + inputs: Vec, + world: FieldElement, + prover: ProverIdentifier, + ) -> anyhow::Result<(Proof, ProgramInput)> { + let mut scheduler = Scheduler::new(inputs.len(), world, prover); + let number_of_inputs = inputs.len(); + trace!(target: LOG_TARGET, number_of_inputs, "Pushing inputs to scheduler"); + for input in inputs { + scheduler.push_diff(input)?; + } + info!(target: LOG_TARGET, number_of_inputs, "inputs pushed to scheduler"); + let (merged_proof, merged_input, _) = scheduler.proved().await?; + Ok((merged_proof, merged_input)) + } + + pub async fn query(&mut self, block_number: u64) -> anyhow::Result { + while !self.update_channel.is_empty() { + let (block_number, state) = + self.update_channel.recv().await.context("Failed to recv")?; + + match state { + ProvingState::Proved => { + if let Some((_, s)) = + self.proving_tasks.iter_mut().find(|(n, _)| *n == block_number) + { + *s = ProvingState::Proved; + } else { + bail!("Block number {} was not found in proving tasks", block_number); + } + } + ProvingState::Proving => { + self.proving_tasks.push((block_number, ProvingState::Proved)); + } + _ => { + unreachable!("Update should be either Proving or Proved"); + } + } + } + + match self.proving_tasks.iter().find(|(n, _)| *n == block_number) { + Some((_, s)) => Ok(*s), + None => Ok(ProvingState::NotPushed), + } + } +} + +#[derive(serde::Serialize, serde::Deserialize)] +struct CombinedInputs { + earlier: ProgramInput, + later: ProgramInput, +} + +async fn combine_proofs( + first: Proof, + second: Proof, + prover: ProverIdentifier, + state_updates1: StateUpdates, + state_updates2: StateUpdates, + world: FieldElement, + number_of_inputs: usize, +) -> anyhow::Result { + let ExtractOutputResult { program_output: program_output1, program_output_hash: _ } = + extract_output(&first)?; + let ExtractOutputResult { program_output: program_output2, program_output_hash: _ } = + extract_output(&second)?; + + let earlier_input = + program_input_from_program_output(program_output1, state_updates1, world).unwrap(); + let later_input = + program_input_from_program_output(program_output2, state_updates2, world).unwrap(); + + let world = format!("{:x}", world); + trace!(target: LOG_TARGET, number_of_inputs, world, "Merging proofs"); + + let prover_input = + serde_json::to_string(&CombinedInputs { earlier: earlier_input, later: later_input })?; + + let merged_proof = prove_diff(prover_input, prover, ProveProgram::Merger).await?; + + Ok(merged_proof) +} + +/// Handles the recursive proving of blocks using asynchronous futures. +/// Returns a proof string asynchronously. +/// It returns a BoxFuture to allow for dynamic dispatch of futures, useful in recursive async +/// calls. +fn prove_recursively( + mut inputs: Vec>, + world: FieldElement, + prover: ProverIdentifier, + update_channel: mpsc::Sender<(u64, ProvingState)>, +) -> BoxFuture<'static, anyhow::Result<(Proof, ProgramInput)>> { + let handle = tokio::spawn(async move { + if inputs.len() == 1 { + let mut input = inputs.pop().unwrap().await.unwrap(); + input.fill_da(world); + let block_number = input.block_number; + trace!(target: LOG_TARGET, block_number, "Proving block"); + update_channel.send((block_number, ProvingState::Proving)).await.unwrap(); + + let prover_input = serde_json::to_string(&input.clone()).unwrap(); + let proof = prove_diff(prover_input, prover, ProveProgram::Differ).await?; + + info!(target: LOG_TARGET, block_number, "Block proven"); + update_channel.send((block_number, ProvingState::Proved)).await.unwrap(); + Ok((proof, input)) + } else { + let proof_count = inputs.len(); + let last = inputs.split_off(proof_count / 2); + + let provers = (prover.clone(), prover.clone()); + + let second_update_sender = update_channel.clone(); + let (earlier_result, later_result) = tokio::try_join!( + tokio::spawn(async move { + prove_recursively(inputs, world, provers.0, update_channel).await + }), + tokio::spawn(async move { + prove_recursively(last, world, provers.1, second_update_sender).await + }), + )?; + + let ((earlier_result, earlier_input), (later_result, later_input)) = + (earlier_result?, later_result?); + + let input = earlier_input.clone().combine(later_input.clone())?; + let merged_proofs = combine_proofs( + earlier_result, + later_result, + prover, + earlier_input.state_updates, + later_input.state_updates, + world, + proof_count, + ) + .await?; + + let first_proven = earlier_input.block_number; + info!(target: LOG_TARGET, first_proven, proof_count, "Merged proofs"); + Ok((merged_proofs, input)) + } + }); + + async move { handle.await? }.boxed() +} diff --git a/crates/saya/core/src/prover/state_diff.rs b/crates/saya/core/src/prover/state_diff.rs index 0c766b646e..2155688533 100644 --- a/crates/saya/core/src/prover/state_diff.rs +++ b/crates/saya/core/src/prover/state_diff.rs @@ -1,4 +1,3 @@ -use katana_primitives::contract::ContractAddress; use katana_primitives::state::StateUpdates; use starknet::core::types::FieldElement; @@ -55,64 +54,6 @@ pub const EXAMPLE_KATANA_DIFF: &str = r#"{ } }"#; -pub fn state_updates_to_json_like(state_updates: &StateUpdates, world: FieldElement) -> String { - let mut result = String::new(); - - result.push_str(&format!(r#""nonce_updates":{}"#, "{")); - let nonce_updates = state_updates - .nonce_updates - .iter() - .map(|(k, v)| format!(r#""{}":{}"#, k.0, v)) - .collect::>() - .join(","); - result.push_str(&format!("{}{}", nonce_updates, "}")); - - result.push_str(&format!(r#","storage_updates":{}"#, "{")); - let storage_updates = state_updates - .storage_updates - .iter() - .map(|(k, v)| { - let storage = - v.iter().map(|(k, v)| format!(r#""{}":{}"#, k, v)).collect::>().join(","); - - format!(r#""{}":{{{}}}"#, k.0, storage) - }) - .collect::>() - .join(","); - result.push_str(&format!("{}{}", storage_updates, "}")); - - result.push_str(&format!(r#","contract_updates":{}"#, "{")); - let contract_updates = state_updates - .contract_updates - .iter() - .map(|(k, v)| format!(r#""{}":{}"#, k.0, v)) - .collect::>() - .join(","); - result.push_str(&format!("{}{}", contract_updates, "}")); - - result.push_str(&format!(r#","declared_classes":{}"#, "{")); - let declared_classes = state_updates - .declared_classes - .iter() - .map(|(k, v)| format!(r#""{}":{}"#, k, v)) - .collect::>() - .join(","); - - result.push_str(&format!("{}{}", declared_classes, "}")); - - result.push_str(r#","world_da":"#); - let storage = - if let Some(storage) = state_updates.storage_updates.get(&ContractAddress::from(world)) { - storage.iter().map(|(k, v)| format!("{},{}", k, v)).collect::>().join(",") - } else { - String::new() - }; - - result.push_str(&format!("[{}]", storage)); - - result -} - /// We need custom implementation because of dynamic keys in json impl ProvedStateDiff { pub fn serialize(&self) -> String { diff --git a/crates/saya/core/src/prover/stone_image.rs b/crates/saya/core/src/prover/stone_image.rs index c5ad5de5d9..b6d3e655d0 100644 --- a/crates/saya/core/src/prover/stone_image.rs +++ b/crates/saya/core/src/prover/stone_image.rs @@ -1,3 +1,4 @@ +use std::fs::File; use std::process::Stdio; use anyhow::{bail, Context}; @@ -5,22 +6,27 @@ use async_trait::async_trait; use tokio::io::{AsyncBufReadExt, AsyncReadExt, AsyncWriteExt, BufReader}; use tokio::process::Command; use tokio::sync::OnceCell; -use tracing::warn; +use tracing::trace; -use super::{ProverClient, ProverIdentifier}; +use super::{ProveProgram, ProverClient, ProverIdentifier}; +use crate::prover::loader::prepare_input_cairo0; +use crate::LOG_TARGET; + +const PROVER_IMAGE: &str = "neotheprogramist/stone-cairo0:latest"; #[derive(Clone)] pub struct StoneProver(pub String); -pub async fn prove_stone(input: String) -> anyhow::Result { +pub async fn prove_stone(input: String, prove_program: ProveProgram) -> anyhow::Result { let prover = StoneProver::new().await?; - prover.prove(input).await -} + trace!(target: LOG_TARGET, "Proving with cairo0."); -pub async fn local_verify(input: String) -> anyhow::Result { - let prover = StoneProver::new().await?; - prover.local_verify(input).await?; - Ok(String::from("ok")) + let input = prepare_input_cairo0(input, prove_program).await?; + let input = serde_json::to_string(&input).context("Failed to serialize input")?; + + std::io::Write::write_all(&mut File::create("input.json")?, input.as_bytes())?; + + prover.prove(input).await.context("Failed to prove using the http prover") } #[async_trait] @@ -35,47 +41,26 @@ impl ProverClient for StoneProver { run(command, Some(input)).await } - - async fn local_verify(&self, proof: String) -> anyhow::Result<()> { - let mut command = Command::new("podman"); - command.arg("run").arg("-i").arg("--rm").arg("verifier"); - - run(command, Some(proof)).await?; - - Ok(()) - } } impl StoneProver { async fn new() -> anyhow::Result { - static STONE_PROVER: OnceCell<(anyhow::Result, anyhow::Result)> = - OnceCell::const_new(); - - let source = "piniom/state-diff-commitment"; - let verifier = "piniom/verifier:latest"; + static STONE_PROVER: OnceCell> = OnceCell::const_new(); let result = STONE_PROVER .get_or_init(|| async { let mut command = Command::new("podman"); - command.arg("pull").arg(format!("docker.io/{}", source)); - - let mut verifier_command = Command::new("podman"); - verifier_command.arg("pull").arg(format!("docker.io/{}", verifier)); + command.arg("pull").arg(format!("docker.io/{}", PROVER_IMAGE)); - ( - run(command, None).await.context("Failed to pull prover"), - run(verifier_command, None).await.context("Failed to pull prover"), - ) + run(command, None).await.context("Failed to pull prover") }) .await; - if result.0.is_err() { + if result.is_err() { bail!("Failed to pull prover"); - } else if result.1.is_err() { - warn!("Failed to pull verifier"); } - Ok(StoneProver(source.to_string())) + Ok(StoneProver(PROVER_IMAGE.to_string())) } } diff --git a/crates/saya/core/src/verifier/mod.rs b/crates/saya/core/src/verifier/mod.rs index 83edf92b64..28323f3e30 100644 --- a/crates/saya/core/src/verifier/mod.rs +++ b/crates/saya/core/src/verifier/mod.rs @@ -23,7 +23,7 @@ pub enum VerifierIdentifier { pub async fn verify( verifier: VerifierIdentifier, serialized_proof: Vec, -) -> anyhow::Result { +) -> anyhow::Result<(String, FieldElement)> { match verifier { VerifierIdentifier::HerodotusStarknetSepolia(fact_registry_address) => { starknet::starknet_verify(fact_registry_address, serialized_proof).await diff --git a/crates/saya/core/src/verifier/starknet.rs b/crates/saya/core/src/verifier/starknet.rs index 1a99132dd4..f948336575 100644 --- a/crates/saya/core/src/verifier/starknet.rs +++ b/crates/saya/core/src/verifier/starknet.rs @@ -1,5 +1,6 @@ use std::time::Duration; +use anyhow::Context; use dojo_world::migration::TxnConfig; use dojo_world::utils::TransactionExt; use starknet::accounts::{Account, Call, ConnectedAccount}; @@ -13,17 +14,19 @@ use crate::dojo_os::STARKNET_ACCOUNT; pub async fn starknet_verify( fact_registry_address: FieldElement, serialized_proof: Vec, -) -> anyhow::Result { +) -> anyhow::Result<(String, FieldElement)> { let txn_config = TxnConfig { wait: true, receipt: true, ..Default::default() }; + let nonce = STARKNET_ACCOUNT.get_nonce().await?; let tx = STARKNET_ACCOUNT .execute(vec![Call { to: fact_registry_address, selector: get_selector_from_name("verify_and_register_fact").expect("invalid selector"), calldata: serialized_proof, }]) + .nonce(nonce) .send_with_cfg(&txn_config) .await - .unwrap(); + .context("Failed to send `verify_and_register_fact` transaction.")?; let start_fetching = std::time::Instant::now(); let wait_for = Duration::from_secs(60); @@ -64,5 +67,5 @@ pub async fn starknet_verify( } } - Ok(format!("{:#x}", tx.transaction_hash)) + Ok((format!("{:#x}", tx.transaction_hash), nonce)) } diff --git a/crates/sozo/ops/Cargo.toml b/crates/sozo/ops/Cargo.toml index e4eded4705..f4144ae66b 100644 --- a/crates/sozo/ops/Cargo.toml +++ b/crates/sozo/ops/Cargo.toml @@ -50,6 +50,7 @@ tokio.workspace = true tracing-log = "0.1.3" tracing.workspace = true url.workspace = true +toml.workspace = true [dev-dependencies] assert_fs.workspace = true diff --git a/crates/sozo/ops/src/events.rs b/crates/sozo/ops/src/events.rs index c524fc2e96..b567157201 100644 --- a/crates/sozo/ops/src/events.rs +++ b/crates/sozo/ops/src/events.rs @@ -5,8 +5,7 @@ use anyhow::{anyhow, Result}; use cainome::parser::tokens::{CompositeInner, CompositeInnerKind, CoreBasic, Token}; use cainome::parser::AbiParser; use camino::Utf8PathBuf; -use dojo_lang::compiler::MANIFESTS_DIR; -use dojo_world::manifest::{AbiFormat, DeploymentManifest, ManifestMethods}; +use dojo_world::manifest::{AbiFormat, DeploymentManifest, ManifestMethods, MANIFESTS_DIR}; use starknet::core::types::{BlockId, EventFilter, FieldElement}; use starknet::core::utils::{parse_cairo_short_string, starknet_keccak}; use starknet::providers::jsonrpc::HttpTransport; @@ -249,8 +248,7 @@ fn process_inners( mod tests { use cainome::parser::tokens::{Array, Composite, CompositeInner, CompositeType}; use camino::Utf8Path; - use dojo_lang::compiler::{BASE_DIR, MANIFESTS_DIR}; - use dojo_world::manifest::BaseManifest; + use dojo_world::manifest::{BaseManifest, BASE_DIR}; use starknet::core::types::EmittedEvent; use super::*; @@ -267,7 +265,7 @@ mod tests { let result = extract_events(&manifest, &manifest_dir).unwrap(); // we are just collecting all events from manifest file so just verifying count should work - assert_eq!(result.len(), 14); + assert_eq!(result.len(), 15); } #[test] diff --git a/crates/sozo/ops/src/migration/migrate.rs b/crates/sozo/ops/src/migration/migrate.rs index 831fd22c48..b6c194e5a4 100644 --- a/crates/sozo/ops/src/migration/migrate.rs +++ b/crates/sozo/ops/src/migration/migrate.rs @@ -2,12 +2,12 @@ use std::path::Path; use anyhow::{anyhow, bail, Context, Result}; use camino::Utf8PathBuf; -use dojo_lang::compiler::{ABIS_DIR, BASE_DIR, DEPLOYMENTS_DIR, MANIFESTS_DIR}; use dojo_world::contracts::abi::world; use dojo_world::contracts::{cairo_utils, WorldContract}; use dojo_world::manifest::{ AbiFormat, BaseManifest, DeploymentManifest, DojoContract, DojoModel, Manifest, - ManifestMethods, WorldContract as ManifestWorldContract, WorldMetadata, + ManifestMethods, WorldContract as ManifestWorldContract, WorldMetadata, ABIS_DIR, BASE_DIR, + DEPLOYMENTS_DIR, MANIFESTS_DIR, }; use dojo_world::metadata::{dojo_metadata_from_workspace, ResourceMetadata}; use dojo_world::migration::class::ClassMigration; diff --git a/crates/sozo/ops/src/migration/mod.rs b/crates/sozo/ops/src/migration/mod.rs index b852ecb058..393ec72785 100644 --- a/crates/sozo/ops/src/migration/mod.rs +++ b/crates/sozo/ops/src/migration/mod.rs @@ -1,8 +1,14 @@ use std::sync::Arc; +use std::{fs, io}; -use anyhow::{anyhow, Result}; -use dojo_lang::compiler::MANIFESTS_DIR; +use anyhow::{anyhow, Context, Result}; +use camino::Utf8PathBuf; use dojo_world::contracts::WorldContract; +use dojo_world::manifest::{ + DojoContract, DojoModel, Manifest, OverlayClass, OverlayDojoContract, OverlayDojoModel, + OverlayManifest, BASE_CONTRACT_NAME, BASE_DIR, CONTRACTS_DIR, MANIFESTS_DIR, MODELS_DIR, + OVERLAYS_DIR, WORLD_CONTRACT_NAME, +}; use dojo_world::migration::world::WorldDiff; use dojo_world::migration::{DeployOutput, TxnConfig, UpgradeOutput}; use scarb::core::Workspace; @@ -175,3 +181,87 @@ enum ContractDeploymentOutput { enum ContractUpgradeOutput { Output(UpgradeOutput), } + +pub fn generate_overlays(ws: &Workspace<'_>) -> Result<()> { + let profile_name = + ws.current_profile().expect("Scarb profile expected to be defined.").to_string(); + + // its path to a file so `parent` should never return `None` + let manifest_dir = ws.manifest_path().parent().unwrap().to_path_buf(); + let profile_dir = manifest_dir.join(MANIFESTS_DIR).join(profile_name); + + let base_manifests = profile_dir.join(BASE_DIR); + + let world = OverlayClass { name: WORLD_CONTRACT_NAME.into(), original_class_hash: None }; + let base = OverlayClass { name: BASE_CONTRACT_NAME.into(), original_class_hash: None }; + + // generate default OverlayManifest from base manifests + let contracts = overlay_dojo_contracts_from_path(&base_manifests.join(CONTRACTS_DIR)) + .with_context(|| "Failed to build default DojoContract Overlays from path.")?; + let models = overlay_model_from_path(&base_manifests.join(MODELS_DIR)) + .with_context(|| "Failed to build default DojoModel Overlays from path.")?; + + let default_overlay = + OverlayManifest { world: Some(world), base: Some(base), contracts, models }; + + let overlay_path = profile_dir.join(OVERLAYS_DIR); + + // read existing OverlayManifest from path + let mut overlay_manifest = OverlayManifest::load_from_path(&overlay_path) + .with_context(|| "Failed to load OverlayManifest from path.")?; + + // merge them to get OverlayManifest which contains all the contracts and models from base + // manifests + overlay_manifest.merge(default_overlay); + + overlay_manifest + .write_to_path_nested(&overlay_path) + .with_context(|| "Failed to write OverlayManifest to path.")?; + + Ok(()) +} + +fn overlay_dojo_contracts_from_path(path: &Utf8PathBuf) -> Result> { + let mut elements = vec![]; + + let entries = path + .read_dir()? + .map(|entry| entry.map(|e| e.path())) + .collect::, io::Error>>()?; + + for path in entries { + if path.is_file() { + let manifest: Manifest = toml::from_str(&fs::read_to_string(path)?)?; + + let overlay_manifest = + OverlayDojoContract { name: manifest.name, ..Default::default() }; + elements.push(overlay_manifest); + } else { + continue; + } + } + + Ok(elements) +} + +fn overlay_model_from_path(path: &Utf8PathBuf) -> Result> { + let mut elements = vec![]; + + let entries = path + .read_dir()? + .map(|entry| entry.map(|e| e.path())) + .collect::, io::Error>>()?; + + for path in entries { + if path.is_file() { + let manifest: Manifest = toml::from_str(&fs::read_to_string(path)?)?; + + let overlay_manifest = OverlayDojoModel { name: manifest.name, ..Default::default() }; + elements.push(overlay_manifest); + } else { + continue; + } + } + + Ok(elements) +} diff --git a/crates/sozo/ops/src/migration/utils.rs b/crates/sozo/ops/src/migration/utils.rs index 789ae214c8..e8f6f50165 100644 --- a/crates/sozo/ops/src/migration/utils.rs +++ b/crates/sozo/ops/src/migration/utils.rs @@ -1,8 +1,8 @@ use anyhow::{anyhow, Result}; use camino::Utf8PathBuf; -use dojo_lang::compiler::{BASE_DIR, OVERLAYS_DIR}; use dojo_world::manifest::{ - AbstractManifestError, BaseManifest, DeploymentManifest, OverlayManifest, + AbstractManifestError, BaseManifest, DeploymentManifest, OverlayManifest, BASE_DIR, + OVERLAYS_DIR, }; use scarb_ui::Ui; use starknet::accounts::{ConnectedAccount, SingleOwnerAccount}; diff --git a/crates/sozo/ops/src/model.rs b/crates/sozo/ops/src/model.rs index fd11cec2dd..1bfe108e96 100644 --- a/crates/sozo/ops/src/model.rs +++ b/crates/sozo/ops/src/model.rs @@ -90,6 +90,10 @@ pub async fn model_get( world_address: FieldElement, provider: JsonRpcClient, ) -> Result<()> { + if keys.is_empty() { + anyhow::bail!("Models always have at least one key. Please provide it (or them)."); + } + let mut world_reader = WorldContractReader::new(world_address, &provider); world_reader.set_block(BlockId::Tag(BlockTag::Pending)); diff --git a/crates/sozo/ops/src/tests/migration.rs b/crates/sozo/ops/src/tests/migration.rs index 1f82982bf7..006c9a731e 100644 --- a/crates/sozo/ops/src/tests/migration.rs +++ b/crates/sozo/ops/src/tests/migration.rs @@ -2,11 +2,11 @@ use std::str; use cainome::cairo_serde::ContractAddress; use camino::Utf8Path; -use dojo_lang::compiler::{BASE_DIR, MANIFESTS_DIR, OVERLAYS_DIR}; use dojo_test_utils::migration::prepare_migration_with_world_and_seed; use dojo_world::contracts::{WorldContract, WorldContractReader}; use dojo_world::manifest::{ - BaseManifest, DeploymentManifest, OverlayManifest, WORLD_CONTRACT_NAME, + BaseManifest, DeploymentManifest, OverlayManifest, BASE_DIR, MANIFESTS_DIR, OVERLAYS_DIR, + WORLD_CONTRACT_NAME, }; use dojo_world::metadata::{ dojo_metadata_from_workspace, ArtifactMetadata, DojoMetadata, Uri, WorldMetadata, diff --git a/crates/torii/README.md b/crates/torii/README.md index 635eb16da0..21ff59ea1a 100644 --- a/crates/torii/README.md +++ b/crates/torii/README.md @@ -4,4 +4,4 @@ curl -L https://install.dojoengine.org | bash ``` -[Documentation](https://book.dojoengine.org/toolchain/torii/overview) +[Documentation](https://book.dojoengine.org/toolchain/torii) diff --git a/crates/torii/libp2p/src/server/mod.rs b/crates/torii/libp2p/src/server/mod.rs index fa88af09cd..3562b5a46f 100644 --- a/crates/torii/libp2p/src/server/mod.rs +++ b/crates/torii/libp2p/src/server/mod.rs @@ -9,7 +9,7 @@ use std::{fs, io}; use chrono::Utc; use crypto_bigint::U256; use dojo_types::primitive::Primitive; -use dojo_types::schema::{Struct, Ty}; +use dojo_types::schema::Ty; use futures::StreamExt; use indexmap::IndexMap; use libp2p::core::multiaddr::Protocol; @@ -443,175 +443,174 @@ fn ty_keys(ty: &Ty) -> Result, Error> { } } -pub fn parse_ty_to_object(ty: &Ty) -> Result, Error> { - match ty { - Ty::Struct(struct_ty) => { - let mut object = IndexMap::new(); - for member in &struct_ty.children { - let mut member_object = IndexMap::new(); - member_object.insert("key".to_string(), PrimitiveType::Bool(member.key)); - member_object.insert( - "type".to_string(), - PrimitiveType::String(ty_to_string_type(&member.ty)), - ); - member_object.insert("value".to_string(), parse_ty_to_primitive(&member.ty)?); - object.insert(member.name.clone(), PrimitiveType::Object(member_object)); +pub fn parse_value_to_ty(value: &PrimitiveType, ty: &mut Ty) -> Result<(), Error> { + match value { + PrimitiveType::Object(object) => match ty { + Ty::Struct(struct_) => { + for (key, value) in object { + let member = + struct_.children.iter_mut().find(|member| member.name == *key).ok_or_else( + || Error::InvalidMessageError(format!("Member {} not found", key)), + )?; + + parse_value_to_ty(value, &mut member.ty)?; + } } - Ok(object) - } - _ => Err(Error::InvalidMessageError("Expected Struct type".to_string())), - } -} + // U256 is an object with two u128 fields + // low and high + Ty::Primitive(Primitive::U256(u256)) => { + let mut low = Ty::Primitive(Primitive::U128(None)); + let mut high = Ty::Primitive(Primitive::U128(None)); -pub fn ty_to_string_type(ty: &Ty) -> String { - match ty { - Ty::Primitive(primitive) => match primitive { - Primitive::U8(_) => "u8".to_string(), - Primitive::U16(_) => "u16".to_string(), - Primitive::U32(_) => "u32".to_string(), - Primitive::USize(_) => "usize".to_string(), - Primitive::U64(_) => "u64".to_string(), - Primitive::U128(_) => "u128".to_string(), - Primitive::U256(_) => "u256".to_string(), - Primitive::Felt252(_) => "felt252".to_string(), - Primitive::ClassHash(_) => "class_hash".to_string(), - Primitive::ContractAddress(_) => "contract_address".to_string(), - Primitive::Bool(_) => "bool".to_string(), - }, - Ty::Struct(_) => "struct".to_string(), - Ty::Tuple(_) => "tuple".to_string(), - Ty::Array(_) => "array".to_string(), - Ty::ByteArray(_) => "bytearray".to_string(), - Ty::Enum(_) => "enum".to_string(), - } -} + // parse the low and high fields + parse_value_to_ty(&object["low"], &mut low)?; + parse_value_to_ty(&object["high"], &mut high)?; -pub fn parse_ty_to_primitive(ty: &Ty) -> Result { - match ty { - Ty::Primitive(primitive) => match primitive { - Primitive::U8(value) => { - Ok(PrimitiveType::Number(Number::from(value.map(|v| v as u64).unwrap_or(0u64)))) - } - Primitive::U16(value) => { - Ok(PrimitiveType::Number(Number::from(value.map(|v| v as u64).unwrap_or(0u64)))) - } - Primitive::U32(value) => { - Ok(PrimitiveType::Number(Number::from(value.map(|v| v as u64).unwrap_or(0u64)))) + let low = low.as_primitive().unwrap().as_u128().unwrap(); + let high = high.as_primitive().unwrap().as_u128().unwrap(); + + let mut bytes = [0u8; 32]; + bytes[..16].copy_from_slice(&high.to_be_bytes()); + bytes[16..].copy_from_slice(&low.to_be_bytes()); + + *u256 = Some(U256::from_be_slice(&bytes)); } - Primitive::USize(value) => { - Ok(PrimitiveType::Number(Number::from(value.map(|v| v as u64).unwrap_or(0u64)))) + // an enum is a SNIP-12 compliant object with a single key + // where the K is the variant name + // and the value is the variant value + Ty::Enum(enum_) => { + let (option_name, value) = object.first().ok_or_else(|| { + Error::InvalidMessageError("Enum variant not found".to_string()) + })?; + + enum_.options.iter_mut().for_each(|option| { + if option.name == *option_name { + parse_value_to_ty(value, &mut option.ty).unwrap(); + } + }); + + enum_.set_option(option_name).map_err(|e| { + Error::InvalidMessageError(format!("Failed to set enum option: {}", e)) + })?; } - Primitive::U64(value) => { - Ok(PrimitiveType::Number(Number::from(value.map(|v| v).unwrap_or(0u64)))) + _ => { + return Err(Error::InvalidMessageError(format!( + "Invalid object type for {}", + ty.name() + ))); } - Primitive::U128(value) => Ok(PrimitiveType::String( - value.map(|v| v.to_string()).unwrap_or_else(|| "0".to_string()), - )), - Primitive::U256(value) => Ok(PrimitiveType::String( - value.map(|v| format!("{:#x}", v)).unwrap_or_else(|| "0".to_string()), - )), - Primitive::Felt252(value) => Ok(PrimitiveType::String( - value.map(|v| format!("{:#x}", v)).unwrap_or_else(|| "0".to_string()), - )), - Primitive::ClassHash(value) => Ok(PrimitiveType::String( - value.map(|v| format!("{:#x}", v)).unwrap_or_else(|| "0".to_string()), - )), - Primitive::ContractAddress(value) => Ok(PrimitiveType::String( - value.map(|v| format!("{:#x}", v)).unwrap_or_else(|| "0".to_string()), - )), - Primitive::Bool(value) => Ok(PrimitiveType::Bool(value.unwrap_or(false))), }, - _ => Err(Error::InvalidMessageError("Expected Primitive type".to_string())), - } -} - -pub fn parse_object_to_ty( - model: &mut Struct, - object: &IndexMap, -) -> Result<(), Error> { - for (field_name, value) in object { - let field = model.children.iter_mut().find(|m| m.name == *field_name).ok_or_else(|| { - Error::InvalidMessageError(format!("Field {} not found in model", field_name)) - })?; + PrimitiveType::Array(values) => match ty { + Ty::Array(array) => { + let inner_type = array[0].clone(); + + // clear the array, which contains the inner type + array.clear(); + + // parse each value to the inner type + for value in values { + let mut ty = inner_type.clone(); + parse_value_to_ty(value, &mut ty)?; + array.push(ty); + } + } + Ty::Tuple(tuple) => { + // our array values need to match the length of the tuple + if tuple.len() != values.len() { + return Err(Error::InvalidMessageError("Tuple length mismatch".to_string())); + } - match value { - PrimitiveType::Object(object) => { - parse_object_to_ty(model, object)?; + for (i, value) in tuple.iter_mut().enumerate() { + parse_value_to_ty(&values[i], value)?; + } } - PrimitiveType::Array(_) => { - // tuples not supported yet - unimplemented!() + _ => { + return Err(Error::InvalidMessageError(format!( + "Invalid array type for {}", + ty.name() + ))); } - PrimitiveType::Number(number) => match &mut field.ty { - Ty::Primitive(primitive) => match *primitive { - Primitive::U8(ref mut u8) => { - *u8 = Some(number.as_u64().unwrap() as u8); - } - Primitive::U16(ref mut u16) => { - *u16 = Some(number.as_u64().unwrap() as u16); - } - Primitive::U32(ref mut u32) => { - *u32 = Some(number.as_u64().unwrap() as u32); - } - Primitive::USize(ref mut usize) => { - *usize = Some(number.as_u64().unwrap() as u32); - } - Primitive::U64(ref mut u64) => { - *u64 = Some(number.as_u64().unwrap()); - } - _ => { - return Err(Error::InvalidMessageError("Invalid number type".to_string())); - } - }, - Ty::Enum(enum_) => { - enum_.option = Some(number.as_u64().unwrap() as u8); + }, + PrimitiveType::Number(number) => match ty { + Ty::Primitive(primitive) => match *primitive { + Primitive::U8(ref mut u8) => { + *u8 = Some(number.as_u64().unwrap() as u8); + } + Primitive::U16(ref mut u16) => { + *u16 = Some(number.as_u64().unwrap() as u16); + } + Primitive::U32(ref mut u32) => { + *u32 = Some(number.as_u64().unwrap() as u32); + } + Primitive::USize(ref mut usize) => { + *usize = Some(number.as_u64().unwrap() as u32); + } + Primitive::U64(ref mut u64) => { + *u64 = Some(number.as_u64().unwrap()); + } + _ => { + return Err(Error::InvalidMessageError(format!( + "Invalid number type for {}", + ty.name() + ))); } - _ => return Err(Error::InvalidMessageError("Invalid number type".to_string())), }, - PrimitiveType::Bool(boolean) => { - field.ty = Ty::Primitive(Primitive::Bool(Some(*boolean))); + _ => { + return Err(Error::InvalidMessageError(format!( + "Invalid number type for {}", + ty.name() + ))); } - PrimitiveType::String(string) => match &mut field.ty { - Ty::Primitive(primitive) => match primitive { - Primitive::U8(v) => { - *v = Some(u8::from_str(string).unwrap()); - } - Primitive::U16(v) => { - *v = Some(u16::from_str(string).unwrap()); - } - Primitive::U32(v) => { - *v = Some(u32::from_str(string).unwrap()); - } - Primitive::USize(v) => { - *v = Some(u32::from_str(string).unwrap()); - } - Primitive::U64(v) => { - *v = Some(u64::from_str(string).unwrap()); - } - Primitive::U128(v) => { - *v = Some(u128::from_str(string).unwrap()); - } - Primitive::U256(v) => { - *v = Some(U256::from_be_hex(string)); - } - Primitive::Felt252(v) => { - *v = Some(FieldElement::from_str(string).unwrap()); - } - Primitive::ClassHash(v) => { - *v = Some(FieldElement::from_str(string).unwrap()); - } - Primitive::ContractAddress(v) => { - *v = Some(FieldElement::from_str(string).unwrap()); - } - Primitive::Bool(v) => { - *v = Some(bool::from_str(string).unwrap()); - } - }, + }, + PrimitiveType::Bool(boolean) => { + *ty = Ty::Primitive(Primitive::Bool(Some(*boolean))); + } + PrimitiveType::String(string) => match ty { + Ty::Primitive(primitive) => match primitive { + Primitive::U8(v) => { + *v = Some(u8::from_str(string).unwrap()); + } + Primitive::U16(v) => { + *v = Some(u16::from_str(string).unwrap()); + } + Primitive::U32(v) => { + *v = Some(u32::from_str(string).unwrap()); + } + Primitive::USize(v) => { + *v = Some(u32::from_str(string).unwrap()); + } + Primitive::U64(v) => { + *v = Some(u64::from_str(string).unwrap()); + } + Primitive::U128(v) => { + *v = Some(u128::from_str(string).unwrap()); + } + Primitive::Felt252(v) => { + *v = Some(FieldElement::from_str(string).unwrap()); + } + Primitive::ClassHash(v) => { + *v = Some(FieldElement::from_str(string).unwrap()); + } + Primitive::ContractAddress(v) => { + *v = Some(FieldElement::from_str(string).unwrap()); + } + Primitive::Bool(v) => { + *v = Some(bool::from_str(string).unwrap()); + } _ => { - return Err(Error::InvalidMessageError("Invalid string type".to_string())); + return Err(Error::InvalidMessageError("Invalid primitive type".to_string())); } }, - } + Ty::ByteArray(s) => { + *s = string.clone(); + } + _ => { + return Err(Error::InvalidMessageError(format!( + "Invalid string type for {}", + ty.name() + ))); + } + }, } Ok(()) @@ -649,18 +648,8 @@ async fn validate_message( )) })?; - let ty_struct = if let Ty::Struct(ty_struct) = &mut ty { - ty_struct - } else { - return Err(Error::InvalidMessageError("Model is not a struct".to_string())); - }; - if let Some(object) = message.get(model_name) { - if let PrimitiveType::Object(object) = object { - parse_object_to_ty(ty_struct, object)? - } else { - return Err(Error::InvalidMessageError("Model is not a struct".to_string())); - } + parse_value_to_ty(object, &mut ty)?; } else { return Err(Error::InvalidMessageError("Model is missing".to_string())); }; @@ -703,14 +692,98 @@ fn read_or_create_certificate(path: &Path) -> anyhow::Result { Ok(cert) } +// Deprecated. These should be potentially removed. As Ty -> TypedData is now done +// on the SDKs side +pub fn parse_ty_to_object(ty: &Ty) -> Result, Error> { + match ty { + Ty::Struct(struct_ty) => { + let mut object = IndexMap::new(); + for member in &struct_ty.children { + let mut member_object = IndexMap::new(); + member_object.insert("key".to_string(), PrimitiveType::Bool(member.key)); + member_object.insert( + "type".to_string(), + PrimitiveType::String(ty_to_string_type(&member.ty)), + ); + member_object.insert("value".to_string(), parse_ty_to_primitive(&member.ty)?); + object.insert(member.name.clone(), PrimitiveType::Object(member_object)); + } + Ok(object) + } + _ => Err(Error::InvalidMessageError("Expected Struct type".to_string())), + } +} + +pub fn ty_to_string_type(ty: &Ty) -> String { + match ty { + Ty::Primitive(primitive) => match primitive { + Primitive::U8(_) => "u8".to_string(), + Primitive::U16(_) => "u16".to_string(), + Primitive::U32(_) => "u32".to_string(), + Primitive::USize(_) => "usize".to_string(), + Primitive::U64(_) => "u64".to_string(), + Primitive::U128(_) => "u128".to_string(), + Primitive::U256(_) => "u256".to_string(), + Primitive::Felt252(_) => "felt252".to_string(), + Primitive::ClassHash(_) => "class_hash".to_string(), + Primitive::ContractAddress(_) => "contract_address".to_string(), + Primitive::Bool(_) => "bool".to_string(), + }, + Ty::Struct(_) => "struct".to_string(), + Ty::Tuple(_) => "tuple".to_string(), + Ty::Array(_) => "array".to_string(), + Ty::ByteArray(_) => "bytearray".to_string(), + Ty::Enum(_) => "enum".to_string(), + } +} + +pub fn parse_ty_to_primitive(ty: &Ty) -> Result { + match ty { + Ty::Primitive(primitive) => match primitive { + Primitive::U8(value) => { + Ok(PrimitiveType::Number(Number::from(value.map(|v| v as u64).unwrap_or(0u64)))) + } + Primitive::U16(value) => { + Ok(PrimitiveType::Number(Number::from(value.map(|v| v as u64).unwrap_or(0u64)))) + } + Primitive::U32(value) => { + Ok(PrimitiveType::Number(Number::from(value.map(|v| v as u64).unwrap_or(0u64)))) + } + Primitive::USize(value) => { + Ok(PrimitiveType::Number(Number::from(value.map(|v| v as u64).unwrap_or(0u64)))) + } + Primitive::U64(value) => { + Ok(PrimitiveType::Number(Number::from(value.map(|v| v).unwrap_or(0u64)))) + } + Primitive::U128(value) => Ok(PrimitiveType::String( + value.map(|v| v.to_string()).unwrap_or_else(|| "0".to_string()), + )), + Primitive::U256(value) => Ok(PrimitiveType::String( + value.map(|v| format!("{:#x}", v)).unwrap_or_else(|| "0".to_string()), + )), + Primitive::Felt252(value) => Ok(PrimitiveType::String( + value.map(|v| format!("{:#x}", v)).unwrap_or_else(|| "0".to_string()), + )), + Primitive::ClassHash(value) => Ok(PrimitiveType::String( + value.map(|v| format!("{:#x}", v)).unwrap_or_else(|| "0".to_string()), + )), + Primitive::ContractAddress(value) => Ok(PrimitiveType::String( + value.map(|v| format!("{:#x}", v)).unwrap_or_else(|| "0".to_string()), + )), + Primitive::Bool(value) => Ok(PrimitiveType::Bool(value.unwrap_or(false))), + }, + _ => Err(Error::InvalidMessageError("Expected Primitive type".to_string())), + } +} + #[cfg(test)] mod tests { use tempfile::tempdir; use super::*; - #[tokio::test] - async fn test_read_or_create_identity() { + #[test] + fn test_read_or_create_identity() { let dir = tempdir().unwrap(); let identity_path = dir.path().join("identity"); @@ -725,8 +798,8 @@ mod tests { dir.close().unwrap(); } - #[tokio::test] - async fn test_read_or_create_certificate() { + #[test] + fn test_read_or_create_certificate() { let dir = tempdir().unwrap(); let cert_path = dir.path().join("certificate"); diff --git a/crates/torii/libp2p/src/tests.rs b/crates/torii/libp2p/src/tests.rs index 5220333683..3d0e5581be 100644 --- a/crates/torii/libp2p/src/tests.rs +++ b/crates/torii/libp2p/src/tests.rs @@ -3,12 +3,267 @@ mod test { use std::error::Error; use crate::client::RelayClient; + use crate::server::parse_value_to_ty; + use crate::typed_data::PrimitiveType; #[cfg(target_arch = "wasm32")] wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser); + use crypto_bigint::U256; + use dojo_types::primitive::Primitive; + use dojo_types::schema::{Enum, EnumOption, Member, Struct, Ty}; + use serde_json::Number; + use starknet_crypto::FieldElement; #[cfg(target_arch = "wasm32")] use wasm_bindgen_test::*; + #[test] + fn test_parse_primitive_to_ty() { + // primitives + let mut ty = Ty::Primitive(Primitive::U8(None)); + let value = PrimitiveType::Number(Number::from(1u64)); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::U8(Some(1)))); + + let mut ty = Ty::Primitive(Primitive::U16(None)); + let value = PrimitiveType::Number(Number::from(1u64)); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::U16(Some(1)))); + + let mut ty = Ty::Primitive(Primitive::U32(None)); + let value = PrimitiveType::Number(Number::from(1u64)); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::U32(Some(1)))); + + let mut ty = Ty::Primitive(Primitive::USize(None)); + let value = PrimitiveType::Number(Number::from(1u64)); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::USize(Some(1)))); + + let mut ty = Ty::Primitive(Primitive::U64(None)); + let value = PrimitiveType::Number(Number::from(1u64)); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::U64(Some(1)))); + + let mut ty = Ty::Primitive(Primitive::U128(None)); + let value = PrimitiveType::String("1".to_string()); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::U128(Some(1)))); + + // test u256 with low high + let mut ty = Ty::Primitive(Primitive::U256(None)); + let value = PrimitiveType::Object( + vec![ + ("low".to_string(), PrimitiveType::String("1".to_string())), + ("high".to_string(), PrimitiveType::String("0".to_string())), + ] + .into_iter() + .collect(), + ); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::U256(Some(U256::ONE)))); + + let mut ty = Ty::Primitive(Primitive::Felt252(None)); + let value = PrimitiveType::String("1".to_string()); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::Felt252(Some(FieldElement::ONE)))); + + let mut ty = Ty::Primitive(Primitive::ClassHash(None)); + let value = PrimitiveType::String("1".to_string()); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::ClassHash(Some(FieldElement::ONE)))); + + let mut ty = Ty::Primitive(Primitive::ContractAddress(None)); + let value = PrimitiveType::String("1".to_string()); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::ContractAddress(Some(FieldElement::ONE)))); + + let mut ty = Ty::Primitive(Primitive::Bool(None)); + let value = PrimitiveType::Bool(true); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::Primitive(Primitive::Bool(Some(true)))); + + // bytearray + let mut ty = Ty::ByteArray("".to_string()); + let value = PrimitiveType::String("mimi".to_string()); + parse_value_to_ty(&value, &mut ty).unwrap(); + assert_eq!(ty, Ty::ByteArray("mimi".to_string())); + } + + #[test] + fn test_parse_complex_to_ty() { + let mut ty = Ty::Struct(Struct { + name: "PlayerConfig".to_string(), + children: vec![ + Member { + name: "player".to_string(), + ty: Ty::Primitive(Primitive::ContractAddress(None)), + key: true, + }, + Member { name: "name".to_string(), ty: Ty::ByteArray("".to_string()), key: false }, + Member { + name: "items".to_string(), + // array of PlayerItem struct + ty: Ty::Array(vec![Ty::Struct(Struct { + name: "PlayerItem".to_string(), + children: vec![ + Member { + name: "item_id".to_string(), + ty: Ty::Primitive(Primitive::U32(None)), + key: false, + }, + Member { + name: "quantity".to_string(), + ty: Ty::Primitive(Primitive::U32(None)), + key: false, + }, + ], + })]), + key: false, + }, + // a favorite_item field with enum type Option + Member { + name: "favorite_item".to_string(), + ty: Ty::Enum(Enum { + name: "Option".to_string(), + option: None, + options: vec![ + EnumOption { name: "None".to_string(), ty: Ty::Tuple(vec![]) }, + EnumOption { + name: "Some".to_string(), + ty: Ty::Struct(Struct { + name: "PlayerItem".to_string(), + children: vec![ + Member { + name: "item_id".to_string(), + ty: Ty::Primitive(Primitive::U32(None)), + key: false, + }, + Member { + name: "quantity".to_string(), + ty: Ty::Primitive(Primitive::U32(None)), + key: false, + }, + ], + }), + }, + ], + }), + key: false, + }, + ], + }); + + let value = PrimitiveType::Object( + vec![ + ("player".to_string(), PrimitiveType::String("1".to_string())), + ("name".to_string(), PrimitiveType::String("mimi".to_string())), + ( + "items".to_string(), + PrimitiveType::Array(vec![PrimitiveType::Object( + vec![ + ("item_id".to_string(), PrimitiveType::String("1".to_string())), + ("quantity".to_string(), PrimitiveType::Number(Number::from(1u64))), + ] + .into_iter() + .collect(), + )]), + ), + ( + "favorite_item".to_string(), + PrimitiveType::Object( + vec![( + "Some".to_string(), + PrimitiveType::Object( + vec![ + ("item_id".to_string(), PrimitiveType::String("1".to_string())), + ( + "quantity".to_string(), + PrimitiveType::Number(Number::from(1u64)), + ), + ] + .into_iter() + .collect(), + ), + )] + .into_iter() + .collect(), + ), + ), + ] + .into_iter() + .collect(), + ); + + parse_value_to_ty(&value, &mut ty).unwrap(); + + assert_eq!( + ty, + Ty::Struct(Struct { + name: "PlayerConfig".to_string(), + children: vec![ + Member { + name: "player".to_string(), + ty: Ty::Primitive(Primitive::ContractAddress(Some(FieldElement::ONE))), + key: true, + }, + Member { + name: "name".to_string(), + ty: Ty::ByteArray("mimi".to_string()), + key: false, + }, + Member { + name: "items".to_string(), + ty: Ty::Array(vec![Ty::Struct(Struct { + name: "PlayerItem".to_string(), + children: vec![ + Member { + name: "item_id".to_string(), + ty: Ty::Primitive(Primitive::U32(Some(1))), + key: false, + }, + Member { + name: "quantity".to_string(), + ty: Ty::Primitive(Primitive::U32(Some(1))), + key: false, + }, + ], + })]), + key: false, + }, + Member { + name: "favorite_item".to_string(), + ty: Ty::Enum(Enum { + name: "Option".to_string(), + option: Some(1_u8), + options: vec![ + EnumOption { name: "None".to_string(), ty: Ty::Tuple(vec![]) }, + EnumOption { + name: "Some".to_string(), + ty: Ty::Struct(Struct { + name: "PlayerItem".to_string(), + children: vec![ + Member { + name: "item_id".to_string(), + ty: Ty::Primitive(Primitive::U32(Some(1))), + key: false, + }, + Member { + name: "quantity".to_string(), + ty: Ty::Primitive(Primitive::U32(Some(1))), + key: false, + }, + ], + }), + }, + ] + }), + key: false, + }, + ], + }) + ); + } + // This tests subscribing to a topic and receiving a message #[cfg(not(target_arch = "wasm32"))] #[tokio::test] @@ -95,8 +350,6 @@ mod test { ), ); - println!("object ty: {:?}", parse_ty_to_object(&Ty::Struct(data)).unwrap()); - client .command_sender .publish(Message { diff --git a/crates/torii/types-test/manifests/dev/base/dojo_world_world.toml b/crates/torii/types-test/manifests/dev/base/dojo_world_world.toml index f80ccef0d2..2555ec3eda 100644 --- a/crates/torii/types-test/manifests/dev/base/dojo_world_world.toml +++ b/crates/torii/types-test/manifests/dev/base/dojo_world_world.toml @@ -1,5 +1,5 @@ kind = "Class" -class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" -original_class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" +class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" +original_class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" abi = "manifests/dev/abis/base/dojo_world_world.json" name = "dojo::world::world" diff --git a/dojoup/README.md b/dojoup/README.md index 277e12a1a1..714d5d7c58 100644 --- a/dojoup/README.md +++ b/dojoup/README.md @@ -4,4 +4,10 @@ curl -L https://install.dojoengine.org | bash ``` -[Documentation](https://book.dojoengine.org/toolchain/dojoup) +For more details, you can then issue the following command: + +```sh +dojoup --help +``` + +[Documentation](https://book.dojoengine.org/getting-started#getting-started) diff --git a/examples/spawn-and-move/Scarb.toml b/examples/spawn-and-move/Scarb.toml index 9b3eadd95d..5dd277ffa0 100644 --- a/examples/spawn-and-move/Scarb.toml +++ b/examples/spawn-and-move/Scarb.toml @@ -27,7 +27,7 @@ rpc_url = "http://localhost:5050/" # Default account for katana with seed = 0 account_address = "0x6162896d1d7ab204c7ccac6dd5f8e9e7c25ecd5ae4fcb4ad32e57786bb46e03" private_key = "0x1800000000300000180000000000030000000000003006001800006600" -world_address = "0x2e31cfde9f9990c7fe44b25043e3c6958a849c0a66ab535686d2b710e97f309" +world_address = "0x07efebb0c2d4cc285d48a97a7174def3be7fdd6b7bd29cca758fa2e17e03ef30" # `release` profile # @@ -45,7 +45,7 @@ rpc_url = "http://localhost:5050/" # Default account for katana with seed = 0 account_address = "0x6162896d1d7ab204c7ccac6dd5f8e9e7c25ecd5ae4fcb4ad32e57786bb46e03" private_key = "0x1800000000300000180000000000030000000000003006001800006600" -world_address = "0x2e31cfde9f9990c7fe44b25043e3c6958a849c0a66ab535686d2b710e97f309" +world_address = "0x07efebb0c2d4cc285d48a97a7174def3be7fdd6b7bd29cca758fa2e17e03ef30" [profile.release.tool.dojo] skip_migration = [ diff --git a/examples/spawn-and-move/manifests/dev/abis/base/dojo_world_world.json b/examples/spawn-and-move/manifests/dev/abis/base/dojo_world_world.json index 63207ddec9..c1a2447839 100644 --- a/examples/spawn-and-move/manifests/dev/abis/base/dojo_world_world.json +++ b/examples/spawn-and-move/manifests/dev/abis/base/dojo_world_world.json @@ -555,6 +555,10 @@ { "name": "program_output", "type": "dojo::interfaces::ProgramOutput" + }, + { + "name": "program_hash", + "type": "core::felt252" } ], "outputs": [], @@ -573,7 +577,19 @@ "items": [ { "type": "function", - "name": "set_program_hash", + "name": "set_differ_program_hash", + "inputs": [ + { + "name": "program_hash", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_merger_program_hash", "inputs": [ { "name": "program_hash", @@ -585,7 +601,18 @@ }, { "type": "function", - "name": "get_program_hash", + "name": "get_differ_program_hash", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_merger_program_hash", "inputs": [], "outputs": [ { @@ -831,7 +858,19 @@ }, { "type": "event", - "name": "dojo::config::component::Config::ProgramHashUpdate", + "name": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "struct", + "members": [ + { + "name": "program_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "struct", "members": [ { @@ -859,8 +898,13 @@ "kind": "enum", "variants": [ { - "name": "ProgramHashUpdate", - "type": "dojo::config::component::Config::ProgramHashUpdate", + "name": "DifferProgramHashUpdate", + "type": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "nested" + }, + { + "name": "MergerProgramHashUpdate", + "type": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "nested" }, { diff --git a/examples/spawn-and-move/manifests/dev/abis/base/models/dojo_examples_models_emote_message.json b/examples/spawn-and-move/manifests/dev/abis/base/models/dojo_examples_models_message.json similarity index 90% rename from examples/spawn-and-move/manifests/dev/abis/base/models/dojo_examples_models_emote_message.json rename to examples/spawn-and-move/manifests/dev/abis/base/models/dojo_examples_models_message.json index 9c63d0fc5d..ec760c99fb 100644 --- a/examples/spawn-and-move/manifests/dev/abis/base/models/dojo_examples_models_emote_message.json +++ b/examples/spawn-and-move/manifests/dev/abis/base/models/dojo_examples_models_message.json @@ -319,52 +319,34 @@ }, { "type": "impl", - "name": "emote_messageImpl", - "interface_name": "dojo_examples::models::Iemote_message" - }, - { - "type": "enum", - "name": "dojo_examples::models::Emote", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Happy", - "type": "()" - }, - { - "name": "Sad", - "type": "()" - }, - { - "name": "Angry", - "type": "()" - }, - { - "name": "Love", - "type": "()" - } - ] + "name": "messageImpl", + "interface_name": "dojo_examples::models::Imessage" }, { "type": "struct", - "name": "dojo_examples::models::EmoteMessage", + "name": "dojo_examples::models::Message", "members": [ { "name": "identity", "type": "core::starknet::contract_address::ContractAddress" }, { - "name": "emote", - "type": "dojo_examples::models::Emote" + "name": "channel", + "type": "core::felt252" + }, + { + "name": "message", + "type": "core::byte_array::ByteArray" + }, + { + "name": "salt", + "type": "core::felt252" } ] }, { "type": "interface", - "name": "dojo_examples::models::Iemote_message", + "name": "dojo_examples::models::Imessage", "items": [ { "type": "function", @@ -372,7 +354,7 @@ "inputs": [ { "name": "model", - "type": "dojo_examples::models::EmoteMessage" + "type": "dojo_examples::models::Message" } ], "outputs": [], @@ -382,7 +364,7 @@ }, { "type": "event", - "name": "dojo_examples::models::emote_message::Event", + "name": "dojo_examples::models::message::Event", "kind": "enum", "variants": [] } diff --git a/examples/spawn-and-move/manifests/dev/abis/deployments/dojo_world_world.json b/examples/spawn-and-move/manifests/dev/abis/deployments/dojo_world_world.json index 63207ddec9..c1a2447839 100644 --- a/examples/spawn-and-move/manifests/dev/abis/deployments/dojo_world_world.json +++ b/examples/spawn-and-move/manifests/dev/abis/deployments/dojo_world_world.json @@ -555,6 +555,10 @@ { "name": "program_output", "type": "dojo::interfaces::ProgramOutput" + }, + { + "name": "program_hash", + "type": "core::felt252" } ], "outputs": [], @@ -573,7 +577,19 @@ "items": [ { "type": "function", - "name": "set_program_hash", + "name": "set_differ_program_hash", + "inputs": [ + { + "name": "program_hash", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_merger_program_hash", "inputs": [ { "name": "program_hash", @@ -585,7 +601,18 @@ }, { "type": "function", - "name": "get_program_hash", + "name": "get_differ_program_hash", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_merger_program_hash", "inputs": [], "outputs": [ { @@ -831,7 +858,19 @@ }, { "type": "event", - "name": "dojo::config::component::Config::ProgramHashUpdate", + "name": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "struct", + "members": [ + { + "name": "program_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "struct", "members": [ { @@ -859,8 +898,13 @@ "kind": "enum", "variants": [ { - "name": "ProgramHashUpdate", - "type": "dojo::config::component::Config::ProgramHashUpdate", + "name": "DifferProgramHashUpdate", + "type": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "nested" + }, + { + "name": "MergerProgramHashUpdate", + "type": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "nested" }, { diff --git a/examples/spawn-and-move/manifests/dev/abis/deployments/models/dojo_examples_models_emote_message.json b/examples/spawn-and-move/manifests/dev/abis/deployments/models/dojo_examples_models_message.json similarity index 90% rename from examples/spawn-and-move/manifests/dev/abis/deployments/models/dojo_examples_models_emote_message.json rename to examples/spawn-and-move/manifests/dev/abis/deployments/models/dojo_examples_models_message.json index 9c63d0fc5d..ec760c99fb 100644 --- a/examples/spawn-and-move/manifests/dev/abis/deployments/models/dojo_examples_models_emote_message.json +++ b/examples/spawn-and-move/manifests/dev/abis/deployments/models/dojo_examples_models_message.json @@ -319,52 +319,34 @@ }, { "type": "impl", - "name": "emote_messageImpl", - "interface_name": "dojo_examples::models::Iemote_message" - }, - { - "type": "enum", - "name": "dojo_examples::models::Emote", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Happy", - "type": "()" - }, - { - "name": "Sad", - "type": "()" - }, - { - "name": "Angry", - "type": "()" - }, - { - "name": "Love", - "type": "()" - } - ] + "name": "messageImpl", + "interface_name": "dojo_examples::models::Imessage" }, { "type": "struct", - "name": "dojo_examples::models::EmoteMessage", + "name": "dojo_examples::models::Message", "members": [ { "name": "identity", "type": "core::starknet::contract_address::ContractAddress" }, { - "name": "emote", - "type": "dojo_examples::models::Emote" + "name": "channel", + "type": "core::felt252" + }, + { + "name": "message", + "type": "core::byte_array::ByteArray" + }, + { + "name": "salt", + "type": "core::felt252" } ] }, { "type": "interface", - "name": "dojo_examples::models::Iemote_message", + "name": "dojo_examples::models::Imessage", "items": [ { "type": "function", @@ -372,7 +354,7 @@ "inputs": [ { "name": "model", - "type": "dojo_examples::models::EmoteMessage" + "type": "dojo_examples::models::Message" } ], "outputs": [], @@ -382,7 +364,7 @@ }, { "type": "event", - "name": "dojo_examples::models::emote_message::Event", + "name": "dojo_examples::models::message::Event", "kind": "enum", "variants": [] } diff --git a/examples/spawn-and-move/manifests/dev/base/dojo_world_world.toml b/examples/spawn-and-move/manifests/dev/base/dojo_world_world.toml index f80ccef0d2..2555ec3eda 100644 --- a/examples/spawn-and-move/manifests/dev/base/dojo_world_world.toml +++ b/examples/spawn-and-move/manifests/dev/base/dojo_world_world.toml @@ -1,5 +1,5 @@ kind = "Class" -class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" -original_class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" +class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" +original_class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" abi = "manifests/dev/abis/base/dojo_world_world.json" name = "dojo::world::world" diff --git a/examples/spawn-and-move/manifests/dev/base/models/dojo_examples_models_emote_message.toml b/examples/spawn-and-move/manifests/dev/base/models/dojo_examples_models_emote_message.toml deleted file mode 100644 index 3dfeddaf7b..0000000000 --- a/examples/spawn-and-move/manifests/dev/base/models/dojo_examples_models_emote_message.toml +++ /dev/null @@ -1,15 +0,0 @@ -kind = "DojoModel" -class_hash = "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5" -original_class_hash = "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5" -abi = "manifests/dev/abis/base/models/dojo_examples_models_emote_message.json" -name = "dojo_examples::models::emote_message" - -[[members]] -name = "identity" -type = "ContractAddress" -key = true - -[[members]] -name = "emote" -type = "Emote" -key = false diff --git a/examples/spawn-and-move/manifests/dev/base/models/dojo_examples_models_message.toml b/examples/spawn-and-move/manifests/dev/base/models/dojo_examples_models_message.toml new file mode 100644 index 0000000000..15ad89aace --- /dev/null +++ b/examples/spawn-and-move/manifests/dev/base/models/dojo_examples_models_message.toml @@ -0,0 +1,25 @@ +kind = "DojoModel" +class_hash = "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5" +original_class_hash = "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5" +abi = "manifests/dev/abis/base/models/dojo_examples_models_message.json" +name = "dojo_examples::models::message" + +[[members]] +name = "identity" +type = "ContractAddress" +key = true + +[[members]] +name = "channel" +type = "felt252" +key = true + +[[members]] +name = "message" +type = "ByteArray" +key = false + +[[members]] +name = "salt" +type = "felt252" +key = true diff --git a/examples/spawn-and-move/manifests/dev/manifest.json b/examples/spawn-and-move/manifests/dev/manifest.json index 979c012436..eb4b1821cf 100644 --- a/examples/spawn-and-move/manifests/dev/manifest.json +++ b/examples/spawn-and-move/manifests/dev/manifest.json @@ -1,8 +1,8 @@ { "world": { "kind": "WorldContract", - "class_hash": "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f", - "original_class_hash": "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f", + "class_hash": "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9", + "original_class_hash": "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9", "abi": [ { "type": "impl", @@ -560,6 +560,10 @@ { "name": "program_output", "type": "dojo::interfaces::ProgramOutput" + }, + { + "name": "program_hash", + "type": "core::felt252" } ], "outputs": [], @@ -578,7 +582,7 @@ "items": [ { "type": "function", - "name": "set_program_hash", + "name": "set_differ_program_hash", "inputs": [ { "name": "program_hash", @@ -590,7 +594,30 @@ }, { "type": "function", - "name": "get_program_hash", + "name": "set_merger_program_hash", + "inputs": [ + { + "name": "program_hash", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "get_differ_program_hash", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_merger_program_hash", "inputs": [], "outputs": [ { @@ -836,7 +863,19 @@ }, { "type": "event", - "name": "dojo::config::component::Config::ProgramHashUpdate", + "name": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "struct", + "members": [ + { + "name": "program_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "struct", "members": [ { @@ -864,8 +903,13 @@ "kind": "enum", "variants": [ { - "name": "ProgramHashUpdate", - "type": "dojo::config::component::Config::ProgramHashUpdate", + "name": "DifferProgramHashUpdate", + "type": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "nested" + }, + { + "name": "MergerProgramHashUpdate", + "type": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "nested" }, { @@ -955,8 +999,8 @@ ] } ], - "address": "0x2e31cfde9f9990c7fe44b25043e3c6958a849c0a66ab535686d2b710e97f309", - "transaction_hash": "0x7106054ad5c4ccfcd5e512d286ce7cadc5ddc21b8cf058e4daab09743bace76", + "address": "0x7efebb0c2d4cc285d48a97a7174def3be7fdd6b7bd29cca758fa2e17e03ef30", + "transaction_hash": "0x60316eb232789f4d8352c6afdc36b76d33362d72b43bf78183b43f196779a9d", "block_number": 3, "seed": "dojo_examples", "metadata": { @@ -975,7 +1019,7 @@ "contracts": [ { "kind": "DojoContract", - "address": "0x263f89fc2bdf121a3bdcc9af35eb6b3d5c078f9bcc257e9f5627af81a7607fd", + "address": "0x5c70a663d6b48d8e4c6aaa9572e3735a732ac3765700d470463e670587852af", "class_hash": "0x6d905953360cf18e3393d128c6ced40b38fc83b033412c8541fd4aba59d2767", "original_class_hash": "0x6d905953360cf18e3393d128c6ced40b38fc83b033412c8541fd4aba59d2767", "base_class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", @@ -1280,7 +1324,7 @@ }, { "kind": "DojoContract", - "address": "0x5e8f40cd8985288dfdb3698a5bd42dc50db0a3760b1dec7047d28362405562e", + "address": "0x75961b2027c52948ecebfd347aa427436ea308d41997fa9b3c98380f7011d53", "class_hash": "0x5c32bc974f96f82ded691bb95bf26b2783f874fffb50fe84a331acb75ecf5b2", "original_class_hash": "0x5c32bc974f96f82ded691bb95bf26b2783f874fffb50fe84a331acb75ecf5b2", "base_class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", @@ -1425,7 +1469,7 @@ }, { "kind": "DojoContract", - "address": "0x2dc27292cc94aa40e4d2d327e511ce02e96f40ca3c41d1f9938860a1a4aee9f", + "address": "0x3f51cd82daaf5907d2fd082ae3f45ae2ef96ab61677f46abc16e0a54d3392d1", "class_hash": "0x3ee016157303a7ce35a9fecdb5b8519159df620c5780527d61443636aaa3c3a", "original_class_hash": "0x3ee016157303a7ce35a9fecdb5b8519159df620c5780527d61443636aaa3c3a", "base_class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", @@ -2003,13 +2047,23 @@ "key": true }, { - "name": "emote", - "type": "Emote", + "name": "channel", + "type": "felt252", + "key": true + }, + { + "name": "message", + "type": "ByteArray", "key": false + }, + { + "name": "salt", + "type": "felt252", + "key": true } ], - "class_hash": "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5", - "original_class_hash": "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5", + "class_hash": "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5", + "original_class_hash": "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5", "abi": [ { "type": "impl", @@ -2331,52 +2385,34 @@ }, { "type": "impl", - "name": "emote_messageImpl", - "interface_name": "dojo_examples::models::Iemote_message" - }, - { - "type": "enum", - "name": "dojo_examples::models::Emote", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Happy", - "type": "()" - }, - { - "name": "Sad", - "type": "()" - }, - { - "name": "Angry", - "type": "()" - }, - { - "name": "Love", - "type": "()" - } - ] + "name": "messageImpl", + "interface_name": "dojo_examples::models::Imessage" }, { "type": "struct", - "name": "dojo_examples::models::EmoteMessage", + "name": "dojo_examples::models::Message", "members": [ { "name": "identity", "type": "core::starknet::contract_address::ContractAddress" }, { - "name": "emote", - "type": "dojo_examples::models::Emote" + "name": "channel", + "type": "core::felt252" + }, + { + "name": "message", + "type": "core::byte_array::ByteArray" + }, + { + "name": "salt", + "type": "core::felt252" } ] }, { "type": "interface", - "name": "dojo_examples::models::Iemote_message", + "name": "dojo_examples::models::Imessage", "items": [ { "type": "function", @@ -2384,7 +2420,7 @@ "inputs": [ { "name": "model", - "type": "dojo_examples::models::EmoteMessage" + "type": "dojo_examples::models::Message" } ], "outputs": [], @@ -2394,12 +2430,12 @@ }, { "type": "event", - "name": "dojo_examples::models::emote_message::Event", + "name": "dojo_examples::models::message::Event", "kind": "enum", "variants": [] } ], - "name": "dojo_examples::models::emote_message" + "name": "dojo_examples::models::message" }, { "kind": "DojoModel", diff --git a/examples/spawn-and-move/manifests/dev/manifest.toml b/examples/spawn-and-move/manifests/dev/manifest.toml index 5e1d0430a8..6bbf881ab9 100644 --- a/examples/spawn-and-move/manifests/dev/manifest.toml +++ b/examples/spawn-and-move/manifests/dev/manifest.toml @@ -1,10 +1,10 @@ [world] kind = "WorldContract" -class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" -original_class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" +class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" +original_class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" abi = "manifests/dev/abis/deployments/dojo_world_world.json" -address = "0x2e31cfde9f9990c7fe44b25043e3c6958a849c0a66ab535686d2b710e97f309" -transaction_hash = "0x7106054ad5c4ccfcd5e512d286ce7cadc5ddc21b8cf058e4daab09743bace76" +address = "0x7efebb0c2d4cc285d48a97a7174def3be7fdd6b7bd29cca758fa2e17e03ef30" +transaction_hash = "0x60316eb232789f4d8352c6afdc36b76d33362d72b43bf78183b43f196779a9d" block_number = 3 seed = "dojo_examples" name = "dojo::world::world" @@ -21,7 +21,7 @@ name = "dojo::base::base" [[contracts]] kind = "DojoContract" -address = "0x263f89fc2bdf121a3bdcc9af35eb6b3d5c078f9bcc257e9f5627af81a7607fd" +address = "0x5c70a663d6b48d8e4c6aaa9572e3735a732ac3765700d470463e670587852af" class_hash = "0x6d905953360cf18e3393d128c6ced40b38fc83b033412c8541fd4aba59d2767" original_class_hash = "0x6d905953360cf18e3393d128c6ced40b38fc83b033412c8541fd4aba59d2767" base_class_hash = "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46" @@ -37,7 +37,7 @@ name = "dojo_examples::actions::actions" [[contracts]] kind = "DojoContract" -address = "0x5e8f40cd8985288dfdb3698a5bd42dc50db0a3760b1dec7047d28362405562e" +address = "0x75961b2027c52948ecebfd347aa427436ea308d41997fa9b3c98380f7011d53" class_hash = "0x5c32bc974f96f82ded691bb95bf26b2783f874fffb50fe84a331acb75ecf5b2" original_class_hash = "0x5c32bc974f96f82ded691bb95bf26b2783f874fffb50fe84a331acb75ecf5b2" base_class_hash = "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46" @@ -50,7 +50,7 @@ name = "dojo_examples::mock_token::mock_token" [[contracts]] kind = "DojoContract" -address = "0x2dc27292cc94aa40e4d2d327e511ce02e96f40ca3c41d1f9938860a1a4aee9f" +address = "0x3f51cd82daaf5907d2fd082ae3f45ae2ef96ab61677f46abc16e0a54d3392d1" class_hash = "0x3ee016157303a7ce35a9fecdb5b8519159df620c5780527d61443636aaa3c3a" original_class_hash = "0x3ee016157303a7ce35a9fecdb5b8519159df620c5780527d61443636aaa3c3a" base_class_hash = "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46" @@ -84,10 +84,10 @@ key = false [[models]] kind = "DojoModel" -class_hash = "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5" -original_class_hash = "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5" -abi = "manifests/dev/abis/deployments/models/dojo_examples_models_emote_message.json" -name = "dojo_examples::models::emote_message" +class_hash = "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5" +original_class_hash = "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5" +abi = "manifests/dev/abis/deployments/models/dojo_examples_models_message.json" +name = "dojo_examples::models::message" [[models.members]] name = "identity" @@ -95,10 +95,20 @@ type = "ContractAddress" key = true [[models.members]] -name = "emote" -type = "Emote" +name = "channel" +type = "felt252" +key = true + +[[models.members]] +name = "message" +type = "ByteArray" key = false +[[models.members]] +name = "salt" +type = "felt252" +key = true + [[models]] kind = "DojoModel" class_hash = "0x6a21c56878ba470ac7a51f336ca6a59781de38e1810d2d20866ab2b52138a6d" diff --git a/examples/spawn-and-move/manifests/dev/overlays/contracts/dojo_examples_actions_actions.toml b/examples/spawn-and-move/manifests/dev/overlays/contracts/dojo_examples_actions_actions.toml index a8e2fd4c2d..b21fc1adec 100644 --- a/examples/spawn-and-move/manifests/dev/overlays/contracts/dojo_examples_actions_actions.toml +++ b/examples/spawn-and-move/manifests/dev/overlays/contracts/dojo_examples_actions_actions.toml @@ -1,6 +1,4 @@ -computed = [ ] name = "dojo_examples::actions::actions" -reads = [ ] -writes = [ "Moves", "Position" ] +reads = [] +writes = ["Moves", "Position"] init_calldata = [] - diff --git a/examples/spawn-and-move/manifests/dev/overlays/contracts/dojo_examples_others_others.toml b/examples/spawn-and-move/manifests/dev/overlays/contracts/dojo_examples_others_others.toml index b74df0c8fe..129f942bd8 100644 --- a/examples/spawn-and-move/manifests/dev/overlays/contracts/dojo_examples_others_others.toml +++ b/examples/spawn-and-move/manifests/dev/overlays/contracts/dojo_examples_others_others.toml @@ -1,5 +1,4 @@ +name = "dojo_examples::others::others" reads = [] writes = [] -computed = [] init_calldata = ["$contract_address:dojo_examples::actions::actions", "$class_hash:dojo_examples::actions::actions", "10"] -name = "dojo_examples::others::others" diff --git a/examples/spawn-and-move/manifests/dev/overlays/dojo_base_base.toml b/examples/spawn-and-move/manifests/dev/overlays/dojo_base_base.toml new file mode 100644 index 0000000000..f706470d45 --- /dev/null +++ b/examples/spawn-and-move/manifests/dev/overlays/dojo_base_base.toml @@ -0,0 +1 @@ +name = "dojo::base::base" diff --git a/examples/spawn-and-move/manifests/dev/overlays/dojo_world_world.toml b/examples/spawn-and-move/manifests/dev/overlays/dojo_world_world.toml new file mode 100644 index 0000000000..a3e686e3ef --- /dev/null +++ b/examples/spawn-and-move/manifests/dev/overlays/dojo_world_world.toml @@ -0,0 +1 @@ +name = "dojo::world::world" diff --git a/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_actions_actions_moved.toml b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_actions_actions_moved.toml new file mode 100644 index 0000000000..4958a7a15c --- /dev/null +++ b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_actions_actions_moved.toml @@ -0,0 +1 @@ +name = "dojo_examples::actions::actions::moved" diff --git a/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_emote_message.toml b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_emote_message.toml new file mode 100644 index 0000000000..d60162cc72 --- /dev/null +++ b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_emote_message.toml @@ -0,0 +1 @@ +name = "dojo_examples::models::emote_message" diff --git a/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_moves.toml b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_moves.toml new file mode 100644 index 0000000000..dc8784e746 --- /dev/null +++ b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_moves.toml @@ -0,0 +1 @@ +name = "dojo_examples::models::moves" diff --git a/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_player_config.toml b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_player_config.toml new file mode 100644 index 0000000000..6af8240b36 --- /dev/null +++ b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_player_config.toml @@ -0,0 +1 @@ +name = "dojo_examples::models::player_config" diff --git a/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_position.toml b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_position.toml new file mode 100644 index 0000000000..df38e71c32 --- /dev/null +++ b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_models_position.toml @@ -0,0 +1 @@ +name = "dojo_examples::models::position" diff --git a/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_others_others_contract_initialized.toml b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_others_others_contract_initialized.toml new file mode 100644 index 0000000000..f8f3053fe5 --- /dev/null +++ b/examples/spawn-and-move/manifests/dev/overlays/models/dojo_examples_others_others_contract_initialized.toml @@ -0,0 +1 @@ +name = "dojo_examples::others::others::contract_initialized" diff --git a/examples/spawn-and-move/manifests/release/abis/base/dojo_world_world.json b/examples/spawn-and-move/manifests/release/abis/base/dojo_world_world.json index 63207ddec9..c1a2447839 100644 --- a/examples/spawn-and-move/manifests/release/abis/base/dojo_world_world.json +++ b/examples/spawn-and-move/manifests/release/abis/base/dojo_world_world.json @@ -555,6 +555,10 @@ { "name": "program_output", "type": "dojo::interfaces::ProgramOutput" + }, + { + "name": "program_hash", + "type": "core::felt252" } ], "outputs": [], @@ -573,7 +577,19 @@ "items": [ { "type": "function", - "name": "set_program_hash", + "name": "set_differ_program_hash", + "inputs": [ + { + "name": "program_hash", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_merger_program_hash", "inputs": [ { "name": "program_hash", @@ -585,7 +601,18 @@ }, { "type": "function", - "name": "get_program_hash", + "name": "get_differ_program_hash", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_merger_program_hash", "inputs": [], "outputs": [ { @@ -831,7 +858,19 @@ }, { "type": "event", - "name": "dojo::config::component::Config::ProgramHashUpdate", + "name": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "struct", + "members": [ + { + "name": "program_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "struct", "members": [ { @@ -859,8 +898,13 @@ "kind": "enum", "variants": [ { - "name": "ProgramHashUpdate", - "type": "dojo::config::component::Config::ProgramHashUpdate", + "name": "DifferProgramHashUpdate", + "type": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "nested" + }, + { + "name": "MergerProgramHashUpdate", + "type": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "nested" }, { diff --git a/examples/spawn-and-move/manifests/release/abis/base/models/dojo_examples_models_emote_message.json b/examples/spawn-and-move/manifests/release/abis/base/models/dojo_examples_models_message.json similarity index 90% rename from examples/spawn-and-move/manifests/release/abis/base/models/dojo_examples_models_emote_message.json rename to examples/spawn-and-move/manifests/release/abis/base/models/dojo_examples_models_message.json index 9c63d0fc5d..ec760c99fb 100644 --- a/examples/spawn-and-move/manifests/release/abis/base/models/dojo_examples_models_emote_message.json +++ b/examples/spawn-and-move/manifests/release/abis/base/models/dojo_examples_models_message.json @@ -319,52 +319,34 @@ }, { "type": "impl", - "name": "emote_messageImpl", - "interface_name": "dojo_examples::models::Iemote_message" - }, - { - "type": "enum", - "name": "dojo_examples::models::Emote", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Happy", - "type": "()" - }, - { - "name": "Sad", - "type": "()" - }, - { - "name": "Angry", - "type": "()" - }, - { - "name": "Love", - "type": "()" - } - ] + "name": "messageImpl", + "interface_name": "dojo_examples::models::Imessage" }, { "type": "struct", - "name": "dojo_examples::models::EmoteMessage", + "name": "dojo_examples::models::Message", "members": [ { "name": "identity", "type": "core::starknet::contract_address::ContractAddress" }, { - "name": "emote", - "type": "dojo_examples::models::Emote" + "name": "channel", + "type": "core::felt252" + }, + { + "name": "message", + "type": "core::byte_array::ByteArray" + }, + { + "name": "salt", + "type": "core::felt252" } ] }, { "type": "interface", - "name": "dojo_examples::models::Iemote_message", + "name": "dojo_examples::models::Imessage", "items": [ { "type": "function", @@ -372,7 +354,7 @@ "inputs": [ { "name": "model", - "type": "dojo_examples::models::EmoteMessage" + "type": "dojo_examples::models::Message" } ], "outputs": [], @@ -382,7 +364,7 @@ }, { "type": "event", - "name": "dojo_examples::models::emote_message::Event", + "name": "dojo_examples::models::message::Event", "kind": "enum", "variants": [] } diff --git a/examples/spawn-and-move/manifests/release/abis/deployments/dojo_world_world.json b/examples/spawn-and-move/manifests/release/abis/deployments/dojo_world_world.json index 63207ddec9..c1a2447839 100644 --- a/examples/spawn-and-move/manifests/release/abis/deployments/dojo_world_world.json +++ b/examples/spawn-and-move/manifests/release/abis/deployments/dojo_world_world.json @@ -555,6 +555,10 @@ { "name": "program_output", "type": "dojo::interfaces::ProgramOutput" + }, + { + "name": "program_hash", + "type": "core::felt252" } ], "outputs": [], @@ -573,7 +577,19 @@ "items": [ { "type": "function", - "name": "set_program_hash", + "name": "set_differ_program_hash", + "inputs": [ + { + "name": "program_hash", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_merger_program_hash", "inputs": [ { "name": "program_hash", @@ -585,7 +601,18 @@ }, { "type": "function", - "name": "get_program_hash", + "name": "get_differ_program_hash", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_merger_program_hash", "inputs": [], "outputs": [ { @@ -831,7 +858,19 @@ }, { "type": "event", - "name": "dojo::config::component::Config::ProgramHashUpdate", + "name": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "struct", + "members": [ + { + "name": "program_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "struct", "members": [ { @@ -859,8 +898,13 @@ "kind": "enum", "variants": [ { - "name": "ProgramHashUpdate", - "type": "dojo::config::component::Config::ProgramHashUpdate", + "name": "DifferProgramHashUpdate", + "type": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "nested" + }, + { + "name": "MergerProgramHashUpdate", + "type": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "nested" }, { diff --git a/examples/spawn-and-move/manifests/release/abis/deployments/models/dojo_examples_models_message.json b/examples/spawn-and-move/manifests/release/abis/deployments/models/dojo_examples_models_message.json new file mode 100644 index 0000000000..ec760c99fb --- /dev/null +++ b/examples/spawn-and-move/manifests/release/abis/deployments/models/dojo_examples_models_message.json @@ -0,0 +1,371 @@ +[ + { + "type": "impl", + "name": "DojoModelImpl", + "interface_name": "dojo::model::IModel" + }, + { + "type": "struct", + "name": "core::byte_array::ByteArray", + "members": [ + { + "name": "data", + "type": "core::array::Array::" + }, + { + "name": "pending_word", + "type": "core::felt252" + }, + { + "name": "pending_word_len", + "type": "core::integer::u32" + } + ] + }, + { + "type": "enum", + "name": "core::option::Option::", + "variants": [ + { + "name": "Some", + "type": "core::integer::u32" + }, + { + "name": "None", + "type": "()" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::FieldLayout", + "members": [ + { + "name": "selector", + "type": "core::felt252" + }, + { + "name": "layout", + "type": "dojo::database::introspect::Layout" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Layout", + "variants": [ + { + "name": "Fixed", + "type": "core::array::Span::" + }, + { + "name": "Struct", + "type": "core::array::Span::" + }, + { + "name": "Tuple", + "type": "core::array::Span::" + }, + { + "name": "Array", + "type": "core::array::Span::" + }, + { + "name": "ByteArray", + "type": "()" + }, + { + "name": "Enum", + "type": "core::array::Span::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Member", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "ty", + "type": "dojo::database::introspect::Ty" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Struct", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::<(core::felt252, dojo::database::introspect::Ty)>", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::<(core::felt252, dojo::database::introspect::Ty)>" + } + ] + }, + { + "type": "struct", + "name": "dojo::database::introspect::Enum", + "members": [ + { + "name": "name", + "type": "core::felt252" + }, + { + "name": "attrs", + "type": "core::array::Span::" + }, + { + "name": "children", + "type": "core::array::Span::<(core::felt252, dojo::database::introspect::Ty)>" + } + ] + }, + { + "type": "struct", + "name": "core::array::Span::", + "members": [ + { + "name": "snapshot", + "type": "@core::array::Array::" + } + ] + }, + { + "type": "enum", + "name": "dojo::database::introspect::Ty", + "variants": [ + { + "name": "Primitive", + "type": "core::felt252" + }, + { + "name": "Struct", + "type": "dojo::database::introspect::Struct" + }, + { + "name": "Enum", + "type": "dojo::database::introspect::Enum" + }, + { + "name": "Tuple", + "type": "core::array::Span::" + }, + { + "name": "Array", + "type": "core::array::Span::" + }, + { + "name": "ByteArray", + "type": "()" + } + ] + }, + { + "type": "interface", + "name": "dojo::model::IModel", + "items": [ + { + "type": "function", + "name": "selector", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "name", + "inputs": [], + "outputs": [ + { + "type": "core::byte_array::ByteArray" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "version", + "inputs": [], + "outputs": [ + { + "type": "core::integer::u8" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "unpacked_size", + "inputs": [], + "outputs": [ + { + "type": "core::option::Option::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "packed_size", + "inputs": [], + "outputs": [ + { + "type": "core::option::Option::" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "layout", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Layout" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "schema", + "inputs": [], + "outputs": [ + { + "type": "dojo::database::introspect::Ty" + } + ], + "state_mutability": "view" + } + ] + }, + { + "type": "impl", + "name": "messageImpl", + "interface_name": "dojo_examples::models::Imessage" + }, + { + "type": "struct", + "name": "dojo_examples::models::Message", + "members": [ + { + "name": "identity", + "type": "core::starknet::contract_address::ContractAddress" + }, + { + "name": "channel", + "type": "core::felt252" + }, + { + "name": "message", + "type": "core::byte_array::ByteArray" + }, + { + "name": "salt", + "type": "core::felt252" + } + ] + }, + { + "type": "interface", + "name": "dojo_examples::models::Imessage", + "items": [ + { + "type": "function", + "name": "ensure_abi", + "inputs": [ + { + "name": "model", + "type": "dojo_examples::models::Message" + } + ], + "outputs": [], + "state_mutability": "view" + } + ] + }, + { + "type": "event", + "name": "dojo_examples::models::message::Event", + "kind": "enum", + "variants": [] + } +] \ No newline at end of file diff --git a/examples/spawn-and-move/manifests/release/base/dojo_world_world.toml b/examples/spawn-and-move/manifests/release/base/dojo_world_world.toml index 61e0751013..e9badcfe4c 100644 --- a/examples/spawn-and-move/manifests/release/base/dojo_world_world.toml +++ b/examples/spawn-and-move/manifests/release/base/dojo_world_world.toml @@ -1,5 +1,5 @@ kind = "Class" -class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" -original_class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" +class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" +original_class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" abi = "manifests/release/abis/base/dojo_world_world.json" name = "dojo::world::world" diff --git a/examples/spawn-and-move/manifests/release/base/models/dojo_examples_models_emote_message.toml b/examples/spawn-and-move/manifests/release/base/models/dojo_examples_models_emote_message.toml deleted file mode 100644 index 4fa726023f..0000000000 --- a/examples/spawn-and-move/manifests/release/base/models/dojo_examples_models_emote_message.toml +++ /dev/null @@ -1,15 +0,0 @@ -kind = "DojoModel" -class_hash = "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5" -original_class_hash = "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5" -abi = "manifests/release/abis/base/models/dojo_examples_models_emote_message.json" -name = "dojo_examples::models::emote_message" - -[[members]] -name = "identity" -type = "ContractAddress" -key = true - -[[members]] -name = "emote" -type = "Emote" -key = false diff --git a/examples/spawn-and-move/manifests/release/base/models/dojo_examples_models_message.toml b/examples/spawn-and-move/manifests/release/base/models/dojo_examples_models_message.toml new file mode 100644 index 0000000000..fdc87b27cb --- /dev/null +++ b/examples/spawn-and-move/manifests/release/base/models/dojo_examples_models_message.toml @@ -0,0 +1,25 @@ +kind = "DojoModel" +class_hash = "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5" +original_class_hash = "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5" +abi = "manifests/release/abis/base/models/dojo_examples_models_message.json" +name = "dojo_examples::models::message" + +[[members]] +name = "identity" +type = "ContractAddress" +key = true + +[[members]] +name = "channel" +type = "felt252" +key = true + +[[members]] +name = "message" +type = "ByteArray" +key = false + +[[members]] +name = "salt" +type = "felt252" +key = true diff --git a/examples/spawn-and-move/manifests/release/manifest.json b/examples/spawn-and-move/manifests/release/manifest.json index 627f6d17b8..8ae464adc9 100644 --- a/examples/spawn-and-move/manifests/release/manifest.json +++ b/examples/spawn-and-move/manifests/release/manifest.json @@ -1,8 +1,8 @@ { "world": { "kind": "WorldContract", - "class_hash": "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f", - "original_class_hash": "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f", + "class_hash": "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9", + "original_class_hash": "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9", "abi": [ { "type": "impl", @@ -560,6 +560,10 @@ { "name": "program_output", "type": "dojo::interfaces::ProgramOutput" + }, + { + "name": "program_hash", + "type": "core::felt252" } ], "outputs": [], @@ -578,7 +582,19 @@ "items": [ { "type": "function", - "name": "set_program_hash", + "name": "set_differ_program_hash", + "inputs": [ + { + "name": "program_hash", + "type": "core::felt252" + } + ], + "outputs": [], + "state_mutability": "external" + }, + { + "type": "function", + "name": "set_merger_program_hash", "inputs": [ { "name": "program_hash", @@ -590,7 +606,18 @@ }, { "type": "function", - "name": "get_program_hash", + "name": "get_differ_program_hash", + "inputs": [], + "outputs": [ + { + "type": "core::felt252" + } + ], + "state_mutability": "view" + }, + { + "type": "function", + "name": "get_merger_program_hash", "inputs": [], "outputs": [ { @@ -836,7 +863,19 @@ }, { "type": "event", - "name": "dojo::config::component::Config::ProgramHashUpdate", + "name": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "struct", + "members": [ + { + "name": "program_hash", + "type": "core::felt252", + "kind": "data" + } + ] + }, + { + "type": "event", + "name": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "struct", "members": [ { @@ -864,8 +903,13 @@ "kind": "enum", "variants": [ { - "name": "ProgramHashUpdate", - "type": "dojo::config::component::Config::ProgramHashUpdate", + "name": "DifferProgramHashUpdate", + "type": "dojo::config::component::Config::DifferProgramHashUpdate", + "kind": "nested" + }, + { + "name": "MergerProgramHashUpdate", + "type": "dojo::config::component::Config::MergerProgramHashUpdate", "kind": "nested" }, { @@ -955,8 +999,8 @@ ] } ], - "address": "0x2e31cfde9f9990c7fe44b25043e3c6958a849c0a66ab535686d2b710e97f309", - "transaction_hash": "0x7106054ad5c4ccfcd5e512d286ce7cadc5ddc21b8cf058e4daab09743bace76", + "address": "0x7efebb0c2d4cc285d48a97a7174def3be7fdd6b7bd29cca758fa2e17e03ef30", + "transaction_hash": "0x60316eb232789f4d8352c6afdc36b76d33362d72b43bf78183b43f196779a9d", "block_number": 3, "seed": "dojo_examples", "metadata": { @@ -975,10 +1019,10 @@ "contracts": [ { "kind": "DojoContract", - "address": null, + "address": "0x5c70a663d6b48d8e4c6aaa9572e3735a732ac3765700d470463e670587852af", "class_hash": "0x6d905953360cf18e3393d128c6ced40b38fc83b033412c8541fd4aba59d2767", "original_class_hash": "0x6d905953360cf18e3393d128c6ced40b38fc83b033412c8541fd4aba59d2767", - "base_class_hash": "0x0", + "base_class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", "abi": [ { "type": "impl", @@ -1270,17 +1314,20 @@ } ], "reads": [], - "writes": [], + "writes": [ + "Moves", + "Position" + ], "computed": [], "init_calldata": [], "name": "dojo_examples::actions::actions" }, { "kind": "DojoContract", - "address": null, + "address": "0x3f51cd82daaf5907d2fd082ae3f45ae2ef96ab61677f46abc16e0a54d3392d1", "class_hash": "0x3ee016157303a7ce35a9fecdb5b8519159df620c5780527d61443636aaa3c3a", "original_class_hash": "0x3ee016157303a7ce35a9fecdb5b8519159df620c5780527d61443636aaa3c3a", - "base_class_hash": "0x0", + "base_class_hash": "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46", "abi": [ { "type": "impl", @@ -1430,7 +1477,11 @@ "reads": [], "writes": [], "computed": [], - "init_calldata": [], + "init_calldata": [ + "$class_hash:dojo_examples::actions::actions", + "$contract_address:dojo_examples::actions::actions", + "10" + ], "name": "dojo_examples::others::others" } ], @@ -1851,13 +1902,23 @@ "key": true }, { - "name": "emote", - "type": "Emote", + "name": "channel", + "type": "felt252", + "key": true + }, + { + "name": "message", + "type": "ByteArray", "key": false + }, + { + "name": "salt", + "type": "felt252", + "key": true } ], - "class_hash": "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5", - "original_class_hash": "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5", + "class_hash": "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5", + "original_class_hash": "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5", "abi": [ { "type": "impl", @@ -2179,52 +2240,34 @@ }, { "type": "impl", - "name": "emote_messageImpl", - "interface_name": "dojo_examples::models::Iemote_message" - }, - { - "type": "enum", - "name": "dojo_examples::models::Emote", - "variants": [ - { - "name": "None", - "type": "()" - }, - { - "name": "Happy", - "type": "()" - }, - { - "name": "Sad", - "type": "()" - }, - { - "name": "Angry", - "type": "()" - }, - { - "name": "Love", - "type": "()" - } - ] + "name": "messageImpl", + "interface_name": "dojo_examples::models::Imessage" }, { "type": "struct", - "name": "dojo_examples::models::EmoteMessage", + "name": "dojo_examples::models::Message", "members": [ { "name": "identity", "type": "core::starknet::contract_address::ContractAddress" }, { - "name": "emote", - "type": "dojo_examples::models::Emote" + "name": "channel", + "type": "core::felt252" + }, + { + "name": "message", + "type": "core::byte_array::ByteArray" + }, + { + "name": "salt", + "type": "core::felt252" } ] }, { "type": "interface", - "name": "dojo_examples::models::Iemote_message", + "name": "dojo_examples::models::Imessage", "items": [ { "type": "function", @@ -2232,7 +2275,7 @@ "inputs": [ { "name": "model", - "type": "dojo_examples::models::EmoteMessage" + "type": "dojo_examples::models::Message" } ], "outputs": [], @@ -2242,12 +2285,12 @@ }, { "type": "event", - "name": "dojo_examples::models::emote_message::Event", + "name": "dojo_examples::models::message::Event", "kind": "enum", "variants": [] } ], - "name": "dojo_examples::models::emote_message" + "name": "dojo_examples::models::message" }, { "kind": "DojoModel", diff --git a/examples/spawn-and-move/manifests/release/manifest.toml b/examples/spawn-and-move/manifests/release/manifest.toml index c3decaa30a..71ebf9944e 100644 --- a/examples/spawn-and-move/manifests/release/manifest.toml +++ b/examples/spawn-and-move/manifests/release/manifest.toml @@ -1,10 +1,10 @@ [world] kind = "WorldContract" -class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" -original_class_hash = "0xf6f44afb3cacbcc01a371aff62c86ca9a45feba065424c99f7cd8637514d8f" +class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" +original_class_hash = "0x3f63cecdc4964acafb921ba2934c6507d1b3c344edb64c2762cf08053169ab9" abi = "manifests/release/abis/deployments/dojo_world_world.json" -address = "0x2e31cfde9f9990c7fe44b25043e3c6958a849c0a66ab535686d2b710e97f309" -transaction_hash = "0x7106054ad5c4ccfcd5e512d286ce7cadc5ddc21b8cf058e4daab09743bace76" +address = "0x7efebb0c2d4cc285d48a97a7174def3be7fdd6b7bd29cca758fa2e17e03ef30" +transaction_hash = "0x60316eb232789f4d8352c6afdc36b76d33362d72b43bf78183b43f196779a9d" block_number = 3 seed = "dojo_examples" name = "dojo::world::world" @@ -21,26 +21,35 @@ name = "dojo::base::base" [[contracts]] kind = "DojoContract" +address = "0x5c70a663d6b48d8e4c6aaa9572e3735a732ac3765700d470463e670587852af" class_hash = "0x6d905953360cf18e3393d128c6ced40b38fc83b033412c8541fd4aba59d2767" original_class_hash = "0x6d905953360cf18e3393d128c6ced40b38fc83b033412c8541fd4aba59d2767" -base_class_hash = "0x0" +base_class_hash = "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46" abi = "manifests/release/abis/deployments/contracts/dojo_examples_actions_actions.json" reads = [] -writes = [] +writes = [ + "Moves", + "Position", +] computed = [] init_calldata = [] name = "dojo_examples::actions::actions" [[contracts]] kind = "DojoContract" +address = "0x3f51cd82daaf5907d2fd082ae3f45ae2ef96ab61677f46abc16e0a54d3392d1" class_hash = "0x3ee016157303a7ce35a9fecdb5b8519159df620c5780527d61443636aaa3c3a" original_class_hash = "0x3ee016157303a7ce35a9fecdb5b8519159df620c5780527d61443636aaa3c3a" -base_class_hash = "0x0" +base_class_hash = "0x22f3e55b61d86c2ac5239fa3b3b8761f26b9a5c0b5f61ddbd5d756ced498b46" abi = "manifests/release/abis/deployments/contracts/dojo_examples_others_others.json" reads = [] writes = [] computed = [] -init_calldata = [] +init_calldata = [ + "$class_hash:dojo_examples::actions::actions", + "$contract_address:dojo_examples::actions::actions", + "10", +] name = "dojo_examples::others::others" [[models]] @@ -62,10 +71,10 @@ key = false [[models]] kind = "DojoModel" -class_hash = "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5" -original_class_hash = "0x6ec8bf0a073e509e5b442ee5d4bee75aa85b87671a110dff2b9e6a58cc2aaa5" -abi = "manifests/release/abis/deployments/models/dojo_examples_models_emote_message.json" -name = "dojo_examples::models::emote_message" +class_hash = "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5" +original_class_hash = "0x33bdb1a470ea0ee7d77faa3c75151934b3b129c0bad7333ec6c2dad1b98ec5" +abi = "manifests/release/abis/deployments/models/dojo_examples_models_message.json" +name = "dojo_examples::models::message" [[models.members]] name = "identity" @@ -73,10 +82,20 @@ type = "ContractAddress" key = true [[models.members]] -name = "emote" -type = "Emote" +name = "channel" +type = "felt252" +key = true + +[[models.members]] +name = "message" +type = "ByteArray" key = false +[[models.members]] +name = "salt" +type = "felt252" +key = true + [[models]] kind = "DojoModel" class_hash = "0x456d85286b34249fffa0a13d1ac490cc1f5b02eb1a1c92d820c59d6b0f2eaa8" diff --git a/examples/spawn-and-move/manifests/release/overlays/contracts/dojo_examples_actions_actions.toml b/examples/spawn-and-move/manifests/release/overlays/contracts/dojo_examples_actions_actions.toml new file mode 100644 index 0000000000..188130a013 --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/contracts/dojo_examples_actions_actions.toml @@ -0,0 +1,4 @@ +init_calldata = [ ] +name = "dojo_examples::actions::actions" +reads = [ ] +writes = [ "Moves", "Position" ] diff --git a/examples/spawn-and-move/manifests/release/overlays/contracts/dojo_examples_others_others.toml b/examples/spawn-and-move/manifests/release/overlays/contracts/dojo_examples_others_others.toml new file mode 100644 index 0000000000..82545bca81 --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/contracts/dojo_examples_others_others.toml @@ -0,0 +1,8 @@ +init_calldata = [ + "$class_hash:dojo_examples::actions::actions", + "$contract_address:dojo_examples::actions::actions", + "10", +] +name = "dojo_examples::others::others" +reads = [ ] +writes = [ ] diff --git a/examples/spawn-and-move/manifests/release/overlays/dojo_base_base.toml b/examples/spawn-and-move/manifests/release/overlays/dojo_base_base.toml new file mode 100644 index 0000000000..f706470d45 --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/dojo_base_base.toml @@ -0,0 +1 @@ +name = "dojo::base::base" diff --git a/examples/spawn-and-move/manifests/release/overlays/dojo_world_world.toml b/examples/spawn-and-move/manifests/release/overlays/dojo_world_world.toml new file mode 100644 index 0000000000..a3e686e3ef --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/dojo_world_world.toml @@ -0,0 +1 @@ +name = "dojo::world::world" diff --git a/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_actions_actions_moved.toml b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_actions_actions_moved.toml new file mode 100644 index 0000000000..4958a7a15c --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_actions_actions_moved.toml @@ -0,0 +1 @@ +name = "dojo_examples::actions::actions::moved" diff --git a/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_message.toml b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_message.toml new file mode 100644 index 0000000000..5d9412cae2 --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_message.toml @@ -0,0 +1 @@ +name = "dojo_examples::models::message" diff --git a/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_mock_token.toml b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_mock_token.toml new file mode 100644 index 0000000000..a5ba5684a6 --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_mock_token.toml @@ -0,0 +1 @@ +name = "dojo_examples::models::mock_token" diff --git a/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_moves.toml b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_moves.toml new file mode 100644 index 0000000000..dc8784e746 --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_moves.toml @@ -0,0 +1 @@ +name = "dojo_examples::models::moves" diff --git a/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_player_config.toml b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_player_config.toml new file mode 100644 index 0000000000..6af8240b36 --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_player_config.toml @@ -0,0 +1 @@ +name = "dojo_examples::models::player_config" diff --git a/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_position.toml b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_position.toml new file mode 100644 index 0000000000..df38e71c32 --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_models_position.toml @@ -0,0 +1 @@ +name = "dojo_examples::models::position" diff --git a/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_others_others_contract_initialized.toml b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_others_others_contract_initialized.toml new file mode 100644 index 0000000000..f8f3053fe5 --- /dev/null +++ b/examples/spawn-and-move/manifests/release/overlays/models/dojo_examples_others_others_contract_initialized.toml @@ -0,0 +1 @@ +name = "dojo_examples::others::others::contract_initialized" diff --git a/examples/spawn-and-move/src/models.cairo b/examples/spawn-and-move/src/models.cairo index 8c0c582f3b..85cfdf1711 100644 --- a/examples/spawn-and-move/src/models.cairo +++ b/examples/spawn-and-move/src/models.cairo @@ -21,21 +21,16 @@ impl DirectionIntoFelt252 of Into { } } -#[derive(Serde, Copy, Drop, Introspect)] -enum Emote { - None, - Happy, - Sad, - Angry, - Love, -} - -#[derive(Copy, Drop, Serde)] +#[derive(Drop, Serde)] #[dojo::model] -struct EmoteMessage { +struct Message { #[key] identity: ContractAddress, - emote: Emote, + #[key] + channel: felt252, + message: ByteArray, + #[key] + salt: felt252 } #[derive(Copy, Drop, Serde)]