diff --git a/crates/jstzd/src/task/octez_rollup.rs b/crates/jstzd/src/task/octez_rollup.rs index be44db578..cc205be99 100644 --- a/crates/jstzd/src/task/octez_rollup.rs +++ b/crates/jstzd/src/task/octez_rollup.rs @@ -11,6 +11,7 @@ use anyhow::{anyhow, Result}; use async_trait::async_trait; use octez::r#async::{ directory::Directory, + endpoint::Endpoint, rollup::{OctezRollupConfig, RollupDataDir}, }; use serde::Deserialize; @@ -23,6 +24,12 @@ pub struct OctezRollup { _data_dir: Arc, } +impl OctezRollup { + pub fn rpc_endpoint(&self) -> &Endpoint { + &self.config.rpc_endpoint + } +} + #[derive(Debug, Deserialize)] struct HealthCheckResponse { healthy: bool, diff --git a/crates/jstzd/tests/octez_baker_test.rs b/crates/jstzd/tests/octez_baker_test.rs index c9b367fe1..7434531db 100644 --- a/crates/jstzd/tests/octez_baker_test.rs +++ b/crates/jstzd/tests/octez_baker_test.rs @@ -4,7 +4,7 @@ use utils::{get_block_level, setup}; #[tokio::test(flavor = "multi_thread")] async fn test_baker() { - let (mut octez_node, _, mut baker) = setup().await; + let (mut octez_node, _, mut baker) = setup(None).await; let node_endpoint = octez_node.rpc_endpoint(); let _ = baker.kill().await; diff --git a/crates/jstzd/tests/octez_client_test.rs b/crates/jstzd/tests/octez_client_test.rs index 48f62aa89..bd0635f1c 100644 --- a/crates/jstzd/tests/octez_client_test.rs +++ b/crates/jstzd/tests/octez_client_test.rs @@ -3,7 +3,12 @@ use jstzd::task::Task; use octez::r#async::{ client::{OctezClientBuilder, Signature}, endpoint::Endpoint, + protocol::{ + BootstrapContract, BootstrapSmartRollup, ProtocolParameterBuilder, ReadWritable, + SmartRollupPvmKind, + }, }; +use serde::Deserialize; use serde_json::Value; use std::{ fs::{read_to_string, remove_file}, @@ -11,11 +16,13 @@ use std::{ path::Path, }; use tempfile::{NamedTempFile, TempDir}; +use tezos_crypto_rs::hash::SmartRollupHash; +use tokio::io::AsyncWriteExt; mod utils; use std::path::PathBuf; use utils::{ activate_alpha, create_client, get_head_block_hash, get_operation_kind, get_request, - import_activator, setup, spawn_octez_node, ACTIVATOR_SECRET_KEY, + import_activator, poll, setup, spawn_octez_node, spawn_rollup, ACTIVATOR_SECRET_KEY, }; fn read_file(path: &Path) -> Value { @@ -241,7 +248,7 @@ async fn add_address() { #[tokio::test(flavor = "multi_thread")] async fn call_contract() { - let (mut octez_node, octez_client, mut baker) = setup().await; + let (mut octez_node, octez_client, mut baker) = setup(None).await; let bootstrap1: String = "bootstrap1".to_string(); let contract = "KT1F3MuqvT9Yz57TgCS3EkDcKNZe9HpiavUJ".to_string(); let before = octez_client.get_balance(&contract).await.unwrap(); @@ -265,7 +272,7 @@ async fn call_contract() { #[tokio::test(flavor = "multi_thread")] async fn originate_contract_and_wait_for() { - let (mut octez_node, octez_client, mut baker) = setup().await; + let (mut octez_node, octez_client, mut baker) = setup(None).await; let head = get_head_block_hash(&octez_node.rpc_endpoint().to_string()).await; let mut config_file = NamedTempFile::new().unwrap(); @@ -326,7 +333,7 @@ async fn originate_contract_and_wait_for() { #[tokio::test(flavor = "multi_thread")] async fn send_rollup_inbox_message() { - let (mut octez_node, octez_client, mut baker) = setup().await; + let (mut octez_node, octez_client, mut baker) = setup(None).await; let (block, op) = octez_client .send_rollup_inbox_message("bootstrap1", "0000", Some(0.1)) @@ -350,3 +357,182 @@ async fn send_rollup_inbox_message() { let _ = baker.kill().await; let _ = octez_node.kill().await; } + +#[derive(Deserialize)] +struct OutputProof { + pub commitment: String, + pub proof: String, +} + +#[tokio::test(flavor = "multi_thread")] +async fn execute_rollup_outbox_message() { + let rollup_address = "sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao"; + // this is the destination contract where the outbox messages target + // this address is sealed in the rollup code + let contract_address = "KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK"; + let installer_path = Path::new(std::env!("CARGO_MANIFEST_DIR")).join(format!( + "tests/resources/rollup/{rollup_address}/installer.hex" + )); + let preimages_dir = Path::new(std::env!("CARGO_MANIFEST_DIR")) + .join(format!("tests/resources/rollup/{rollup_address}/preimages")); + let contract_path = Path::new(std::env!("CARGO_MANIFEST_DIR")) + .join(format!("tests/resources/contract/{contract_address}.json")); + let param_file = set_up_parameters_for_outbox_message( + rollup_address, + contract_address, + &installer_path, + &contract_path, + ) + .await; + + let (mut octez_node, octez_client, mut baker) = setup(Some(param_file.path())).await; + let mut rollup = spawn_rollup( + &octez_node, + &octez_client, + installer_path, + preimages_dir, + Some(rollup_address), + ) + .await; + + octez_client + .send_rollup_inbox_message("bootstrap1", "0000", Some(0.1)) + .await + .unwrap(); + + // wait until outbox message is cemented + let proof = wait_for_outbox_proof(&rollup.rpc_endpoint().to_string()) + .await + .unwrap(); + + let (block, op) = octez_client + .execute_rollup_outbox_message( + &SmartRollupHash::from_base58_check(rollup_address).unwrap(), + "bootstrap1", + &proof.commitment, + &format!("0x{}", &proof.proof), + Some(0.1), + ) + .await + .unwrap(); + + tokio::time::timeout( + tokio::time::Duration::from_secs(5), + octez_client.wait_for(&op, Some(&block), None), + ) + .await + .expect("wait_for should complete soon enough") + .expect("wait_for should be able to find the operation"); + + let operation_kind = + get_operation_kind(&octez_node.rpc_endpoint().to_string(), &block, &op) + .await + .unwrap(); + assert_eq!(operation_kind, "smart_rollup_execute_outbox_message"); + + let _ = rollup.kill().await; + let _ = baker.kill().await; + let _ = octez_node.kill().await; +} + +async fn set_up_parameters_for_outbox_message( + rollup_address: &str, + contract_address: &str, + installer_path: &PathBuf, + contract_path: &PathBuf, +) -> impl ReadWritable { + let kernel = String::from_utf8( + tokio::fs::read(&installer_path) + .await + .unwrap_or_else(|e| panic!("failed to read installer file: {:?}", e)), + ) + .unwrap(); + let contract_json = serde_json::from_slice( + &tokio::fs::read(&contract_path) + .await + .unwrap_or_else(|e| panic!("failed to read contract file: {:?}", e)), + ) + .unwrap(); + let param_file = ProtocolParameterBuilder::new() + .set_bootstrap_smart_rollups([BootstrapSmartRollup::new( + rollup_address, + SmartRollupPvmKind::Wasm, + &kernel, + serde_json::json!({"prim": "bytes"}), + ) + .unwrap()]) + .set_bootstrap_contracts([BootstrapContract::new( + contract_json, + 1_000_000, + Some(contract_address), + ) + .unwrap()]) + .set_source_path( + Path::new(std::env!("CARGO_MANIFEST_DIR")) + .join("tests/sandbox-params.json") + .to_str() + .unwrap(), + ) + .build() + .unwrap(); + + let mut content = tokio::fs::read_to_string(param_file.path()).await.unwrap(); + let mut value: serde_json::Value = serde_json::from_str(&content).unwrap(); + + // overwriting these config values so that outbox messages get cemented sooner + value.as_object_mut().unwrap().insert( + "smart_rollup_challenge_window_in_blocks".to_owned(), + serde_json::json!(8), + ); + value.as_object_mut().unwrap().insert( + "smart_rollup_commitment_period_in_blocks".to_owned(), + serde_json::json!(8), + ); + + content = serde_json::to_string(&value).unwrap(); + tokio::fs::File::create(param_file.path()) + .await + .unwrap() + .write_all(content.as_bytes()) + .await + .unwrap(); + + param_file +} + +async fn wait_for_outbox_proof(rollup_rpc_endpoint: &str) -> anyhow::Result { + #[derive(Deserialize)] + struct Message { + message_index: u32, + } + #[derive(Deserialize)] + struct Executable { + outbox_level: u32, + messages: Vec, + } + + let url = format!("{rollup_rpc_endpoint}/local/outbox/pending/executable"); + let (outbox_level, message_index) = poll(30, 1000, || async { + // response: [{"outbox_level": 1, "messages": [{"message_index": 0, ...}, {"message_index": 1, ...}]}] + if let Ok(res) = reqwest::get(&url).await { + let vs = res.json::>().await.unwrap(); + // using the first message here since any of those should work + if let Some(v) = vs.first() { + if let Some(m) = v.messages.first() { + return Some((v.outbox_level, m.message_index)); + } + } + } + None + }) + .await + .expect("should be able to find outbox message soon enough"); + + let url = format!("{rollup_rpc_endpoint}/global/block/head/helpers/proofs/outbox/{outbox_level}/messages?index={message_index}"); + if let Ok(res) = reqwest::get(&url).await { + if let Ok(v) = res.json::().await { + return Ok(v); + } + } + Err(anyhow::anyhow!("cannot find outbox proof")) +} diff --git a/crates/jstzd/tests/octez_rollup_test.rs b/crates/jstzd/tests/octez_rollup_test.rs index bbef3ef62..2ede10d39 100644 --- a/crates/jstzd/tests/octez_rollup_test.rs +++ b/crates/jstzd/tests/octez_rollup_test.rs @@ -1,11 +1,17 @@ mod utils; use jstzd::task::Task; +use std::path::Path; use utils::{setup, spawn_rollup}; #[tokio::test(flavor = "multi_thread")] async fn test_rollup() { - let (mut octez_node, client, mut baker) = setup().await; - let mut rollup = spawn_rollup(&octez_node, &client).await; + let (mut octez_node, client, mut baker) = setup(None).await; + let kernel_installer = Path::new(std::env!("CARGO_MANIFEST_DIR")) + .join("tests/toy_rollup/kernel_installer"); + let preimages_dir = + Path::new(std::env!("CARGO_MANIFEST_DIR")).join("tests/toy_rollup/preimages"); + let mut rollup = + spawn_rollup(&octez_node, &client, kernel_installer, preimages_dir, None).await; let _ = rollup.kill().await; // Should get an error since the rollup node should have been terminated let rollup_is_alive = rollup.health_check().await; diff --git a/crates/jstzd/tests/resources/contract/KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK.json b/crates/jstzd/tests/resources/contract/KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK.json new file mode 100644 index 000000000..af0acff56 --- /dev/null +++ b/crates/jstzd/tests/resources/contract/KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK.json @@ -0,0 +1,60 @@ +{ + "code": [ + { + "args": [{ "annots": ["%myEntryPoint"], "prim": "int" }], + "prim": "parameter" + }, + { + "args": [ + { + "args": [ + { "annots": ["%myParameter1"], "prim": "int" }, + { "annots": ["%myParameter2"], "prim": "int" } + ], + "prim": "pair" + } + ], + "prim": "storage" + }, + { + "args": [ + [ + { "prim": "UNPAIR" }, + { "args": [{ "prim": "int" }, { "int": "123" }], "prim": "PUSH" }, + { "args": [{ "int": "3" }], "prim": "DUP" }, + { "prim": "CAR" }, + { "prim": "COMPARE" }, + { "prim": "LE" }, + { + "args": [ + [], + [ + { + "args": [ + { "prim": "string" }, + { + "string": "Assert failure: self.data.myParameter1 <= 123" + } + ], + "prim": "PUSH" + }, + { "prim": "FAILWITH" } + ] + ], + "prim": "IF" + }, + { "prim": "SWAP" }, + { "prim": "DUP" }, + { "prim": "CAR" }, + { "args": [{ "int": "2" }], "prim": "DIG" }, + { "prim": "ADD" }, + { "args": [{ "int": "1" }], "prim": "UPDATE" }, + { "args": [{ "prim": "operation" }], "prim": "NIL" }, + { "prim": "PAIR" } + ] + ], + "prim": "code" + } + ], + "storage": { "args": [{ "int": "1" }, { "int": "0" }], "prim": "Pair" } +} diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.lock b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.lock new file mode 100644 index 000000000..e1bfd563c --- /dev/null +++ b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.lock @@ -0,0 +1,1259 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "base58" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blst" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a30d0edd9dd1c60ddb42b80341c7852f6f985279a5c1a83659dcb65899dec99" +dependencies = [ + "cc", + "glob", + "threadpool", + "which", + "zeroize", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cc" +version = "1.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8658c15c5d921ddf980f7fe25b1e82f4b7a4083b2c4985fea4922edb8e43e07d" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +dependencies = [ + "generic-array", + "subtle", +] + +[[package]] +name = "cryptoxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382ce8820a5bb815055d3553a610e8cb542b2d767bbacea99038afda96cd760d" + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version", + "subtle", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "der" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4" + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", +] + +[[package]] +name = "dlmalloc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5e0d321d61de16390ed273b647ce51605b575916d3c25e6ddf27a1e140035" +dependencies = [ + "cfg-if", + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "ecdsa" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372" +dependencies = [ + "der", + "elliptic-curve", + "hmac", + "signature 1.3.2", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "signature 2.2.0", +] + +[[package]] +name = "ed25519-dalek" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" +dependencies = [ + "curve25519-dalek", + "ed25519", + "sha2 0.10.8", + "subtle", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elliptic-curve" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e5c176479da93a0983f0a6fdc3c1b8e7d5be0d7fe3fe05a99f15b96582b9a8" +dependencies = [ + "crypto-bigint", + "ff", + "generic-array", + "group", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "ff" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0f40b2dcd8bc322217a5f6559ae5f9e9d1de202a2ecee2e9eafcbece7562a4f" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "group" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c363a5301b8f153d80747126a04b3c82073b9fe3130571a9d170cacdeaf7912" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.162" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" + +[[package]] +name = "libsecp256k1" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" +dependencies = [ + "arrayref", + "base64", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "outbox-kernel" +version = "0.1.0" +dependencies = [ + "tezos-smart-rollup", + "tezos_crypto_rs", + "tezos_data_encoding", +] + +[[package]] +name = "p256" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d053368e1bae4c8a672953397bd1bd7183dde1c72b0b7612a15719173148d186" +dependencies = [ + "ecdsa", + "elliptic-curve", + "sha2 0.9.9", +] + +[[package]] +name = "parse-display" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7271152b3c46c07c729698e7a5248e2744466b3446d222c97a0b1315925a97b1" +dependencies = [ + "once_cell", + "parse-display-derive", + "regex", +] + +[[package]] +name = "parse-display-derive" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6a9f3e41b237b77c99c09686481c235964ff5878229412b226c451f3e809f4f" +dependencies = [ + "once_cell", + "proc-macro2", + "quote", + "regex", + "regex-syntax 0.6.29", + "syn 1.0.109", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "rand_chacha", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "serde" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signature" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2807892cfa58e081aa1f1111391c7a0649d4fa127a4ffbe34bcbfb35a1171a4" +dependencies = [ + "digest 0.9.0", + "rand_core 0.6.4", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" + +[[package]] +name = "strum" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" + +[[package]] +name = "strum_macros" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tezos-smart-rollup" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c63b0f32e98d50bc647594953277c4c572a06bb1279e9ab76878539a130871b7" +dependencies = [ + "tezos-smart-rollup-core", + "tezos-smart-rollup-debug", + "tezos-smart-rollup-encoding", + "tezos-smart-rollup-entrypoint", + "tezos-smart-rollup-host", + "tezos-smart-rollup-mock", + "tezos-smart-rollup-storage", + "tezos_crypto_rs", + "tezos_data_encoding", +] + +[[package]] +name = "tezos-smart-rollup-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13420c79af913a35b5930d2e59b5ab37898efeddbc88a5e409565a395909887" + +[[package]] +name = "tezos-smart-rollup-debug" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721471de90f4701b0b6d4ea5fbbd5f3c3500424788264185b47691ecd4ebe27f" +dependencies = [ + "tezos-smart-rollup-core", + "tezos-smart-rollup-host", +] + +[[package]] +name = "tezos-smart-rollup-encoding" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9d1000d1771bcb007b03bb14f900f716e70987d15855a3d5dc60ee3dbcb3ab9" +dependencies = [ + "hex", + "nom", + "num-bigint", + "num-traits", + "tezos-smart-rollup-core", + "tezos-smart-rollup-host", + "tezos_crypto_rs", + "tezos_data_encoding", + "tezos_data_encoding_derive", + "thiserror", + "time", +] + +[[package]] +name = "tezos-smart-rollup-entrypoint" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeb915027ebed03d166c4e0e6b6175ccfd71a2f3426c002975238895ebd3a1a5" +dependencies = [ + "dlmalloc", + "tezos-smart-rollup-core", + "tezos-smart-rollup-debug", + "tezos-smart-rollup-host", + "tezos-smart-rollup-panic-hook", +] + +[[package]] +name = "tezos-smart-rollup-host" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd641b59bc8d81ddc66696b871568e299da978648a96ced85df58a686a77b0c2" +dependencies = [ + "tezos-smart-rollup-core", + "tezos_crypto_rs", + "tezos_data_encoding", + "thiserror", +] + +[[package]] +name = "tezos-smart-rollup-mock" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84b112dd53d11d713b20bc2eb1a7dae5a29386cf00af851ddc0f31fc69a25d4d" +dependencies = [ + "hex", + "tezos-smart-rollup-core", + "tezos-smart-rollup-encoding", + "tezos-smart-rollup-host", + "tezos_crypto_rs", + "tezos_data_encoding", +] + +[[package]] +name = "tezos-smart-rollup-panic-hook" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53cb2b21d677546978cc2577c773c191b8a997d89c7e711a9b01299d0dd7dcb3" +dependencies = [ + "tezos-smart-rollup-core", +] + +[[package]] +name = "tezos-smart-rollup-storage" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97f0970efb8454af805ca84a7a52a60bec26d2944dee835087be3519b7cf2621" +dependencies = [ + "tezos-smart-rollup-core", + "tezos-smart-rollup-debug", + "tezos-smart-rollup-encoding", + "tezos-smart-rollup-host", + "thiserror", +] + +[[package]] +name = "tezos_crypto_rs" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284fa6f4be10eff67ca5b2f9e8ec9544be81a07223f6a4c8d3a49a13aecce768" +dependencies = [ + "anyhow", + "base58", + "blst", + "byteorder", + "cryptoxide", + "ed25519-dalek", + "hex", + "libsecp256k1", + "num-bigint", + "num-traits", + "p256", + "rand 0.7.3", + "serde", + "strum", + "strum_macros", + "thiserror", + "zeroize", +] + +[[package]] +name = "tezos_data_encoding" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66c34be797025fcab7a9e417a4cc374925ee796af21f8d7df5e2330cdc2595af" +dependencies = [ + "bit-vec", + "bitvec", + "hex", + "lazy_static", + "nom", + "num-bigint", + "num-traits", + "serde", + "tezos_crypto_rs", + "tezos_data_encoding_derive", + "thiserror", +] + +[[package]] +name = "tezos_data_encoding_derive" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e0c104555ce4d8c790567d725dc49f519d721e114202e38e851c1ac5769f08" +dependencies = [ + "lazy_static", + "once_cell", + "parse-display", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "thiserror" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.toml b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.toml new file mode 100644 index 000000000..2f41e03f4 --- /dev/null +++ b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/Cargo.toml @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: 2023 Marigold +# SPDX-FileCopyrightText: 2023 Nomadic Labs +# +# SPDX-License-Identifier: MIT + +[package] +name = "outbox-kernel" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "lib"] + +[dependencies] +tezos-smart-rollup = {version = "0.2.0", features = ["testing"]} +tezos_data_encoding = {version = "0.5.0"} +tezos_crypto_rs = { version = "0.5.0", default-features = false } \ No newline at end of file diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/installer.hex b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/installer.hex new file mode 100644 index 000000000..1bc097079 --- /dev/null +++ b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/installer.hex @@ -0,0 +1 @@ +0061736d0100000001610e60037f7f7f017f60027f7f017f60027f7f0060057f7f7f7f7f017f60047f7f7f7f017f60037f7f7f0060017f0060000060087f7f7f7f7f7f7f7f0060047f7f7f7f0060067f7f7f7f7f7f017f60017f017e60057f7f7f7f7f0060037e7f7f017f02a6020911736d6172745f726f6c6c75705f636f72650b77726974655f6465627567000211736d6172745f726f6c6c75705f636f72650973746f72655f686173000111736d6172745f726f6c6c75705f636f72650a73746f72655f72656164000311736d6172745f726f6c6c75705f636f72650b73746f72655f7772697465000311736d6172745f726f6c6c75705f636f72650c73746f72655f64656c657465000111736d6172745f726f6c6c75705f636f72650a73746f72655f6d6f7665000411736d6172745f726f6c6c75705f636f72650a73746f72655f636f7079000411736d6172745f726f6c6c75705f636f72650f72657665616c5f707265696d616765000411736d6172745f726f6c6c75705f636f72651073746f72655f76616c75655f73697a6500010341400500000301050607080602050909090502020205010602070705000a0a000303030001060602050500050501000a0b0c0101000001010001010103010d0100000405017001111105030100110619037f01418080c0000b7f0041c190c0000b7f0041d090c0000b073204066d656d6f727902000a6b65726e656c5f72756e00100a5f5f646174615f656e6403010b5f5f686561705f6261736503020916010041010b101244342b3a392d372c3b3d3e3f4041460a966840850404037f027e017f017e23808080800041e080016b22032480808080000240024002400240024020022802000e03000102000b200341106a200241046a10938080800020032802144121470d0220032802102204450d02200441026a2d00002105200441136a29000021062004290003210720042f00002108200429000b2109200341d8006a2004411b6a280000360200200341c8006a41086a2006370300200341dc006a2004411f6a2f00003b0100200341e0006a41086a22042006370300200341266a41026a20053a0000200341e0006a410e6a2205200341c8006a410e6a29010037010020032009370360200320083b0126200341266a41136a20042903003700002003413f6a20052901003700002003200329036037003120032007370029200341e0006a41004180800110c7808080001a20032002410c6a3602482003410036024c200341086a20014100200341266a200341e0006a418080014104200341c8006a109180808000200328020c2102200328020821010c030b419880c0800041002001200241046a2002410c6a108b808080001b2101412c21020c020b200341186a200241046a10938080800041c480c08000410020012002410c6a2003280218200328021c4100108c808080001b2101412a21020c010b418080c080002101411821020b2000200236020420002001360200200341e080016a2480808080000bf00101037f23808080800041c0006b2203248080808000200341306a2001109f8080800020032802302104200341286a2001109f80808000200341386a20002004200328022c10a380808000109b8080800041712104024020032802380d00200328023c417f6a41024b0d00200341206a2001109f8080800020032802202104200341186a2001109f80808000200328021c2101200341106a2002109f8080800020032802102105200341086a2002109f80808000200341386a2000200420012005200328020c10a880808000109b80808000200328023c410020032802381b21040b200341c0006a24808080800020040bf00101037f23808080800041c0006b2203248080808000200341306a2001109f8080800020032802302104200341286a2001109f80808000200341386a20002004200328022c10a380808000109b8080800041712104024020032802380d00200328023c417f6a41024b0d00200341206a2001109f8080800020032802202104200341186a2001109f80808000200328021c2101200341106a2002109f8080800020032802102105200341086a2002109f80808000200341386a2000200420012005200328020c10a780808000109b80808000200328023c410020032802381b21040b200341c0006a24808080800020040bcb0201027f23808080800041c0006b2205248080808000024002402003418110490d000340200541306a2001109f8080800020052802302106200541286a2001109f80808000200541386a20002006200528022c2004200241801010a580808000109b8080800002402005280238450d00200528023c22060d030b20024180106a210220044180106a210420034180706a22034180104b0d000b200541206a2001109f8080800020052802202106200541186a2001109f80808000200541386a20002006200528021c20042002200310a580808000109b80808000200528023c410020052802381b21060c010b200541106a2001109f8080800020052802102106200541086a2001109f80808000200541386a20002006200528020c20042002200310a580808000109b80808000200528023c410020052802381b21060b200541c0006a24808080800020060bc20101027f23808080800041306b2202248080808000200241206a2001109f8080800020022802202103200241186a2001109f80808000200241286a20002003200228021c10a380808000109b8080800041712103024020022802280d00200228022c417f6a41024b0d00200241106a2001109f8080800020022802102103200241086a2001109f80808000200241286a20002003200228020c10a680808000109b80808000200228022c410020022802281b21030b200241306a24808080800020030bec0101027f23808080800041306b2203248080808000200341206a2002109f8080800020032802202104200341186a2002109f80808000200341286a20012004200328021c10a380808000109b8080800002400240024020032802280d00200328022c417f6a41024b0d00200341106a2002109f8080800020032802102104200341086a2002109f80808000200341286a20012004200328020c10aa80808000109b8080800020032802280d012000200328022c360204200041003602000c020b20004281808080907e3702000c010b2000200328022c360204200041013602000b200341306a2480808080000b170041fe81c08000410e41a882c0800010b280808000000b900801077f2380808080004180056b220024808080800010a08080800010a18080800020004111360254200041ed81c08000360250200041d8006a200041f8046a200041d0006a108e808080000240024002400240024020002802580d00200028025c2101200041003602d804200041c8006a200041d0006a109f8080800020002802482102200041c0006a200041d0006a109f80808000200041d8006a200041f8046a200220002802442001417c6a200041d8046a410410a480808000109b808080002000280258450d010b4125210241b882c0800021010c010b20002802d8042101200041d8006a410041e70310c7808080001a200041d8046a200041f8046a200041d0006a108e80808000024020002802d804450d0041a483c080002101412421020c010b20002802dc0421020240200041f8046a200041d0006a418c83c08000108a80808000450d0041c883c080002101413221020c010b02402002417c6a220320016b220420034f0d00024002400340200041003602c004200041386a418c83c08000109f8080800020002802382101200041306a418c83c08000109f80808000200041d8046a200041f8046a200120002802342004200041c0046a410410a480808000109b80808000024020002802d804450d0041ec84c080002101412321020c050b20002802c004220541e8034f0d01200441046a210402402005450d00200041d8006a2106200521010340200041286a418c83c08000109f8080800020002802282102200041206a418c83c08000109f80808000200041d8046a200041f8046a2002200028022420042006200110a480808000109b80808000024020002802d804450d00419c81c080002101413321020c070b200120002802dc042202490d04200620026a2106200220046a2104200120026b22010d000b0b200041d8046a200041d8006a2005109480808000024020002802e00422014103470d0041fa83c080002101412221020c050b024020002802dc04450d0041d984c080002101411321020c050b20002802e804210220002802e4042106200020002902ec043702cc04200020023602c804200020063602c404200020013602c004200041186a200041f8046a200041c0046a1089808080000240200028021822010d00200420034f0d040c010b0b200028021c21020c030b200541e703419483c0800010b080808000000b20022001418c81c0800010af80808000000b200041f8046a418c83c08000108d80808000450d01419c84c080002101413d21020b200041f8046a2001200210a2808080000c010b200041106a41e481c08000109f8080800020002802102101200041086a41e481c08000109f80808000200041d8006a200041f8046a2001200028020c410041ec81c08000410110a580808000109b808080000b20004180056a2480808080000b910401047f23808080800041306b22082480808080000240024020022006490d0041b285c080002102412b21060c010b200841186a2001200341212004200510a980808000109b8080800002402008280218450d00419486c080002102411b21060c010b0240200828021c220920054b0d00200841186a200420091098808080000240200828021822034102470d0041dd85c080002102413721060c020b2008280220210a200828021c210b024020034101460d0020072802002105200728020421022008200a36021c2008200b360218200841086a200841186a1099808080000240200120052008280208200828020c22062002108c80808000450d00418f85c080002102412321060c030b2007200620026a360204410021020c020b2008200a3602142008200b360210200841186a200841106a109a80808000200828021c21030240024002402008280228220a4121470d00200520096b210a200420096a2104200241016a210920082802182105034020034121490d0220082001200920052004200a20062007109180808000200541216a21052003415f6a210320082802002202450d000b200828020421060c040b2003200a4f0d010b410021020c020b41fc86c080004117200841186a419487c0800041a487c0800010b880808000000b41b487c08000412341ec86c0800010b280808000000b2000200636020420002002360200200841306a2480808080000b02000b0c00200020012902003703000ba70402067f017e23808080800041206b2203248080808000024002400240024002400240024002402002450d00200141016a21042002417f6a210220012d00000e03040302010b2000428380808010370208200041186a41173a0000200041146a4100360200200041106a20013602000c060b2000428380808010370208200041186a41003a0000200041146a2002360200200041106a20043602000c050b2003200341186a2004200210958080800020032802002202450d022003280214210120032802102104200328020c21052003280208210620032802042107410221080c030b2003200341186a20042002109680808000024020032802002202450d002003280214210120032802102104200328020c21052003280208210620032802042107410121080c030b20032902042109200041146a2003410c6a2902003702002000200937020c200041033602080c030b2003200341186a20042002109580808000024020032802002202450d002003280214210120032802102104200328020c21052003280208210620032802042107410021080c020b20032902042109200041146a2003410c6a2902003702002000200937020c200041033602080c020b20032902042109200041146a2003410c6a2902003702002000200937020c200041033602080c010b200020013602182000200636020c20002008360208200020073602042000200236020020002004ad4220862005ad843702100b200341206a2480808080000bdf0201077f23808080800041306b22042480808080002004418010360214200441186a200441146a20022003109780808000200428021c210502400240024020042802182206450d0020050d0041242107410121050c010b20042802282107200428022421032004280220210220060d0002400240024020020d0041002102411721060c010b200541016a21082002417f6a2109412f2106024020052d0000220a41f2014d0d0020092102200821050c010b412421062009200a4f0d010b2000428080808010370200200041106a20063602002000410c6a2002360200200041086a20053602000c020b200441086a2008200a109c80808000200020042903083702102000200736020c2000200336020820002009200a6b36020420002008200a6a3602000c010b2000200536020420004100360200200041106a20073602002000410c6a2003360200200041086a20023602000b200441306a2480808080000bf30201057f23808080800041106b220424808080800002400240024020030d0041002103411721050c010b200241016a21062003417f6a2107412f2105024020022d0000220841f2014d0d0020072103200621020c010b4124210520072008490d00200441086a20062008109c80808000200620086a2103024002400240200720086b22020d0041172105410021020c010b200341016a21062002417f6a2107412f2105024020032d0000220841f2014d0d0020062103200721020c010b41242105200720084f0d010b2000428080808010370200200041106a20053602002000410c6a2002360200200041086a20033602000c020b200428020c210320042802082102200420062008109c80808000200020042903003702102000200336020c200020023602082000200720086b3602042000200620086a3602000c010b2000428080808010370200200041106a20053602002000410c6a2003360200200041086a20023602000b200441106a2480808080000bbf0101027f411721040240024020034104490d00200241046a21052003417c6a2103412f21042002280000220220012802004d0d01200521020b20004101360204200041106a20043602002000410c6a2003360200200041086a2002360200200041013602000f0b0240200220034b0d00200041106a20023602002000410c6a2005360200200041086a200320026b3602002000200520026a360204200041003602000f0b20004100360204200041086a200220036b360200200041013602000bcc0201037f0240024020020d000c010b0240024002400240024020012d000022030e020001050b20024105490d022001280001220341187420034180fe03714108747220034108764180fe037120034118767272220341046a22042002417f6a4b0d022003417c490d014104200441f087c0800010b380808000000b024020024105490d002001280001220341187420034180fe03714108747220034108764180fe03712003411876727222034121702104200341046a22052002417f6a4b0d0020040d002003417c4f0d0320002003360208200041013602002000200141056a3602040f0b20004102360200200041023b01040f0b20002003360208200041003602002000200141056a3602040f0b20004102360200200041023b01040f0b41042005418088c0800010b380808000000b20004102360200200041056a20033a0000200020024100473a00040b0c00200020012902003703000b3e01027f20004121360210200020012802002202360200200020012802042201412170220336020c2000200120036b22013602042000200220016a3602080b310002402001417f4a0d00200020014178200141744b1b360204200041013602000f0b20002001360204200041003602000b240020012002109d8080800041ff0171109e8080800020002002360204200020013602000bbe0301037f4100210202400240024020010e020201000b0240200120006a417f6a2d0000412f470d0041030f0b41012102200141f2014b0d014102210220002d0000412f470d01412f2102410121030340200241ff01712104200020036a2d0000210202402004412f470d00200241ff0171412f470d0041030f0b0240200241ff01712204412f460d002004412d460d00200441df00460d002004412e460d00200241506a41ff0171410a490d002002415f7141bf7f6a41ff0171411a490d0041040f0b2001200341016a2203470d000b0240024020014109460d0041062102200141094d0d0320002d000141f200470d0320002d000241e500470d0320002d000341e100470d0320002d000441e400470d0320002d000541ef00470d0320002d000641ee00470d0320002d000741ec00470d0320002d000841f900470d0320002d0009412f470d030c010b4106210220002d000141f200470d0220002d000241e500470d0220002d000341e100470d0220002d000441e400470d0220002d000541ef00470d0220002d000641ee00470d0220002d000741ec00470d0220002d000841f900470d020b41050f0b4103410220002d0000412f461b21020b20020ba40301017f23808080800041206b22012480808080000240024002400240024002400240200041ff017122004106460d0020000e06010203040506010b200141206a2480808080000f0b200141146a42003702002001410136020c200141c08cc080003602082001419088c08000360210200141086a41c88cc0800010ae80808000000b200141146a42003702002001410136020c200141fc8bc080003602082001419088c08000360210200141086a41848cc0800010ae80808000000b200141146a42003702002001410136020c200141c48bc080003602082001419088c08000360210200141086a41cc8bc0800010ae80808000000b200141146a42003702002001410136020c200141848bc080003602082001419088c08000360210200141086a418c8bc0800010ae80808000000b200141146a42003702002001410136020c200141d08ac080003602082001419088c08000360210200141086a41d88ac0800010ae80808000000b200141146a42003702002001410136020c200141b889c080003602082001419088c08000360210200141086a41d089c0800010ae80808000000b0c00200020012902003703000b02000b02000b0c00200120021080808080000b0c00200120021081808080000b1200200120022003200420051082808080000b1200200120022003200420051083808080000b0c00200120021084808080000b100020012002200320041085808080000b100020012002200320041086808080000b100020012002200320041087808080000b0c00200120021088808080000b0d0020002802001a037f0c000b0b02000b02000b4c01017f23808080800041206b220224808080800020022000360214200241dc8cc0800036020c200241d88cc08000360208200241013a001820022001360210200241086a108f80808000000b870101017f23808080800041306b22032480808080002003200036020020032001360204200341086a410c6a4202370200200341206a410c6a4183808080003602002003410236020c200341bc8fc0800036020820034183808080003602242003200341206a3602102003200341046a36022820032003360220200341086a200210ae80808000000b870101017f23808080800041306b22032480808080002003200036020020032001360204200341086a410c6a4202370200200341206a410c6a4183808080003602002003410236020c200341dc8fc0800036020820034183808080003602242003200341206a3602102003200341046a36022820032003360220200341086a200210ae80808000000bc90701087f02400240200028020022032000280208220472450d0002402004450d00200120026a21052000410c6a28020041016a2106410021072001210802400340200821042006417f6a2206450d0120042005460d020240024020042c00002209417f4c0d00200441016a2108200941ff017121090c010b20042d0001413f71210a2009411f71210802402009415f4b0d002008410674200a722109200441026a21080c010b200a41067420042d0002413f7172210a0240200941704f0d00200a2008410c74722109200441036a21080c010b200a41067420042d0003413f71722008411274418080f00071722209418080c400460d03200441046a21080b200720046b20086a21072009418080c400470d000c020b0b20042005460d00024020042c00002208417f4a0d0020084160490d0020084170490d0020042d0002413f7141067420042d0001413f71410c747220042d0003413f7172200841ff0171411274418080f0007172418080c400460d010b024002402007450d00024020072002490d004100210420072002460d010c020b41002104200120076a2c00004140480d010b200121040b2007200220041b21022004200120041b21010b024020030d00200028021420012002200041186a28020028020c118080808000000f0b200028020421070240024020024110490d002001200210c28080800021080c010b024020020d00410021080c010b2002410371210902400240200241044f0d0041002108200121040c010b2002417c71210641002108200121040340200820042c000041bf7f4a6a20042c000141bf7f4a6a20042c000241bf7f4a6a20042c000341bf7f4a6a2108200441046a21042006417c6a22060d000b0b2009450d000340200820042c000041bf7f4a6a2108200441016a21042009417f6a22090d000b0b0240200720084d0d0041002104200720086b2208210702400240024020002d00200e0402000102020b41002107200821040c010b20084101762104200841016a41017621070b200441016a2104200041186a2802002109200041146a280200210620002802102108024003402004417f6a2204450d0120062008200928021011818080800000450d000b41010f0b410121042008418080c400460d02200620012002200928020c118080808000000d02410021040340024020072004470d0020072007490f0b200441016a210420062008200928021011818080800000450d000b2004417f6a2007490f0b200028021420012002200041186a28020028020c118080808000000f0b200028021420012002200041186a28020028020c1180808080000021040b20040b5401017f23808080800041206b22032480808080002003410c6a420037020020034101360204200341d88cc080003602082003200136021c200320003602182003200341186a3602002003200210ae80808000000b870101017f23808080800041306b22032480808080002003200036020020032001360204200341086a410c6a4202370200200341206a410c6a4183808080003602002003410236020c2003419090c0800036020820034183808080003602242003200341206a3602102003200341046a36022820032003360220200341086a200210ae80808000000b110020003502004101200110c5808080000bca05010a7f23808080800041306b2203248080808000200341206a2001360200200341033a00282003412036021841002104200341003602242003200036021c20034100360210200341003602080240024002400240200228021022050d002002410c6a2802002200450d0120022802082101200041037421062000417f6a41ffffffff017141016a21042002280200210003400240200041046a2802002207450d00200328021c20002802002007200328022028020c118080808000000d040b2001280200200341086a200141046a280200118180808000000d03200141086a2101200041086a2100200641786a22060d000c020b0b200241146a2802002201450d00200141057421082001417f6a41ffffff3f7141016a2104200228020021004100210603400240200041046a2802002201450d00200328021c20002802002001200328022028020c118080808000000d030b2003200520066a220141106a28020036021820032001411c6a2d00003a00282003200141186a2802003602242001410c6a28020021092002280208210a4100210b41002107024002400240200141086a2802000e03010002010b2009410374210c41002107200a200c6a220c280204418480808000470d01200c28020028020021090b410121070b2003200936020c20032007360208200141046a280200210702400240024020012802000e03010002010b20074103742109200a20096a2209280204418480808000470d01200928020028020021070b4101210b0b200320073602142003200b360210200a200141146a2802004103746a2201280200200341086a2001280204118180808000000d02200041086a21002008200641206a2206470d000b0b0240200420022802044f0d00200328021c200228020020044103746a22012802002001280204200328022028020c118080808000000d010b410021010c010b410121010b200341306a24808080800020010bc40601077f024002402001450d00412b418080c400200028021c220641017122011b2107200120056a21080c010b200541016a2108200028021c2106412d21070b0240024020064104710d00410021020c010b0240024020034110490d002002200310c28080800021090c010b024020030d00410021090c010b2003410371210a02400240200341044f0d0041002109200221010c010b2003417c71210b41002109200221010340200920012c000041bf7f4a6a20012c000141bf7f4a6a20012c000241bf7f4a6a20012c000341bf7f4a6a2109200141046a2101200b417c6a220b0d000b0b200a450d000340200920012c000041bf7f4a6a2109200141016a2101200a417f6a220a0d000b0b200920086a21080b0240024020002802000d0041012101200041146a2802002209200041186a280200220020072002200310c3808080000d01200920042005200028020c118080808000000f0b024002400240024002402000280204220b20084d0d0020064108710d04200b20086b2209210820002d002022010e0403010201030b41012101200041146a2802002209200041186a280200220020072002200310c3808080000d04200920042005200028020c118080808000000f0b41002108200921010c010b20094101762101200941016a41017621080b200141016a2101200041186a280200210a200041146a280200210b20002802102109024003402001417f6a2201450d01200b2009200a28021011818080800000450d000b41010f0b410121012009418080c400460d01200b200a20072002200310c3808080000d01200b20042005200a28020c118080808000000d014100210102400340024020082001470d00200821010c020b200141016a2101200b2009200a28021011818080800000450d000b2001417f6a21010b200120084921010c010b200028021021062000413036021020002d0020210c41012101200041013a0020200041146a2802002209200041186a280200220a20072002200310c3808080000d00200b20086b41016a2101024003402001417f6a2201450d0120094130200a28021011818080800000450d000b41010f0b41012101200920042005200a28020c118080808000000d002000200c3a00202000200636021041000f0b20010b0d00429ed883c9bebbf3f78b7f0b990101017f23808080800041c0006b22052480808080002005200136020c200520003602082005200336021420052002360210200541186a410c6a4202370200200541306a410c6a4185808080003602002005410236021c200541f08cc0800036021820054186808080003602342005200541306a3602202005200541106a3602382005200541086a360230200541186a200410ae80808000000b140020012000280200200028020410b1808080000b180020002802002001200028020428020c118180808000000bcc04010b7f2000280204210320002802002104200028020821054100210641002107410021084100210902400340200941ff01710d0102400240200820024b0d000340200120086a210a02400240200220086b220b4108490d00024002400240200a41036a417c712200200a460d002000200a6b220c450d00410021000340200a20006a2d0000410a460d05200c200041016a2200470d000b200c200b41786a220d4d0d010c020b200b41786a210d4100210c0b0340200a200c6a22092802002200417f732000418a94a8d0007341fffdfb776a71418081828478710d01200941046a2802002200417f732000418a94a8d0007341fffdfb776a71418081828478710d01200c41086a220c200d4d0d000b0b0240200b200c470d00200221080c040b03400240200a200c6a2d0000410a470d00200c21000c030b200b200c41016a220c470d000b200221080c030b024020082002470d00200221080c030b410021000340200a20006a2d0000410a460d01200b200041016a2200470d000b200221080c020b200820006a220041016a21080240200020024f0d00200120006a2d0000410a470d00410021092008210d200821000c030b200820024d0d000b0b410121092007210d2002210020072002460d020b0240024020052d0000450d00200441988dc080004104200328020c118080808000000d010b200120076a210c200020076b210a4100210b024020002007460d00200a200c6a417f6a2d0000410a46210b0b2005200b3a0000200d21072004200c200a200328020c11808080800000450d010b0b410121060b20060b910302057f017e23808080800041c0006b22032480808080000240024020002d0008450d0020002802002104410121050c010b200028020021040240200041046a280200220628021c22074104710d00410121052006280214419e8dc0800041a28dc0800020041b4102410120041b200641186a28020028020c118080808000000d0120012006200228020c1181808080000021050c010b024020040d000240200628021441a08dc080004102200641186a28020028020c11808080800000450d0041012105410021040c020b200628021c21070b41012105200341013a0017200341306a41808dc08000360200200320062902143703082003200341176a36021020032006290208370320200629020021082003200736023420032006280210360228200320062d00203a0038200320083703182003200341086a36022c2001200341186a200228020c118180808000000d00200328022c419c8dc080004102200328023028020c1180808080000021050b200020053a00082000200441016a360200200341c0006a24808080800020000b860201017f23808080800041106b22022480808080002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110bb808080002101200241106a24808080800020010b7101017f23808080800041206b220224808080800020022000360204200241086a41106a200141106a290200370300200241086a41086a200141086a29020037030020022001290200370308200241046a41ec8ec08000200241086a10b5808080002101200241206a24808080800020010b110020002802002001200210bb808080000b8d0201017f23808080800041106b2202248080808000200028020021002002410036020c024002402001418001490d0002402001418010490d000240200141808004490d0020022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c410421010c030b20022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d410321010c020b20022001413f71418001723a000d2002200141067641c001723a000c410221010c010b200220013a000c410121010b20002002410c6a200110bb808080002101200241106a24808080800020010b7801017f23808080800041206b220224808080800020002802002100200241086a41106a200141106a290200370300200241086a41086a200141086a2902003703002002200129020037030820022000360204200241046a41ec8ec08000200241086a10b5808080002101200241206a24808080800020010bf20601097f02400240200041036a417c71220220006b220320014b0d00200120036b22044104490d00200441037121054100210641002101024020022000460d00200341037121070240024020022000417f736a41034f0d0041002101200021020c010b2003417c71210841002101200021020340200120022c000041bf7f4a6a20022c000141bf7f4a6a20022c000241bf7f4a6a20022c000341bf7f4a6a2101200241046a21022008417c6a22080d000b0b2007450d000340200120022c000041bf7f4a6a2101200241016a21022007417f6a22070d000b0b200020036a210002402005450d0020002004417c716a22022c000041bf7f4a210620054101460d00200620022c000141bf7f4a6a210620054102460d00200620022c000241bf7f4a6a21060b20044102762103200620016a21070340200021062003450d02200341c001200341c001491b220441037121052004410274210902400240200441fc0171220a0d00410021020c010b2006200a4102746a2108410021022006210003402000450d012000410c6a2802002201417f73410776200141067672418182840871200041086a2802002201417f73410776200141067672418182840871200041046a2802002201417f7341077620014106767241818284087120002802002201417f7341077620014106767241818284087120026a6a6a6a2102200041106a22002008470d000b0b200320046b2103200620096a2100200241087641ff81fc0771200241ff81fc07716a418180046c41107620076a21072005450d000b0240024020060d00410021000c010b2006200a4102746a22022802002200417f73410776200041067672418182840871210020054101460d0020022802042201417f7341077620014106767241818284087120006a210020054102460d0020022802082202417f7341077620024106767241818284087120006a21000b200041087641ff811c71200041ff81fc07716a418180046c41107620076a0f0b024020010d0041000f0b2001410371210202400240200141044f0d00410021070c010b2001417c712101410021070340200720002c000041bf7f4a6a20002c000141bf7f4a6a20002c000241bf7f4a6a20002c000341bf7f4a6a2107200041046a21002001417c6a22010d000b0b2002450d000340200720002c000041bf7f4a6a2107200041016a21002002417f6a22020d000b0b20070b4a01017f0240024002402002418080c400460d0041012105200020022001280210118180808000000d010b20030d01410021050b20050f0b200020032004200128020c118080808000000b960201027f23808080800041206b22022480808080002002200036020c2002200128021441b090c080004111200141186a28020028020c118080808000003a001820022001360214200241003a001920024100360210200241106a2002410c6a41a090c0800010bc80808000210120022d0018210002400240200128020022030d00200041ff017141004721010c010b41012101200041ff01710d0020022802142100024020034101470d0020022d001941ff0171450d0020002d001c4104710d0041012101200028021441a38dc080004101200041186a28020028020c118080808000000d010b200028021441d88cc080004101200041186a28020028020c1180808080000021010b200241206a24808080800020010be90203027f017e037f23808080800041306b2203248080808000412721040240024020004290ce005a0d00200021050c010b412721040340200341096a20046a2206417c6a200020004290ce008022054290ce007e7da7220741ffff037141e4006e220841017441a48dc080006a2f00003b00002006417e6a2007200841e4006c6b41ffff037141017441a48dc080006a2f00003b00002004417c6a2104200042ffc1d72f5621062005210020060d000b0b02402005a7220641e3004d0d00200341096a2004417e6a22046a2005a72206200641ffff037141e4006e220641e4006c6b41ffff037141017441a48dc080006a2f00003b00000b024002402006410a490d00200341096a2004417e6a22046a200641017441a48dc080006a2f00003b00000c010b200341096a2004417f6a22046a200641306a3a00000b2002200141d88cc080004100200341096a20046a412720046b10b6808080002104200341306a24808080800020040b1200200141848fc08000410210b1808080000b0e0020002001200210c8808080000bb50101037f024002402002410f4b0d00200021030c010b2000410020006b41037122046a210502402004450d00200021030340200320013a0000200341016a22032005490d000b0b2005200220046b2204417c7122026a2103024020024101480d00200141ff017141818284086c2102034020052002360200200541046a22052003490d000b0b200441037121020b02402002450d00200320026a21050340200320013a0000200341016a22032005490d000b0b20000b0bcb100100418080c0000bc110496e76616c6964206861736820636f6e76657273696f6e2e436f756c646e2774206d6f7665207061746820647572696e6720636f6e666967206170706c69636174696f6e436f756c646e277420736574206b657920647572696e6720636f6e666967206170706c69636174696f6e696e7374616c6c65722d6b65726e656c2f7372632f696e7374722e7273006e0010001d00000025000000170000004661696c656420746f2072656164206b65726e656c20626f6f74207061746820696e20726561645f696e737472756374696f6e2f6b65726e656c2f656e762f7265626f6f74000000cf00100012000000002f6b65726e656c2f626f6f742e7761736d6578706c696369742070616e6963696e7374616c6c65722d6b65726e656c2f7372632f6c69622e7273000c0110001b0000003c000000050000004661696c656420746f20726561642073697a65206f6620636f6e6669672070726f6772616d2f5f5f696e7374616c6c65725f6b65726e656c2f617578696c696172792f6b65726e656c2f626f6f742e7761736d005d0110002e0000000c0110001b00000068000000160000004661696c656420746f2072656164206b65726e656c20626f6f7420706174682073697a654661696c656420746f20636f7079206b65726e656c20626f6f74206265666f726520636f6e66696720657865637574696f6e436f756c646e2774206465636f646520636f6e66696720696e737472756374696f6e4661696c656420746f2064656c65746520617578696c69617279206b65726e656c20626f6f7420616674657220636f6e66696720657865637574696f6e496e636f6d706c657465642070617273696e67436f756c646e277420726561642066726f6d206b65726e656c20626f6f7420706174684661696c656420746f207772697465206b65726e656c20636f6e74656e74207061676544414320707265696d616765207472656520636f6e7461696e7320746f6f206d616e79206c6576656c732e556e61626c6520746f206465636f64652044414320706167653a204465636f646520696e746f20536c69636550616765206661696c65644661696c656420746f20726574726965766520707265696d6167652f6275696c64732f74657a6f732f74657a6f732f7372632f6b65726e656c5f73646b2f656e636f64696e672f7372632f6461632f70616765732e7273002f0310003c0000003e0100001f00000047756172616e7465656420746f2062652065786163742e00010000000000000001000000020000002f0310003c0000001f0100002b000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e2829656e636f64696e672f7372632f6461632f70616765732e7273d7031000190000000201000015000000d703100019000000310100001500000050617468206d757374206e6f74207374617274206279202f726561646f6e6c792c207468697320697320612072657365727665640a2020202020202020202020202020202070617274206f66207468652073746f726167652e20557365732074686520617070726f7072696174652066756e6374696f6e20746f0a202020202020202020202020202020206c6f6f6b2076616c75657320696e20746869732073746f726167652e0010041000a7000000686f73742f7372632f706174682e7273c004100010000000cb0000000d000000506174682073746570206279746573206d7573742062652061736369695f616c7068616e756d65726963206f720a2020202020202020202020206f6e65206f662074686520666f6c6c6f77696e672073796d626f6c73202262272e2722202c202262275f2722202c202262272d272200e00410006f000000c004100010000000c50000000d00000050617468207374657073206d757374206265206e6f6e20656d707479680510001c000000c004100010000000c30000002d00000050617468206d75737420626567696e20776974682061207061746820736570617261746f720000009c05100025000000c004100010000000c2000000290000005061746820636f6e7461696e656420746f6f206d616e79206279746573000000dc0510001d000000c004100010000000c10000002800000050617468206d75737420636f6e7461696e206174206c65617374206f6e6520656d70747920737465700000001406100029000000c004100010000000c00000002600000029000000070000000000000001000000080000003a20000058061000000000006c06100002000000090000000c000000040000000a0000000b0000000c000000202020202c0a2c20280a282c30303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839390900000004000000040000000d0000000e0000000f000000282972616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682000008607100012000000980710002200000072616e676520656e6420696e64657820cc071000100000009807100022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000ec07100016000000020810000d0000000900000004000000040000001000000054727946726f6d536c6963654572726f7200840106636f6e6669674200000000210000000057fcb2b1a20b96769b0c9cca192eb088ce7b5772774efb5efbcffa56d8dd94971b2f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d2f000000011b2f696e7374616c6c65722f6b65726e656c2f626f6f742e7761736d112f6b65726e656c2f626f6f742e7761736d79000000 \ No newline at end of file diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0004f706e0a8c2338b3f54f02dbbb917cb7f1e3744b9fd230ff1889ebdb7e5fed2 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0004f706e0a8c2338b3f54f02dbbb917cb7f1e3744b9fd230ff1889ebdb7e5fed2 new file mode 100644 index 000000000..916cfd6df Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0004f706e0a8c2338b3f54f02dbbb917cb7f1e3744b9fd230ff1889ebdb7e5fed2 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00196427030da84c6763a35cc1437e74cf0faa80642568bc7b8a6adf06e0c428e3 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00196427030da84c6763a35cc1437e74cf0faa80642568bc7b8a6adf06e0c428e3 new file mode 100644 index 000000000..9bca9bd8e Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00196427030da84c6763a35cc1437e74cf0faa80642568bc7b8a6adf06e0c428e3 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0025dd5e23c06b91dbd91af7e832c859a558925de10be436888c98d5fc15b55526 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0025dd5e23c06b91dbd91af7e832c859a558925de10be436888c98d5fc15b55526 new file mode 100644 index 000000000..f453d3b13 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0025dd5e23c06b91dbd91af7e832c859a558925de10be436888c98d5fc15b55526 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/002958a64178d840f24a2aae98247187a9e81268370be73f438edccf22876d1dec b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/002958a64178d840f24a2aae98247187a9e81268370be73f438edccf22876d1dec new file mode 100644 index 000000000..9cdd1931c Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/002958a64178d840f24a2aae98247187a9e81268370be73f438edccf22876d1dec differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0034667a9f541a488039e2e15c8bfd6ca52b328500402d3be003cfd46fd9fa7b51 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0034667a9f541a488039e2e15c8bfd6ca52b328500402d3be003cfd46fd9fa7b51 new file mode 100644 index 000000000..275ec5d79 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0034667a9f541a488039e2e15c8bfd6ca52b328500402d3be003cfd46fd9fa7b51 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/003c214a5fc4af3f05c261c299886676bc968d8c83507381acf7763c3d68c059b1 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/003c214a5fc4af3f05c261c299886676bc968d8c83507381acf7763c3d68c059b1 new file mode 100644 index 000000000..6aa51aa3d Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/003c214a5fc4af3f05c261c299886676bc968d8c83507381acf7763c3d68c059b1 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0042452a031801534c8d89ae023f65823124fe1889cb8ddab077f2d1fd4c40c80b b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0042452a031801534c8d89ae023f65823124fe1889cb8ddab077f2d1fd4c40c80b new file mode 100644 index 000000000..dbe515b87 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0042452a031801534c8d89ae023f65823124fe1889cb8ddab077f2d1fd4c40c80b differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0046fbc476e9c7060b465a3e438589c70fba7ce3a68b11a5fb5ce0b206791570ae b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0046fbc476e9c7060b465a3e438589c70fba7ce3a68b11a5fb5ce0b206791570ae new file mode 100644 index 000000000..a8a369169 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0046fbc476e9c7060b465a3e438589c70fba7ce3a68b11a5fb5ce0b206791570ae differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/004a7b68cc8a0fc785dd0ba7f8a5d9ee65e9b3a5d061943f4698d07517b4d00585 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/004a7b68cc8a0fc785dd0ba7f8a5d9ee65e9b3a5d061943f4698d07517b4d00585 new file mode 100644 index 000000000..37dd62554 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/004a7b68cc8a0fc785dd0ba7f8a5d9ee65e9b3a5d061943f4698d07517b4d00585 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0057fcb2b1a20b96769b0c9cca192eb088ce7b5772774efb5efbcffa56d8dd9497 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0057fcb2b1a20b96769b0c9cca192eb088ce7b5772774efb5efbcffa56d8dd9497 new file mode 100644 index 000000000..587ec5cee Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0057fcb2b1a20b96769b0c9cca192eb088ce7b5772774efb5efbcffa56d8dd9497 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0058dfbb5eee609f4b015bdf1f046a524a471b28d8863139e3bdf31c58002f2111 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0058dfbb5eee609f4b015bdf1f046a524a471b28d8863139e3bdf31c58002f2111 new file mode 100644 index 000000000..7277c354b Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/0058dfbb5eee609f4b015bdf1f046a524a471b28d8863139e3bdf31c58002f2111 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/005c8b12d95a5db63be66ed021e4e24d2b12ccd8814304fa005b9c8d4596adb5bd b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/005c8b12d95a5db63be66ed021e4e24d2b12ccd8814304fa005b9c8d4596adb5bd new file mode 100644 index 000000000..4f4efdbc7 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/005c8b12d95a5db63be66ed021e4e24d2b12ccd8814304fa005b9c8d4596adb5bd differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/008a6e49d66f966dc1e50272b2641721aa1a1295307814587c0c5c000bde7ea9af b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/008a6e49d66f966dc1e50272b2641721aa1a1295307814587c0c5c000bde7ea9af new file mode 100644 index 000000000..0192b923b Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/008a6e49d66f966dc1e50272b2641721aa1a1295307814587c0c5c000bde7ea9af differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00a1cbc9c90d967c2cf5bc3ec4e544401f93876a5fa57960c0384ec450c82f466a b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00a1cbc9c90d967c2cf5bc3ec4e544401f93876a5fa57960c0384ec450c82f466a new file mode 100644 index 000000000..ef635d143 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00a1cbc9c90d967c2cf5bc3ec4e544401f93876a5fa57960c0384ec450c82f466a differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00b2a6767436d5a82fc82bb5b58729cad6b8d3f1e52e4f23e5a41a1a8feedbb943 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00b2a6767436d5a82fc82bb5b58729cad6b8d3f1e52e4f23e5a41a1a8feedbb943 new file mode 100644 index 000000000..ab2a475e6 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00b2a6767436d5a82fc82bb5b58729cad6b8d3f1e52e4f23e5a41a1a8feedbb943 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c328695263cc3820ced5fb0a9044935349979f4461edc5c8d72ab8d562a240b5 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c328695263cc3820ced5fb0a9044935349979f4461edc5c8d72ab8d562a240b5 new file mode 100644 index 000000000..fdbc4278f Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c328695263cc3820ced5fb0a9044935349979f4461edc5c8d72ab8d562a240b5 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c517b7a18bbfa53b013a597ee7777330d7edb8d7a5572baea82ff4f05d59aa8f b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c517b7a18bbfa53b013a597ee7777330d7edb8d7a5572baea82ff4f05d59aa8f new file mode 100644 index 000000000..f6ef54f90 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00c517b7a18bbfa53b013a597ee7777330d7edb8d7a5572baea82ff4f05d59aa8f differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00da54e4dcd03c77b1d1a2a6aa82d1ddbb64fb2280ccc7ae441bf131842f5def1e b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00da54e4dcd03c77b1d1a2a6aa82d1ddbb64fb2280ccc7ae441bf131842f5def1e new file mode 100644 index 000000000..88448b82c Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00da54e4dcd03c77b1d1a2a6aa82d1ddbb64fb2280ccc7ae441bf131842f5def1e differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00e539ed3469bf2d6e54493a5d740ba442de4e346884eaa87f376202fe093599dd b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00e539ed3469bf2d6e54493a5d740ba442de4e346884eaa87f376202fe093599dd new file mode 100644 index 000000000..d2d823666 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00e539ed3469bf2d6e54493a5d740ba442de4e346884eaa87f376202fe093599dd differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00eca27922c6b44a8258e84bd503a29987eb36b240716ba55de938e157e78fd965 b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00eca27922c6b44a8258e84bd503a29987eb36b240716ba55de938e157e78fd965 new file mode 100644 index 000000000..2da0ec72d Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00eca27922c6b44a8258e84bd503a29987eb36b240716ba55de938e157e78fd965 differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00ef74b1dad990f98ff261c97030fffbd6aeebfb63e6d02ef176fdb669d2d0b27d b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00ef74b1dad990f98ff261c97030fffbd6aeebfb63e6d02ef176fdb669d2d0b27d new file mode 100644 index 000000000..ea7fae817 Binary files /dev/null and b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/preimages/00ef74b1dad990f98ff261c97030fffbd6aeebfb63e6d02ef176fdb669d2d0b27d differ diff --git a/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/src/lib.rs b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/src/lib.rs new file mode 100644 index 000000000..d79f3b15e --- /dev/null +++ b/crates/jstzd/tests/resources/rollup/sr1Uuiucg1wk5aovEY2dj1ZBsqjwxndrSaao/src/lib.rs @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: 2023 Marigold +// SPDX-FileCopyrightText: 2023 Nomadic Labs +// +// SPDX-License-Identifier: MIT + +use tezos_crypto_rs::hash::SmartRollupHash; +use tezos_data_encoding::enc::BinWriter; +use tezos_smart_rollup::{ + inbox::{InboxMessage, InternalInboxMessage}, + kernel_entry, + michelson::{Michelson, MichelsonInt}, + outbox::{OutboxMessage, OutboxMessageTransaction, OutboxMessageTransactionBatch}, + prelude::*, + types::{Contract, Entrypoint}, +}; + +const L1_CONTRACT_ADDRESS: &str = "KT1TFAweS9bMBetdDB3ndFicJWAEMb8MtSrK"; +const L1_CONTRACT_ENTRYPOINT: &str = "default"; + +fn read_inbox_message( + host: &mut impl Runtime, + own_address: &SmartRollupHash, +) { + loop { + match host.read_input() { + Ok(Some(message)) => { + let parsed_message = InboxMessage::::parse(message.as_ref()); + if let Ok((remaining, InboxMessage::External(_))) = parsed_message { + debug_assert!(remaining.is_empty()); + write_outbox_message(host, MichelsonInt::from(1)) + } + } + Ok(None) => break, + Err(_) => continue, + } + } +} + +fn write_outbox_message(host: &mut impl Runtime, payload: Expr) { + let destination = Contract::from_b58check(L1_CONTRACT_ADDRESS).unwrap(); + let entrypoint = Entrypoint::try_from(L1_CONTRACT_ENTRYPOINT.to_string()).unwrap(); + let transaction = OutboxMessageTransaction { + parameters: payload, + destination, + entrypoint, + }; + + let batch = OutboxMessageTransactionBatch::from(vec![transaction]); + let message = OutboxMessage::AtomicTransactionBatch(batch); + let mut output = Vec::default(); + message.bin_write(&mut output).unwrap(); + host.write_output(&output).unwrap(); +} + +pub fn entry(host: &mut impl Runtime) { + let own_address = host.reveal_metadata().address(); + read_inbox_message::(host, &own_address); + host.mark_for_reboot().unwrap(); +} + +kernel_entry!(entry); diff --git a/crates/jstzd/tests/utils.rs b/crates/jstzd/tests/utils.rs index d905d656e..f15245e2f 100644 --- a/crates/jstzd/tests/utils.rs +++ b/crates/jstzd/tests/utils.rs @@ -33,13 +33,33 @@ where false } -pub async fn setup() -> (OctezNode, OctezClient, octez_baker::OctezBaker) { +pub async fn poll<'a, F, T>( + max_attempts: u16, + interval_ms: u64, + f: impl Fn() -> F, +) -> Option +where + F: std::future::Future> + Send + 'a, +{ + let duration = tokio::time::Duration::from_millis(interval_ms); + for _ in 0..max_attempts { + tokio::time::sleep(duration).await; + if let Some(v) = f().await { + return Some(v); + } + } + None +} + +pub async fn setup( + param_file_path: Option, +) -> (OctezNode, OctezClient, octez_baker::OctezBaker) { let octez_node = spawn_octez_node().await; let octez_client = create_client(octez_node.rpc_endpoint()); import_bootstrap_keys(&octez_client).await; import_activator(&octez_client).await; - activate_alpha(&octez_client, None).await; + activate_alpha(&octez_client, param_file_path).await; let baker = spawn_baker(&octez_node, &octez_client).await; (octez_node, octez_client, baker) @@ -48,17 +68,17 @@ pub async fn setup() -> (OctezNode, OctezClient, octez_baker::OctezBaker) { pub async fn spawn_rollup( octez_node: &OctezNode, octez_client: &OctezClient, + installer_path: PathBuf, + preimages_dir: PathBuf, + rollup_address: Option<&str>, ) -> octez_rollup::OctezRollup { - let kernel_installer = Path::new(std::env!("CARGO_MANIFEST_DIR")) - .join("tests/toy_rollup/kernel_installer"); - let preimages_dir = - Path::new(std::env!("CARGO_MANIFEST_DIR")).join("tests/toy_rollup/preimages"); let config = OctezRollupConfigBuilder::new( octez_node.rpc_endpoint().clone(), octez_client.base_dir().into(), - SmartRollupHash::from_base58_check(ROLLUP_ADDRESS).unwrap(), + SmartRollupHash::from_base58_check(rollup_address.unwrap_or(ROLLUP_ADDRESS)) + .unwrap(), "bootstrap1".to_string(), - kernel_installer, + installer_path, ) .set_data_dir(RollupDataDir::TempWithPreImages { preimages_dir }) .build() diff --git a/crates/octez/src/async/client.rs b/crates/octez/src/async/client.rs index 8ca5e83bd..601113d49 100644 --- a/crates/octez/src/async/client.rs +++ b/crates/octez/src/async/client.rs @@ -9,7 +9,7 @@ use std::{ path::{Path, PathBuf}, }; use tempfile::tempdir; -use tezos_crypto_rs::hash::{BlockHash, ContractKt1Hash, OperationHash}; +use tezos_crypto_rs::hash::{BlockHash, ContractKt1Hash, OperationHash, SmartRollupHash}; use tokio::process::Command; use super::{directory::Directory, endpoint::Endpoint, node_config::OctezNodeConfig}; @@ -534,6 +534,42 @@ impl OctezClient { let output = self.spawn_and_wait_command(args).await?; Ok((parse_block_hash(&output)?, parse_operation_hash(&output)?)) } + + pub async fn execute_rollup_outbox_message( + &self, + rollup_address: &SmartRollupHash, + src: &str, + commitment_hash: &str, + output_proof: &str, + burn_cap: Option, + ) -> Result<(BlockHash, OperationHash)> { + let burn_cap_str = burn_cap.map(|v| v.to_string()); + let rollup_address_str = rollup_address.to_string(); + let mut args = vec![ + "execute", + "outbox", + "message", + "of", + "smart", + "rollup", + &rollup_address_str, + "from", + src, + "for", + "commitment", + "hash", + commitment_hash, + "and", + "output", + "proof", + output_proof, + ]; + if let Some(v) = &burn_cap_str { + args.append(&mut vec!["--burn-cap", v]); + } + let output = self.spawn_and_wait_command(args).await?; + Ok((parse_block_hash(&output)?, parse_operation_hash(&output)?)) + } } fn parse_regex(pattern_str: &str, output: &str) -> Result {