diff --git a/Cargo.lock b/Cargo.lock index cf454452..2cb40b2f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -199,7 +199,7 @@ dependencies = [ "air-interpreter-sede", "air-interpreter-value", "fluence-it-types", - "marine-call-parameters", + "marine-call-parameters 0.14.0", "marine-rs-sdk", "serde", "serde_bytes", @@ -483,6 +483,7 @@ dependencies = [ "atty", "avm-data-store", "avm-interface", + "avm-server", "bs58 0.5.0", "clap 4.4.11", "eyre", @@ -2427,9 +2428,9 @@ dependencies = [ [[package]] name = "fluence-app-service" -version = "0.31.1" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b01d8308282e3ab2e46e722d3004fbf9ac4f345a9de4e2a2d1afdc74fda64a8b" +checksum = "7e95950035a16589b5ed736ee920839e475b864965b4e4061e2bc1faaf58f1f2" dependencies = [ "log", "maplit", @@ -3412,17 +3413,50 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef9a7c6ed5fa9052474c1cd76d3b3e67dbc4c455c76263c2c043214e12cce6bd" dependencies = [ - "marine-macro", - "marine-rs-sdk-main", + "marine-macro 0.10.3", + "marine-rs-sdk-main 0.10.3", + "serde", +] + +[[package]] +name = "marine-call-parameters" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47b1186bad0b2a5e9218e3f6fbe0612ef6b17c58c58537d77bd08044596ea95" +dependencies = [ + "marine-macro 0.12.0", + "marine-rs-sdk-main 0.12.0", + "serde", +] + +[[package]] +name = "marine-call-parameters" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d16852b36a3cfc8fa044955380901e78109db0035dc93eea4f666d8f3979072" +dependencies = [ + "marine-macro 0.13.0", + "marine-rs-sdk-main 0.13.0", + "serde", +] + +[[package]] +name = "marine-call-parameters" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05495180730abae04abe209386ce367309a82110edb65fcdb1f3080f819bc1a0" +dependencies = [ + "marine-macro 0.14.0", + "marine-rs-sdk-main 0.14.0", "rkyv", "serde", ] [[package]] name = "marine-core" -version = "0.26.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0e21dd5918c69eefcc06acea338bf444f9137fca6e193b52bfd8e0f069ab4d" +checksum = "81f40fac4650a022a2ce8d7b6df5614062fc32cb25fb44e61027997e90a3aff6" dependencies = [ "anyhow", "bytesize", @@ -3449,13 +3483,13 @@ dependencies = [ [[package]] name = "marine-it-generator" -version = "0.13.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03328e174951faf739e7e12be3d9ffb044cfc308508dc89260d63a1a43a0df" +checksum = "23bdd0119dc71f98e2f0a4bef305e43b9a4d9b9adbead12bc05b0fac1d5a247c" dependencies = [ "it-lilo", "marine-it-parser", - "marine-macro-impl 0.7.1", + "marine-macro-impl 0.14.0", "once_cell", "serde", "serde_json", @@ -3500,14 +3534,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acdaa50f8239afa104ef8a99d4219288f68169e29c913485bbd094a35fe79113" dependencies = [ "marine-macro-impl 0.10.3", - "marine-rs-sdk-main", + "marine-rs-sdk-main 0.10.3", +] + +[[package]] +name = "marine-macro" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727b1a5449eb1676837c5fc22a8c31dc9980dcef4de938f26f2eaf7c2c54331b" +dependencies = [ + "marine-macro-impl 0.12.0", + "marine-rs-sdk-main 0.12.0", +] + +[[package]] +name = "marine-macro" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cec2cd19fedf559833d0f1e6a33cbcc5cf0efa338bb0975346ff12538a3cdde4" +dependencies = [ + "marine-macro-impl 0.13.0", + "marine-rs-sdk-main 0.13.0", +] + +[[package]] +name = "marine-macro" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f502185316f584a9373cceb6ff24a11d260dfd39505c817056bc127cd1a96a08" +dependencies = [ + "marine-macro-impl 0.14.0", + "marine-rs-sdk-main 0.14.0", ] [[package]] name = "marine-macro-impl" -version = "0.7.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca474b63cabaf8d7d9b38de87d630023cbc91ddc77e92f9c7bb745462a131b44" +checksum = "460ef42c1bf6dbb88976a00514f8e1b97a7ccb60e3e6009cbb563b0d163166c7" dependencies = [ "proc-macro2", "quote", @@ -3518,9 +3582,35 @@ dependencies = [ [[package]] name = "marine-macro-impl" -version = "0.10.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460ef42c1bf6dbb88976a00514f8e1b97a7ccb60e3e6009cbb563b0d163166c7" +checksum = "57c8cd8a228856db057bd4a32c6e2708848b2b1db7552be0a6063d534cafb4e2" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "marine-macro-impl" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e09acb3ada67e69a301b6d7b52a915a36176c5eedb312647de7d5b6cf17f51e4" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "marine-macro-impl" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e50fbc0e70ee4cde7802f0748acfb197d7770c7feffb980ce8c29bddd007519e" dependencies = [ "proc-macro2", "quote", @@ -3541,14 +3631,14 @@ dependencies = [ [[package]] name = "marine-module-info-parser" -version = "0.11.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d578b9c5b1a95e9f76301a347d0fbaef5e5e22a0c370e43fc575253e69fa23e6" +checksum = "9b312830884d07fc495a43e867d9641163897f0b0b047842cf1172cc61f57075" dependencies = [ "anyhow", "chrono", "derivative", - "marine-rs-sdk-main", + "marine-rs-sdk-main 0.14.0", "marine-wasm-backend-traits", "semver 1.0.21", "serde", @@ -3575,13 +3665,13 @@ dependencies = [ [[package]] name = "marine-rs-sdk" -version = "0.10.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034cab8adf708e87db08f093e0c7b8ea49359cc875ed2a778c1bf245b5d9d9f8" +checksum = "f93d2bd852fea1fea8097c195044430347eda98fd6a3752119b549192d5ac4ba" dependencies = [ - "marine-call-parameters", - "marine-macro", - "marine-rs-sdk-main", + "marine-call-parameters 0.14.0", + "marine-macro 0.14.0", + "marine-rs-sdk-main 0.14.0", "marine-timestamp-macro", "serde", ] @@ -3597,20 +3687,53 @@ dependencies = [ ] [[package]] -name = "marine-runtime" -version = "0.32.1" +name = "marine-rs-sdk-main" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c9a539b0b1586839f133f768db670f0b3f6cd5ffd977dc247cbf8acf8a3dc1a" +checksum = "6cba9000500575b4965ec44e44bbbfd056d121be1195969ce1a5cc146646c37b" +dependencies = [ + "log", + "serde", +] + +[[package]] +name = "marine-rs-sdk-main" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b487a1a1b288ba06c832942eadb43384cd99c9754c1454e1e061dd9866be92" +dependencies = [ + "log", + "serde", +] + +[[package]] +name = "marine-rs-sdk-main" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b79c165fc21438b069babeec5ae36ba0eade5e08fb1d92dabbe6b41014ce841" +dependencies = [ + "log", + "serde", +] + +[[package]] +name = "marine-runtime" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c599c7c13e976170a1211e31fe2fb4557e0479cbdba331b19a5a9e87f145f52" dependencies = [ "bytesize", "it-json-serde", "it-memory-traits", "itertools", "log", + "marine-call-parameters 0.10.3", + "marine-call-parameters 0.12.0", + "marine-call-parameters 0.13.0", "marine-core", "marine-module-interface", "marine-rs-sdk", - "marine-rs-sdk-main", + "marine-rs-sdk-main 0.14.0", "marine-utils", "marine-wasm-backend-traits", "marine-wasmtime-backend", @@ -3627,9 +3750,9 @@ dependencies = [ [[package]] name = "marine-timestamp-macro" -version = "0.10.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f812a03cb13b79ab75e38053a77ecc4b4738a1b485b650d971dec3dbbcb2561" +checksum = "d03f267ac0a29f543ef12a1a519ff8d98e74ac66e1c580f2930d41ce2c50507d" dependencies = [ "chrono", "quote", @@ -4844,7 +4967,7 @@ dependencies = [ name = "polyplets" version = "0.6.0" dependencies = [ - "marine-call-parameters", + "marine-call-parameters 0.14.0", "serde", ] diff --git a/air-interpreter/Cargo.toml b/air-interpreter/Cargo.toml index ff355f03..442774c5 100644 --- a/air-interpreter/Cargo.toml +++ b/air-interpreter/Cargo.toml @@ -22,7 +22,7 @@ aquavm-air = { version = "0.60.0", path = "../air" } air-interpreter-interface = { version = "0.18.0", path = "../crates/air-lib/interpreter-interface" } air-log-targets = { version = "0.1.0", path = "../crates/air-lib/log-targets" } -marine-rs-sdk = {version = "0.10.3", features = ["logger"] } +marine-rs-sdk = {version = "0.14.0", features = ["logger"] } wasm-bindgen = "=0.2.83" diff --git a/air/Cargo.toml b/air/Cargo.toml index 0b7e8fc3..065fa930 100644 --- a/air/Cargo.toml +++ b/air/Cargo.toml @@ -53,8 +53,8 @@ rkyv = { version = "0.7.43", features = ["strict", "validation", "size_32", "arc [dev_dependencies] air-test-utils = { path = "../crates/air-lib/test-utils" } air-testing-framework = { path = "../crates/testing-framework" } -fluence-app-service = "0.31.0" -marine-rs-sdk = { version = "0.10.0", features = ["logger"] } +fluence-app-service = "0.34.0" +marine-rs-sdk = { version = "0.14.0", features = ["logger"] } borsh = "0.10.3" bs58 = "0.5.0" diff --git a/air/src/execution_step/instructions/ap/apply_to_arguments.rs b/air/src/execution_step/instructions/ap/apply_to_arguments.rs index 5770b8ea..52753aae 100644 --- a/air/src/execution_step/instructions/ap/apply_to_arguments.rs +++ b/air/src/execution_step/instructions/ap/apply_to_arguments.rs @@ -149,7 +149,7 @@ fn apply_canon_stream( let value = JValuable::as_jvalue(&&canon_stream.canon_stream); let tetraplet = canon_stream.tetraplet().clone(); let position = trace_ctx.trace_pos().map_err(UncatchableError::from)?; - let value = CanonResultAggregate::new(value, tetraplet.peer_pk.as_str().into(), &tetraplet.json_path, position); + let value = CanonResultAggregate::new(value, tetraplet.peer_pk.as_str().into(), &tetraplet.lens, position); let result = ValueAggregate::from_canon_result(value, canon_stream.cid.clone()); Ok(result) } @@ -187,7 +187,7 @@ fn apply_canon_stream_map( let value = JValuable::as_jvalue(&&canon_stream_map.canon_stream_map); let tetraplet = canon_stream_map.tetraplet(); let position = trace_ctx.trace_pos().map_err(UncatchableError::from)?; - let value = CanonResultAggregate::new(value, tetraplet.peer_pk.as_str().into(), &tetraplet.json_path, position); + let value = CanonResultAggregate::new(value, tetraplet.peer_pk.as_str().into(), &tetraplet.lens, position); let result = ValueAggregate::from_canon_result(value, canon_stream_map.cid.clone()); Ok(result) } diff --git a/air/src/execution_step/instructions/canon_stream_map_scalar.rs b/air/src/execution_step/instructions/canon_stream_map_scalar.rs index e6bcc811..bfeb8ee1 100644 --- a/air/src/execution_step/instructions/canon_stream_map_scalar.rs +++ b/air/src/execution_step/instructions/canon_stream_map_scalar.rs @@ -87,7 +87,7 @@ fn epilog_closure<'closure, 'name: 'closure>(scalar_name: &'name str) -> Box( let result = select_by_path_from_scalar(&value, body.iter(), exec_ctx)?; let joined = body.iter().map(ToString::to_string).collect::>().join("."); - let json_path_suffix = format!(".{}", joined); + let lambda_suffix = format!(".{}", joined); let prefix_with_path = true; - let updated_tetraplet = update_tetraplet_with_path(&tetraplet, &json_path_suffix, prefix_with_path); + let updated_tetraplet = update_tetraplet_with_path(&tetraplet, &lambda_suffix, prefix_with_path); MapLensResult::new(result, updated_tetraplet) }; @@ -206,14 +206,14 @@ fn update_tetraplet_with_path( original_path: &impl ToString, prefix_with_path: bool, ) -> RcSecurityTetraplet { - let json_path_updated = if prefix_with_path { - original_tetraplet.json_path.to_string() + &original_path.to_string() + let lens_updated = if prefix_with_path { + original_tetraplet.lens.to_string() + &original_path.to_string() } else { original_path.to_string() }; SecurityTetraplet { - json_path: json_path_updated, + lens: lens_updated, ..original_tetraplet.clone() } .into() diff --git a/air/src/execution_step/value_types/iterable/lambda_result.rs b/air/src/execution_step/value_types/iterable/lambda_result.rs index 69831d06..677a0912 100644 --- a/air/src/execution_step/value_types/iterable/lambda_result.rs +++ b/air/src/execution_step/value_types/iterable/lambda_result.rs @@ -61,7 +61,7 @@ impl<'ctx> Iterable<'ctx> for IterableLambdaResult { let jvalue = &self.jvalues[self.cursor]; let mut tetraplet = (*self.tetraplet).clone(); - tetraplet.add_lambda(&format!(".$.[{}]", self.cursor)); + tetraplet.add_lens(&format!(".$.[{}]", self.cursor)); let result = IterableItem::RefValue((jvalue, tetraplet.into(), 0.into(), self.provenance.clone())); Some(result) diff --git a/air/src/execution_step/value_types/iterable/resolved_call.rs b/air/src/execution_step/value_types/iterable/resolved_call.rs index 2f1876d8..bde8f04f 100644 --- a/air/src/execution_step/value_types/iterable/resolved_call.rs +++ b/air/src/execution_step/value_types/iterable/resolved_call.rs @@ -64,7 +64,7 @@ impl<'ctx> Iterable<'ctx> for IterableResolvedCall { }; let mut tetraplet = (*tetraplet).clone(); - tetraplet.add_lambda(&format!(".$.[{}]", self.cursor)); + tetraplet.add_lens(&format!(".$.[{}]", self.cursor)); let result = IterableItem::RefValue((jvalue, tetraplet.into(), trace_pos, provenance)); Some(result) diff --git a/air/src/execution_step/value_types/scalar.rs b/air/src/execution_step/value_types/scalar.rs index 9ca6a6fd..85e003c1 100644 --- a/air/src/execution_step/value_types/scalar.rs +++ b/air/src/execution_step/value_types/scalar.rs @@ -93,7 +93,7 @@ impl ValueAggregate { result: CanonResultAggregate::new( result, tetraplet.peer_pk.as_str().into(), - &tetraplet.json_path, + &tetraplet.lens, trace_pos, ), provenance_cid: cid, diff --git a/air/src/execution_step/value_types/utils.rs b/air/src/execution_step/value_types/utils.rs index b3a096f5..35025fd0 100644 --- a/air/src/execution_step/value_types/utils.rs +++ b/air/src/execution_step/value_types/utils.rs @@ -23,7 +23,7 @@ pub(crate) fn populate_tetraplet_with_lambda( ) -> SecurityTetraplet { match lambda { LambdaAST::ValuePath(_) => { - tetraplet.add_lambda(&lambda.to_string()); + tetraplet.add_lens(&lambda.to_string()); tetraplet } LambdaAST::Functor(_) => SecurityTetraplet::new("", "", "", lambda.to_string()), diff --git a/air/tests/test_module/features/cid/canon.rs b/air/tests/test_module/features/cid/canon.rs index df6c3da8..f18cc822 100644 --- a/air/tests/test_module/features/cid/canon.rs +++ b/air/tests/test_module/features/cid/canon.rs @@ -61,12 +61,12 @@ fn test_canon_ok() { stream_exec_state, canon_tracked( json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "values": [{ "result": 42, "tetraplet": { "function_name": "", - "json_path": "", + "lens": "", "peer_pk": init_peer_id, "service_id": "", }, @@ -75,7 +75,7 @@ fn test_canon_ok() { "result": "to canon", "tetraplet": { "function_name": "func", - "json_path": "", + "lens": "", "peer_pk": init_peer_id, "service_id": "serv..0", }, @@ -151,12 +151,12 @@ fn test_canon_ok_multi() { stream_state_2, canon_tracked( json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "values": [{ "result": "to canon", "tetraplet": { "function_name": "func", - "json_path": "", + "lens": "", "peer_pk": init_peer_id, "service_id": "serv..0", }, @@ -165,7 +165,7 @@ fn test_canon_ok_multi() { "result": "other", "tetraplet": { "function_name": "other_func", - "json_path": "", + "lens": "", "peer_pk": other_peer_id, "service_id": "other_serv..1", }, @@ -207,12 +207,12 @@ fn test_canon_value_not_found() { ap(0), canon_tracked( json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "values": [{ "result": 42, "tetraplet": { "function_name": "", - "json_path": "", + "lens": "", "peer_pk": init_peer_id, "service_id": "", }, @@ -256,12 +256,12 @@ fn test_canon_root_tetraplet_not_found() { ap(0), canon_tracked( json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "values": [{ "result": 42, "tetraplet": { "function_name": "", - "json_path": "", + "lens": "", "peer_pk": other_peer_id, "service_id": "", }, @@ -271,7 +271,7 @@ fn test_canon_root_tetraplet_not_found() { ), ]; - let missing_cid = "bagaaihraydnoggy3vbf42ebqdjffuqnqpiwk2ryytc4esqasavlo6zzv7e4a"; + let missing_cid = "bagaaihrays67nve662j4pn5jdqquxlqqi5vpisgs72n4tmnrqbbnah3t5ola"; let tetraplet_store: CidStore<_> = cid_state.tetraplet_tracker.into(); assert!( tetraplet_store.get(&CID::<_>::new(missing_cid)).is_some(), @@ -317,12 +317,12 @@ fn test_canon_tetraplet_not_found() { ), canon_tracked( json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "values": [{ "result": 42, "tetraplet": { "function_name": "func", - "json_path": "", + "lens": "", "peer_pk": "peer_1", "service_id": "serv..0", }, @@ -331,7 +331,7 @@ fn test_canon_tetraplet_not_found() { &mut cid_state, ), ]; - let missing_cid = "bagaaihrasj5rizxwp3gypeiszoyq6nwmlvyu3fxqmfv6yu7uvuir6litgyna"; + let missing_cid = "bagaaihramktnmwzskmyxlah5zyownsfxv4vt7wf2ypzwvrygb2x7o72vpfyq"; let tetraplet_store: CidStore<_> = cid_state.tetraplet_tracker.into(); assert!( tetraplet_store.get(&CID::<_>::new(missing_cid)).is_some(), @@ -369,12 +369,12 @@ fn test_canon_agg_not_found() { ap(0), canon_tracked( json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "other_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "other_peer_id", "service_id": ""}, "values": [{ "result": 42, "tetraplet": { "function_name": "", - "json_path": "", + "lens": "", "peer_pk": init_peer_id, "service_id": "", }, @@ -385,7 +385,7 @@ fn test_canon_agg_not_found() { ), ]; - let missing_cid = "bagaaihraqxwgyh7ihp2cmyt6piqqm7s2bz2xr2sgohzn34tnstksoyb4wsza"; + let missing_cid = "bagaaihrad3w3ebwqwgzoxyvdyq7wgxeawv2i6olczg6mnivu6fnwwm4m42oq"; let canon_element_store: CidStore<_> = cid_state.canon_element_tracker.into(); assert!( canon_element_store.get(&CID::<_>::new(missing_cid)).is_some(), diff --git a/air/tests/test_module/features/errors/last_error.rs b/air/tests/test_module/features/errors/last_error.rs index 15fdd9b8..33f47ef8 100644 --- a/air/tests/test_module/features/errors/last_error.rs +++ b/air/tests/test_module/features/errors/last_error.rs @@ -88,7 +88,7 @@ fn last_error_tetraplets() { assert_eq!(tetraplet.peer_pk, fallible_peer_id); assert_eq!(tetraplet.service_id, "fallible_call_service"); assert_eq!(tetraplet.function_name, ""); - assert_eq!(&(*tetraplets.borrow()).as_ref().unwrap()[0][0].json_path, ""); + assert_eq!(&(*tetraplets.borrow()).as_ref().unwrap()[0][0].lens, ""); } #[test] diff --git a/air/tests/test_module/features/join_behaviour/join_behaviour.rs b/air/tests/test_module/features/join_behaviour/join_behaviour.rs index 380a9f3f..c324003f 100644 --- a/air/tests/test_module/features/join_behaviour/join_behaviour.rs +++ b/air/tests/test_module/features/join_behaviour/join_behaviour.rs @@ -19,7 +19,7 @@ use air::LambdaError; use air_test_utils::prelude::*; #[test] -fn dont_wait_on_json_path() { +fn dont_wait_on_lambda() { let status = json!({ "err_msg": "", "is_authenticated": 1, @@ -67,7 +67,7 @@ fn dont_wait_on_json_path() { } #[test] -fn dont_wait_on_json_path_on_scalars() { +fn dont_wait_on_lambda_on_scalars() { let array = json!([1u32, 2u32, 3u32, 4u32, 5u32]); let object = json!({ @@ -271,7 +271,7 @@ fn canon_with_empty_behaviour() { let result = checked_call_vm!(peer_2, <_>::default(), script, "", ""); let actual_trace = trace_from_result(&result); let expected_trace = vec![executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id", "service_id": ""}, "values": []}), + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id", "service_id": ""}, "values": []}), )]; assert_eq!(actual_trace, expected_trace); diff --git a/air/tests/test_module/features/lambda/functors.rs b/air/tests/test_module/features/lambda/functors.rs index 08f230ed..ec7df784 100644 --- a/air/tests/test_module/features/lambda/functors.rs +++ b/air/tests/test_module/features/lambda/functors.rs @@ -94,16 +94,16 @@ fn length_functor_for_stream() { executed_state::ap(0), executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "values": [ { "result": 1, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "trace_pos": 0, }, { "result": 1, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "trace_pos": 1, }, ] @@ -135,7 +135,7 @@ fn length_functor_for_empty_stream() { let expected_trace = vec![ executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "values": []} ), ), unused!(0, peer = init_peer_id, service = "..0", args = vec![0]), @@ -170,9 +170,9 @@ fn length_functor_for_canon_stream() { executed_state::ap(0), executed_state::ap(0), executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, - "values": [{"result": 1, "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, "trace_pos": 0}, - {"result": 1, "tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, "trace_pos": 1} + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, + "values": [{"result": 1, "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "trace_pos": 0}, + {"result": 1, "tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "trace_pos": 1} ]} ), ), unused!(2, peer = init_peer_id, service = "..0", args = vec![2]), @@ -202,7 +202,7 @@ fn length_functor_for_empty_canon_stream() { let expected_trace = vec![ executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": init_peer_id, "service_id": ""}, "values": []} ), + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": init_peer_id, "service_id": ""}, "values": []} ), ), unused!(0, peer = init_peer_id, service = "..0", args = vec![0]), ]; diff --git a/air/tests/test_module/features/signatures/attacks.rs b/air/tests/test_module/features/signatures/attacks.rs index b3d200ae..d96b2375 100644 --- a/air/tests/test_module/features/signatures/attacks.rs +++ b/air/tests/test_module/features/signatures/attacks.rs @@ -448,10 +448,10 @@ fn test_attack_replay() { let nested_error = fluence_keypair::error::VerificationError::Ed25519( dalek_error, // will break if signed data format changes - "8ATKuSr1J6NvqT3PBBf3qcDWsnDcnNpznFBSdzAVJnASV8MHrc15zKYYQkCcywcXFPgXJAdEzTNdhixDQKQjDL4".to_owned(), + "5KxZZzHbixcH8idzggBJYDgXP87qBBWAHLeFvPvCRVMqyAbf6mrqMdAa1P3iNjAaxXVFuJsxtrrQaL1MKw6C8pER".to_owned(), "6m3zmtymxDL56KBpNgKqc7QiGRuWuxr82bG2q7dF5xCD".to_owned(), ); - let cids: Vec> = vec!["bagaaihra7fcndppbd44kltfjcy6ihc4fmxepwt256vswc7x2qqgznazx3j3a".into()]; + let cids: Vec> = vec!["bagaaihrarsryjavaf4zikqilrc2hzph7rszpfyfxjpopfnczjxlqeb56nbhq".into()]; let expected = PreparationError::DataSignatureCheckError(verification::DataVerifierError::SignatureMismatch { error: Box::new(nested_error.into()), cids, diff --git a/air/tests/test_module/features/signatures/corruption.rs b/air/tests/test_module/features/signatures/corruption.rs index 1f232cc7..226a0e4e 100644 --- a/air/tests/test_module/features/signatures/corruption.rs +++ b/air/tests/test_module/features/signatures/corruption.rs @@ -173,7 +173,7 @@ fn test_attack_replace_tetraplet() { PreparationError::CidStoreVerificationError( CidVerificationError::ValueMismatch { type_name: "marine_call_parameters::SecurityTetraplet", - cid_repr: "bagaaihraqlxlbr5q54odmlqwrzpw4smuxzzqbrfas6c7ajhb73samtrjkkva".into(), + cid_repr: "bagaaihraxnms7hna6c27qhgfzhyayz62y2q2dxc4dwriq33tdilonmq4ruoq".into(), } .into() ) @@ -256,7 +256,7 @@ fn test_attack_replace_call_result() { PreparationError::CidStoreVerificationError( CidVerificationError::ValueMismatch { type_name: "air_interpreter_data::executed_state::ServiceResultCidAggregate", - cid_repr: "bagaaihrai3ii6rephch2kv2efkbolmhfjvpj2w3fyr2tj6lavd4yiloy2ybq".into(), + cid_repr: "bagaaihradr2m7mlsvqhtnzszpuifqgiytee6zpyxyfzxbuqcmf23fgmbemqq".into(), } .into() ) @@ -290,9 +290,9 @@ fn test_attack_replace_canon_value() { let mut mallory_cid_state = ExecutionCidState::new(); let alice_canon_cid = canon_tracked( json!({ - "tetraplet": {"peer_pk": &alice_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": &alice_peer_id, "service_id": "", "function_name": "", "lens": ""}, "values": [{ - "tetraplet": {"peer_pk": &alice_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": &alice_peer_id, "service_id": "", "function_name": "", "lens": ""}, "result": 1, "provenance": Provenance::literal(), }] @@ -346,7 +346,7 @@ fn test_attack_replace_canon_value() { PreparationError::CidStoreVerificationError( CidVerificationError::ValueMismatch { type_name: "air_interpreter_data::executed_state::CanonCidAggregate", - cid_repr: "bagaaihram3i44lmbxmukumwohtp2dkocgdqjwzixddzxjmzlvhea7aid5l7q".into(), + cid_repr: "bagaaihracce5ggyu3cbxm4xh35mjlmb7qb3xltlwoqqas62e2yftii4x4msq".into(), } .into() ) @@ -382,13 +382,13 @@ fn test_attack_replace_canon_result_values() { let mut mallory_cid_state = ExecutionCidState::new(); let alice_canon_cid = canon_tracked( json!({ - "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "lens": ""}, "values": [{ - "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "lens": ""}, "result": 1, "provenance": Provenance::literal(), }, { - "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "lens": ""}, "result": 2, "provenance": Provenance::literal(), }] @@ -445,7 +445,7 @@ fn test_attack_replace_canon_result_values() { PreparationError::CidStoreVerificationError( CidVerificationError::ValueMismatch { type_name: "air_interpreter_data::executed_state::CanonResultCidAggregate", - cid_repr: "bagaaihrar7xfyl5usjhn5s6xisvwkh55zyq5lvjnwr6j5j3yjutf55aowqea".into(), + cid_repr: "bagaaihraxsxqmnfevwk6briizagprfikpm4x73mdf626mm5xju2f33vp7c7q".into(), } .into() ) @@ -481,13 +481,13 @@ fn test_attack_replace_canon_result_tetraplet() { let mut mallory_cid_state = ExecutionCidState::new(); let alice_canon_cid = canon_tracked( json!({ - "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "lens": ""}, "values": [{ - "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "lens": ""}, "result": 1, "provenance": Provenance::literal(), }, { - "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": alice_peer_id, "service_id": "", "function_name": "", "lens": ""}, "result": 2, "provenance": Provenance::literal(), }] @@ -548,7 +548,7 @@ fn test_attack_replace_canon_result_tetraplet() { PreparationError::CidStoreVerificationError( CidVerificationError::ValueMismatch { type_name: "air_interpreter_data::executed_state::CanonResultCidAggregate", - cid_repr: "bagaaihrar7xfyl5usjhn5s6xisvwkh55zyq5lvjnwr6j5j3yjutf55aowqea".into(), + cid_repr: "bagaaihraxsxqmnfevwk6briizagprfikpm4x73mdf626mm5xju2f33vp7c7q".into(), } .into() ) diff --git a/air/tests/test_module/features/signatures/runtime.rs b/air/tests/test_module/features/signatures/runtime.rs index 33933bd9..081934a8 100644 --- a/air/tests/test_module/features/signatures/runtime.rs +++ b/air/tests/test_module/features/signatures/runtime.rs @@ -126,14 +126,14 @@ fn test_runtime_executed_call_tetraplet() { let expected_value = format!( concat!( r#"SecurityTetraplet {{ peer_pk: "{alice_peer_id}","#, - r#" service_id: "service1", function_name: "func", json_path: "" }}"# + r#" service_id: "service1", function_name: "func", lens: "" }}"# ), alice_peer_id = alice_peer_id, ); let stored_value = format!( concat!( r#"SecurityTetraplet {{ peer_pk: "{alice_peer_id}","#, - r#" service_id: "service2", function_name: "func", json_path: "" }}"#, + r#" service_id: "service2", function_name: "func", lens: "" }}"#, ), alice_peer_id = alice_peer_id, ); @@ -262,14 +262,14 @@ fn test_runtime_failed_call_tetraplet() { let expected_value = format!( concat!( r#"SecurityTetraplet {{ peer_pk: "{alice_peer_id}","#, - r#" service_id: "service1", function_name: "func", json_path: "" }}"# + r#" service_id: "service1", function_name: "func", lens: "" }}"# ), alice_peer_id = alice_peer_id, ); let stored_value = format!( concat!( r#"SecurityTetraplet {{ peer_pk: "{alice_peer_id}","#, - r#" service_id: "service2", function_name: "func", json_path: "" }}"#, + r#" service_id: "service2", function_name: "func", lens: "" }}"#, ), alice_peer_id = alice_peer_id, ); @@ -335,14 +335,14 @@ fn test_runtime_canon_tetraplet() { let expected_value = format!( concat!( r#"SecurityTetraplet {{ peer_pk: "{alice_peer_id}","#, - r#" service_id: "", function_name: "", json_path: "" }}"# + r#" service_id: "", function_name: "", lens: "" }}"# ), alice_peer_id = alice_peer_id, ); let stored_value = format!( concat!( r#"SecurityTetraplet {{ peer_pk: "{mallory_peer_id}","#, - r#" service_id: "", function_name: "", json_path: "" }}"#, + r#" service_id: "", function_name: "", lens: "" }}"#, ), mallory_peer_id = mallory_peer_id, ); diff --git a/air/tests/test_module/features/signatures/signing.rs b/air/tests/test_module/features/signatures/signing.rs index 1aa6035c..dc9b3374 100644 --- a/air/tests/test_module/features/signatures/signing.rs +++ b/air/tests/test_module/features/signatures/signing.rs @@ -237,14 +237,14 @@ fn test_signature_canon_basic() { let expected_call_result_cid = extract_service_result_cid(&expected_call_result); let expected_canon_state = canon(json!({ - "tetraplet": {"peer_pk": init_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": init_peer_id, "service_id": "", "function_name": "", "lens": ""}, "values": [{ "result": 1, "tetraplet": { "peer_pk": init_peer_id, "service_id": "serv..0", "function_name": "func", - "json_path": ".$.[0]", + "lens": ".$.[0]", }, "provenance": Provenance::service_result(expected_call_result_cid.clone()), }, { @@ -253,7 +253,7 @@ fn test_signature_canon_basic() { "peer_pk": init_peer_id, "service_id": "serv..0", "function_name": "func", - "json_path": ".$.[1]", + "lens": ".$.[1]", }, "provenance": Provenance::service_result(expected_call_result_cid.clone()), }, { @@ -262,7 +262,7 @@ fn test_signature_canon_basic() { "peer_pk": init_peer_id, "service_id": "serv..0", "function_name": "func", - "json_path": ".$.[2]", + "lens": ".$.[2]", }, "provenance": Provenance::service_result(expected_call_result_cid.clone()), }] @@ -318,14 +318,14 @@ fn test_signature_canon_merge() { let expected_call_result_cid = extract_service_result_cid(&expected_call_result); let expected_canon_state = canon(json!({ - "tetraplet": {"peer_pk": init_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": init_peer_id, "service_id": "", "function_name": "", "lens": ""}, "values": [{ "result": 1, "tetraplet": { "peer_pk": init_peer_id, "service_id": "serv..0", "function_name": "func", - "json_path": ".$.[0]", + "lens": ".$.[0]", }, "provenance": Provenance::service_result(expected_call_result_cid.clone()), }, { @@ -334,7 +334,7 @@ fn test_signature_canon_merge() { "peer_pk": init_peer_id, "service_id": "serv..0", "function_name": "func", - "json_path": ".$.[1]", + "lens": ".$.[1]", }, "provenance": Provenance::service_result(expected_call_result_cid.clone()), }, { @@ -343,7 +343,7 @@ fn test_signature_canon_merge() { "peer_pk": init_peer_id, "service_id": "serv..0", "function_name": "func", - "json_path": ".$.[2]", + "lens": ".$.[2]", }, "provenance": Provenance::service_result(expected_call_result_cid.clone()), }] @@ -403,14 +403,14 @@ fn test_signature_canon_result() { let expected_call_result_cid2 = extract_service_result_cid(&expected_call_result2); let expected_canon_state = canon(json!({ - "tetraplet": {"peer_pk": init_peer_id, "service_id": "", "function_name": "", "json_path": ""}, + "tetraplet": {"peer_pk": init_peer_id, "service_id": "", "function_name": "", "lens": ""}, "values": [{ "result": 1, "tetraplet": { "peer_pk": init_peer_id, "service_id": "serv..0", "function_name": "func", - "json_path": ".$.[0]", + "lens": ".$.[0]", }, "provenance": Provenance::service_result(expected_call_result_cid1.clone()), }, { @@ -419,7 +419,7 @@ fn test_signature_canon_result() { "peer_pk": init_peer_id, "service_id": "serv..0", "function_name": "func", - "json_path": ".$.[1]", + "lens": ".$.[1]", }, "provenance": Provenance::service_result(expected_call_result_cid1.clone()), }, { @@ -428,7 +428,7 @@ fn test_signature_canon_result() { "peer_pk": init_peer_id, "service_id": "serv..0", "function_name": "func", - "json_path": ".$.[2]", + "lens": ".$.[2]", }, "provenance": Provenance::service_result(expected_call_result_cid1.clone()), }, { @@ -437,7 +437,7 @@ fn test_signature_canon_result() { "peer_pk": init_peer_id, "service_id": "serv..1", "function_name": "func2", - "json_path": "", + "lens": "", }, "provenance": Provenance::service_result(expected_call_result_cid2.clone()), }] diff --git a/air/tests/test_module/features/tetraplets/provenance.rs b/air/tests/test_module/features/tetraplets/provenance.rs index d0aebb72..156fa414 100644 --- a/air/tests/test_module/features/tetraplets/provenance.rs +++ b/air/tests/test_module/features/tetraplets/provenance.rs @@ -50,7 +50,7 @@ fn call_result() { "peer_pk": init_peer_id, "service_id": "", "function_name": "", - "json_path": "", + "lens": "", }, "values": [{ "result": "some_data", @@ -58,7 +58,7 @@ fn call_result() { "peer_pk": init_peer_id, "service_id": "service..0", "function_name": "func", - "json_path": "", + "lens": "", }, "provenance": Provenance::service_result(val_cid.clone()), }] @@ -105,7 +105,7 @@ fn call_result_iteration() { "peer_pk": init_peer_id, "service_id": "", "function_name": "", - "json_path": "", + "lens": "", }, "values": [{ "result": 10, @@ -113,7 +113,7 @@ fn call_result_iteration() { "peer_pk": init_peer_id, "service_id": "service..0", "function_name": "func", - "json_path": ".$.[0]", + "lens": ".$.[0]", }, "provenance": Provenance::service_result(val_cid.clone()), }, { @@ -122,7 +122,7 @@ fn call_result_iteration() { "peer_pk": init_peer_id, "service_id": "service..0", "function_name": "func", - "json_path": ".$.[1]", + "lens": ".$.[1]", }, "provenance": Provenance::service_result(val_cid.clone()), }, { @@ -131,7 +131,7 @@ fn call_result_iteration() { "peer_pk": init_peer_id, "service_id": "service..0", "function_name": "func", - "json_path": ".$.[2]", + "lens": ".$.[2]", }, "provenance": Provenance::service_result(val_cid), }] @@ -165,7 +165,7 @@ fn literal() { "peer_pk": init_peer_id, "service_id": "", "function_name": "", - "json_path": "", + "lens": "", }, "values": [{ "result": 1, @@ -173,7 +173,7 @@ fn literal() { "peer_pk": init_peer_id, "service_id": "", "function_name": "", - "json_path": "", + "lens": "", }, "provenance": Provenance::literal(), }] @@ -212,7 +212,7 @@ fn canon_in_canon() { "peer_pk": init_peer_id, "service_id": "service..0", "function_name": "func", - "json_path": "", + "lens": "", }); let canon_val = canon(json!({ @@ -220,7 +220,7 @@ fn canon_in_canon() { "peer_pk": init_peer_id, "service_id": "", "function_name": "", - "json_path": "", + "lens": "", }, "values": [{ "result": 1, @@ -235,7 +235,7 @@ fn canon_in_canon() { "peer_pk": init_peer_id, "service_id": "", "function_name": "", - "json_path": "", + "lens": "", }, "values": [{ "result": 1, @@ -247,7 +247,7 @@ fn canon_in_canon() { "peer_pk": init_peer_id, "service_id": "", "function_name": "", - "json_path": "", + "lens": "", }, "provenance": Provenance::canon(canon_cid), }] @@ -297,7 +297,7 @@ fn lambda_result_iteration() { "peer_pk": init_peer_id, "service_id": "", "function_name": "", - "json_path": "", + "lens": "", }, "values": [{ "result": 10, @@ -305,7 +305,7 @@ fn lambda_result_iteration() { "peer_pk": init_peer_id, "service_id": "service..0", "function_name": "func", - "json_path": ".$.[0].$.field.$.[0]", + "lens": ".$.[0].$.field.$.[0]", }, "provenance": Provenance::service_result(val_cid.clone()), }, { @@ -314,7 +314,7 @@ fn lambda_result_iteration() { "peer_pk": init_peer_id, "service_id": "service..0", "function_name": "func", - "json_path": ".$.[0].$.field.$.[1]", + "lens": ".$.[0].$.field.$.[1]", }, "provenance": Provenance::service_result(val_cid.clone()), }, { @@ -323,7 +323,7 @@ fn lambda_result_iteration() { "peer_pk": init_peer_id, "service_id": "service..0", "function_name": "func", - "json_path": ".$.[0].$.field.$.[2]", + "lens": ".$.[0].$.field.$.[2]", }, "provenance": Provenance::service_result(val_cid), }] diff --git a/air/tests/test_module/features/tetraplets/security_tetraplets.rs b/air/tests/test_module/features/tetraplets/security_tetraplets.rs index 9e186407..37ab4f2a 100644 --- a/air/tests/test_module/features/tetraplets/security_tetraplets.rs +++ b/air/tests/test_module/features/tetraplets/security_tetraplets.rs @@ -87,7 +87,7 @@ fn fold_with_inner_call() { peer_pk: set_variable_vm_peer_id.clone(), service_id: service_id.clone(), function_name: function_name.clone(), - json_path: format!(".$.[{}]", i), + lens: format!(".$.[{}]", i), }; let expected_tetraplets = vec![vec![first_arg_tetraplet], vec![second_arg_tetraplet.clone()]]; @@ -126,14 +126,14 @@ fn fold_stream_with_inner_call() { let expected_trace = vec![ stream!( - json!([[{"peer_pk": init_peer_id, "service_id": "..0", "function_name": "", "json_path": ""}]]), + json!([[{"peer_pk": init_peer_id, "service_id": "..0", "function_name": "", "lens": ""}]]), 0, peer = &init_peer_id, service = "..2", args = [42] ), stream!( - json!([[{"peer_pk": init_peer_id, "service_id": "..1", "function_name": "", "json_path": ".$.field"}]]), + json!([[{"peer_pk": init_peer_id, "service_id": "..1", "function_name": "", "lens": ".$.field"}]]), 0, peer = init_peer_id, service = "..2", @@ -174,14 +174,14 @@ fn fold_canon_with_inner_call() { let expected_trace = vec![ stream!( - json!([[{"peer_pk": init_peer_id, "service_id": "..0", "function_name": "", "json_path": ""}]]), + json!([[{"peer_pk": init_peer_id, "service_id": "..0", "function_name": "", "lens": ""}]]), 0, peer = &init_peer_id, service = "..2", args = [42] ), stream!( - json!([[{"peer_pk": init_peer_id, "service_id": "..1", "function_name": "", "json_path": ".$.field"}]]), + json!([[{"peer_pk": init_peer_id, "service_id": "..1", "function_name": "", "lens": ".$.field"}]]), 1, peer = init_peer_id, service = "..2", @@ -192,7 +192,7 @@ fn fold_canon_with_inner_call() { } #[test] -fn fold_json_path() { +fn fold_lambda() { let variable_numbers = json!({"args": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"]}); let set_variable_vm_peer_id = String::from("some_peer_id_1"); @@ -233,14 +233,14 @@ fn fold_json_path() { peer_pk: set_variable_vm_peer_id, service_id, function_name, - json_path: String::from(".$.args.$.[9]"), + lens: String::from(".$.args.$.[9]"), }; let second_arg_tetraplet = SecurityTetraplet { peer_pk: test_params.init_peer_id.clone(), service_id: String::new(), function_name: String::new(), - json_path: String::new(), + lens: String::new(), }; let expected_tetraplets = vec![vec![first_arg_tetraplet], vec![second_arg_tetraplet]]; @@ -281,14 +281,14 @@ fn check_tetraplet_works_correctly() { peer_pk: set_variable_vm_peer_id.clone(), service_id: service_id.clone(), function_name: function_name.clone(), - json_path: String::from(".$.args"), + lens: String::from(".$.args"), }; let second_arg_tetraplet = SecurityTetraplet { peer_pk: set_variable_vm_peer_id, service_id, function_name, - json_path: String::from(".$.args.[0]"), + lens: String::from(".$.args.[0]"), }; let expected_tetraplets = vec![vec![first_arg_tetraplet], vec![second_arg_tetraplet]]; @@ -359,7 +359,7 @@ fn tetraplet_with_wasm_modules() { serde_json::from_slice(&tetraplets).expect("default deserializer shouldn't fail"); let mut call_parameters = CallParameters::default(); - call_parameters.init_peer_id = ADMIN_PEER_PK.to_string(); + call_parameters.particle.init_peer_id = ADMIN_PEER_PK.to_string(); call_parameters.tetraplets = tetraplets; let mut service = services_inner.borrow_mut(); @@ -400,11 +400,11 @@ fn to_app_service_call_parameters( call_parameters: marine_rs_sdk::CallParameters, ) -> fluence_app_service::CallParameters { fluence_app_service::CallParameters { - init_peer_id: call_parameters.init_peer_id, + particle: to_app_service_particle_parameters(call_parameters.particle), service_id: call_parameters.service_id, service_creator_peer_id: call_parameters.service_creator_peer_id, host_id: call_parameters.host_id, - particle_id: call_parameters.particle_id, + worker_id: call_parameters.worker_id, tetraplets: call_parameters .tetraplets .into_iter() @@ -413,6 +413,20 @@ fn to_app_service_call_parameters( } } +fn to_app_service_particle_parameters( + particle: marine_rs_sdk::ParticleParameters, +) -> fluence_app_service::ParticleParameters { + fluence_app_service::ParticleParameters { + id: particle.id, + init_peer_id: particle.init_peer_id, + timestamp: particle.timestamp, + ttl: particle.ttl, + script: particle.script, + signature: particle.signature, + token: particle.token, + } +} + fn to_app_service_tetraplets( tetraplets: Vec, ) -> Vec { @@ -424,6 +438,6 @@ fn to_app_service_tetraplet(tetraplet: marine_rs_sdk::SecurityTetraplet) -> flue peer_pk: tetraplet.peer_pk, service_id: tetraplet.service_id, function_name: tetraplet.function_name, - json_path: tetraplet.json_path, + lens: tetraplet.lens, } } diff --git a/air/tests/test_module/features/tetraplets/security_tetraplets/auth_module/Cargo.toml b/air/tests/test_module/features/tetraplets/security_tetraplets/auth_module/Cargo.toml index 53ea66d9..4ff2bc25 100644 --- a/air/tests/test_module/features/tetraplets/security_tetraplets/auth_module/Cargo.toml +++ b/air/tests/test_module/features/tetraplets/security_tetraplets/auth_module/Cargo.toml @@ -10,6 +10,6 @@ path = "src/main.rs" [dependencies] aquavm-air = { path = "../../../../../../../air" } -marine-rs-sdk = "0.10.3" +marine-rs-sdk = "0.14.0" [workspace] diff --git a/air/tests/test_module/features/tetraplets/security_tetraplets/auth_module/src/main.rs b/air/tests/test_module/features/tetraplets/security_tetraplets/auth_module/src/main.rs index f8d2e368..c526cfad 100644 --- a/air/tests/test_module/features/tetraplets/security_tetraplets/auth_module/src/main.rs +++ b/air/tests/test_module/features/tetraplets/security_tetraplets/auth_module/src/main.rs @@ -28,7 +28,7 @@ struct AuthResult { #[marine] fn is_authorized() -> AuthResult { let call_parameters = marine_rs_sdk::get_call_parameters(); - let is_authorized = call_parameters.init_peer_id == ADMIN_PEER_PK; + let is_authorized = call_parameters.particle.init_peer_id == ADMIN_PEER_PK; AuthResult { is_authorized diff --git a/air/tests/test_module/features/tetraplets/security_tetraplets/log_storage/Cargo.toml b/air/tests/test_module/features/tetraplets/security_tetraplets/log_storage/Cargo.toml index 0ebf0153..31139f3a 100644 --- a/air/tests/test_module/features/tetraplets/security_tetraplets/log_storage/Cargo.toml +++ b/air/tests/test_module/features/tetraplets/security_tetraplets/log_storage/Cargo.toml @@ -10,6 +10,6 @@ path = "src/main.rs" [dependencies] aquavm-air = { path = "../../../../../../../air" } -marine-rs-sdk = "0.10.3" +marine-rs-sdk = "0.14.0" [workspace] diff --git a/air/tests/test_module/features/tetraplets/security_tetraplets/log_storage/src/main.rs b/air/tests/test_module/features/tetraplets/security_tetraplets/log_storage/src/main.rs index b14df4c2..5c834a36 100644 --- a/air/tests/test_module/features/tetraplets/security_tetraplets/log_storage/src/main.rs +++ b/air/tests/test_module/features/tetraplets/security_tetraplets/log_storage/src/main.rs @@ -24,8 +24,8 @@ fn delete(is_authorized: bool, _record_id: String) -> String { let tetraplets = call_parameters.tetraplets; let tetraplet = &tetraplets[0]; - if tetraplet[0].json_path != "$.is_authorized" { - return String::from("invalid json path in tetraplet"); + if tetraplet[0].lens != "$.is_authorized" { + return String::from("invalid lambda in tetraplet"); } if is_authorized { diff --git a/air/tests/test_module/instructions/ap.rs b/air/tests/test_module/instructions/ap.rs index ed30337e..a2635471 100644 --- a/air/tests/test_module/instructions/ap.rs +++ b/air/tests/test_module/instructions/ap.rs @@ -85,11 +85,11 @@ fn ap_with_string_literal() { executed_state::ap(0), executed_state::canon(json!( { - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "values": [ { "result": "some_string", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 0 } ] @@ -123,11 +123,11 @@ fn ap_with_bool_literal() { let expected_state = vec![ executed_state::ap(0), executed_state::canon(json!( { - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "values": [ { "result": true, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 0 } ] @@ -160,11 +160,11 @@ fn ap_with_number_literal() { let expected_state = vec![ executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "values": [ { "result": 100, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 0 } ] @@ -197,11 +197,11 @@ fn ap_with_last_error() { let expected_state = vec![ executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "values": [ { "result": no_error_object(), - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 0 } ] @@ -238,11 +238,11 @@ fn ap_with_error() { let expected_state = vec![ executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "values": [ { "result": no_error_object(), - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 0 } ] @@ -344,10 +344,10 @@ fn ap_with_dst_stream() { val_1, executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_2_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_2_peer_id", "service_id": ""}, "values": [{ "result": {"field": "scalar_2"}, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "provenance": Provenance::service_result(cid_1), }] })), @@ -403,19 +403,19 @@ fn ap_canon_stream_with_lambda() { let canon_1 = executed_state::canon(json!({ "tetraplet": { "function_name": "", - "json_path": "", + "lens": "", "peer_pk": "vm_1_peer_id", "service_id": "", }, "values": [{ "result": 0, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "provenance": Provenance::service_result(cid_1), }, { "result": 1, "tetraplet": { "function_name": "some_function_name", - "json_path": "", + "lens": "", "peer_pk": "vm_1_peer_id", "service_id": "some_service_name", }, @@ -429,10 +429,10 @@ fn ap_canon_stream_with_lambda() { canon_1, executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "values": [{ "result": 1, - "tetraplet": {"function_name": "some_function_name", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": "some_service_name"}, + "tetraplet": {"function_name": "some_function_name", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": "some_service_name"}, "provenance": Provenance::service_result(cid_2), }] })), @@ -497,16 +497,16 @@ fn ap_canon_stream() { let cid_2 = extract_service_result_cid(&val_2); let canon_1 = executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "values": [{ "result": 0, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "provenance": Provenance::service_result(cid_1), }, { "result": 1, "tetraplet": { "function_name": "some_function_name", - "json_path": "", + "lens": "", "peer_pk": "vm_1_peer_id", "service_id": "some_service_name" }, @@ -521,10 +521,10 @@ fn ap_canon_stream() { canon_1, executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "values": [{ "result": [0, 1], - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_1_peer_id", "service_id": ""}, "provenance": Provenance::canon(canon_cid_1), }]} )), @@ -670,7 +670,7 @@ fn ap_canon_stream_map_with_string_key_accessor_lambda() { let mut cid_tracker: ExecutionCidState = ExecutionCidState::new(); let map_value = json!({"key": "key", "value": "value1"}); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_1_peer_id, "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_1_peer_id, "service_id": ""}); let call_arg = json!(["value1"]); let expected_trace: Vec = vec![ @@ -726,7 +726,7 @@ fn ap_canon_stream_map_with_numeric_key_accessor_lambda() { let mut cid_tracker: ExecutionCidState = ExecutionCidState::new(); let map_value = json!({"key": 42, "value": "value1"}); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_1_peer_id, "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_1_peer_id, "service_id": ""}); let call_arg = json!(["value1"]); let expected_trace: Vec = vec![ diff --git a/air/tests/test_module/instructions/call.rs b/air/tests/test_module/instructions/call.rs index 059c7180..dc42c546 100644 --- a/air/tests/test_module/instructions/call.rs +++ b/air/tests/test_module/instructions/call.rs @@ -225,7 +225,7 @@ fn call_canon_stream_map_arg() { let actual_trace = trace_from_result(&result.last().unwrap()); let mut cid_tracker: ExecutionCidState = ExecutionCidState::new(); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_1_peer_id, "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_1_peer_id, "service_id": ""}); let map_value_1 = json!({"key": "key", "value": "value1"}); let map_value_2 = json!({"key": -42, "value": "value2"}); @@ -293,7 +293,7 @@ fn call_peer_id_from_canon_stream_map() { let actual_trace = trace_from_result(&result.last().unwrap()); let mut cid_tracker: ExecutionCidState = ExecutionCidState::new(); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_1_peer_id, "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_1_peer_id, "service_id": ""}); let map_value_1 = json!({"key": "peerid", "value": vm_1_peer_id}); let map_value_2 = json!({"key": -42, "value": "value2"}); @@ -360,8 +360,8 @@ fn call_module_func_from_canon_stream_map() { let actual_trace = trace_from_result(&result); let mut cid_tracker: ExecutionCidState = ExecutionCidState::new(); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_1_peer_id, "service_id": ""}); - let empty_tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_1_peer_id, "service_id": ""}); + let empty_tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}); let map_value_1 = json!({"key": "module", "value": "m"}); let map_value_2 = json!({"key": "function", "value": "f"}); diff --git a/air/tests/test_module/instructions/canon.rs b/air/tests/test_module/instructions/canon.rs index f216754c..314b8b0b 100644 --- a/air/tests/test_module/instructions/canon.rs +++ b/air/tests/test_module/instructions/canon.rs @@ -82,26 +82,26 @@ fn basic_canon() { .collect(); let expected_state = executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": "A", "service_id": ""}, + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": "A", "service_id": ""}, "values": [{ "result": "1", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "A", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "A", "service_id": ""}, "provenance": Provenance::service_result(cids[0].clone()), }, { "result": "2", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "A", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "A", "service_id": ""}, "provenance": Provenance::service_result(cids[1].clone()), }, { "result": "3", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "A", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "A", "service_id": ""}, "provenance": Provenance::service_result(cids[2].clone()), }, { "result": "4", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "A", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "A", "service_id": ""}, "provenance": Provenance::service_result(cids[3].clone()), }, { "result": "5", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "A", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "A", "service_id": ""}, "provenance": Provenance::service_result(cids[4].clone()), }]}), ); @@ -157,14 +157,14 @@ fn canon_fixes_stream_correct() { val_3, unused!(4, peer = peer_id_4, args = [4]), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_3", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_3", "service_id": ""}, "values": [{ "result": 2, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_2", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_2", "service_id": ""}, "provenance": Provenance::service_result(cid_2.clone()), }, { "result": 3, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_3", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_3", "service_id": ""}, "provenance": Provenance::service_result(cid_3.clone()), }]})), executed_state::par(1, 1), @@ -183,14 +183,14 @@ fn canon_fixes_stream_correct() { stream!(3, 2, peer = peer_id_3, args = [3]), unused!(4, peer = peer_id_4, args = [4]), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_3", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_3", "service_id": ""}, "values": [{ "result": 2, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_2", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_2", "service_id": ""}, "provenance": Provenance::service_result(cid_2), }, { "result": 3, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_3", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_3", "service_id": ""}, "provenance": Provenance::service_result(cid_3), }] })), @@ -309,7 +309,7 @@ fn canon_empty_stream() { let actual_trace = trace_from_result(&result); let expected_trace = vec![ executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_1", "service_id": ""}, "values": []}), + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_1", "service_id": ""}, "values": []}), ), unused!(json!([]), peer = peer_id_1, args = [json!([])]), ]; @@ -319,7 +319,7 @@ fn canon_empty_stream() { let actual_trace = trace_from_result(&result); let expected_trace = vec![ executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_1", "service_id": ""}, "values": []} ), + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_1", "service_id": ""}, "values": []} ), ), unused!(json!([]), peer = peer_id_1, args = [json!([])]), ]; @@ -346,7 +346,7 @@ fn canon_empty_not_writable_stream() { executed_state::par(1, 1), executed_state::request_sent_by(peer_id), executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id", "service_id": ""}, "values": []} ), + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id", "service_id": ""}, "values": []} ), ), ]; assert_eq!(actual_trace, expected_trace); @@ -384,7 +384,7 @@ fn canon_over_later_defined_stream() { executed_state::par(1, 2), stream!(1, 0, peer = vm_peer_id_2, args = [1]), executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""},"values": []}), + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""},"values": []}), ), unused!(json!([]), peer = vm_peer_id_3, args = [json!([])]), ]; @@ -429,7 +429,7 @@ fn canon_map_scalar() { let mut cid_state: ExecutionCidState = ExecutionCidState::new(); let value1 = json!({"k": "v1", "42": "v3", "-42": "v5"}); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); let expected_trace = ExecutionTrace::from(vec![ executed_state::ap(0), @@ -439,7 +439,7 @@ fn canon_map_scalar() { executed_state::ap(0), executed_state::ap(0), canon_tracked( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, "values": [ { "result": value1, @@ -501,7 +501,7 @@ fn canon_map_scalar_with_par() { let mut cid_state: ExecutionCidState = ExecutionCidState::new(); let value_1 = json!({"k": "v1", "-42": "v2"}); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); let mut states_vec = vec![ executed_state::par(4, 3), executed_state::ap(0), @@ -542,7 +542,7 @@ fn canon_map_scalar_with_par() { // remove last state to be replaced let can_req = states_vec.pop(); assert_eq!(can_req, Some(canon_request(vm_peer_id_1)), "test invalid"); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_2", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "vm_peer_id_2", "service_id": ""}); states_vec.extend(vec![ canon_tracked( @@ -681,10 +681,10 @@ fn test_merge_executed() { s1, stream!(1, 1, peer = peer_id_2, args = [1]), executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": other_peer_id, "service_id": ""}, + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": other_peer_id, "service_id": ""}, "values": [{ "result": 1, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": peer_id_1, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": peer_id_1, "service_id": ""}, "provenance": Provenance::service_result(cid1), }]}), ), @@ -720,7 +720,7 @@ fn canon_stream_map() { let mut cid_state: ExecutionCidState = ExecutionCidState::new(); let map_value1 = json!({"key": 42, "value": "value2"}); let map_value2 = json!({"key": "key", "value": "value1"}); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_peer_id_1_id, "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_peer_id_1_id, "service_id": ""}); let states_vec = vec![ executed_state::ap(0), @@ -788,8 +788,8 @@ fn canon_map_single_index_tetraplet_check() { let map_value3 = json!({"key": 42, "value": "value1"}); let call_result = json!(["value2", "value1"]); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); - let empty_tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); + let empty_tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}); let states_vec = vec![ executed_state::ap(0), @@ -880,9 +880,9 @@ fn canon_map_index_with_element_access_tetraplet_check() { let map_value2 = json!({"key": 42, "value": "value1"}); let call_result = json!("value2"); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_peer_id_1, "service_id": ""}); - let map_value1_tetraplet = json!({"function_name": f1, "json_path": "", "peer_pk": vm_peer_id_1, "service_id": m1}); - let empty_tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_peer_id_1, "service_id": ""}); + let map_value1_tetraplet = json!({"function_name": f1, "lens": "", "peer_pk": vm_peer_id_1, "service_id": m1}); + let empty_tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}); let service_result = scalar_tracked!( call_result.clone(), @@ -988,9 +988,9 @@ fn canon_map_index_with_element_and_attribute_tetraplet_check() { let map_value1 = json!({"key": 42, "value": call_result1}); let map_value2 = json!({"key": 42, "value": "value1"}); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_peer_id_1, "service_id": ""}); - let map_value1_tetraplet = json!({"function_name": f1, "json_path": "", "peer_pk": vm_peer_id_1, "service_id": m1}); - let empty_tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_peer_id_1, "service_id": ""}); + let map_value1_tetraplet = json!({"function_name": f1, "lens": "", "peer_pk": vm_peer_id_1, "service_id": m1}); + let empty_tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}); let service_result = scalar_tracked!( call_result1.clone(), @@ -1096,8 +1096,8 @@ fn canon_map_non_existing_index_tetraplet_check() { let map_value1 = json!({"key": 42, "value": "value2"}); let call_result = json!([]); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); - let empty_tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); + let empty_tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}); let states_vec = vec![ executed_state::ap(0), @@ -1170,8 +1170,8 @@ fn canon_map_non_existing_index_and_element_tetraplet_check() { let map_value3 = json!({"key": 42, "value": "value1"}); let call_result = json!([]); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); - let empty_tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); + let empty_tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}); let states_vec = vec![ executed_state::ap(0), @@ -1261,7 +1261,7 @@ fn canon_map_2_scalar_tetraplet_check() { let map_value1 = json!({"42": "value1", "key": "value1"}); let call_result = map_value1.clone(); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_peer_id_1, "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_peer_id_1, "service_id": ""}); let states_vec = vec![ executed_state::ap(0), @@ -1336,7 +1336,7 @@ fn canon_map_2_scalar_with_lens_tetraplet_check() { let map_value1 = json!({"42": "value1", "key": "value1"}); let call_result = json!("value1"); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_peer_id_1, "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_peer_id_1, "service_id": ""}); let states_vec = vec![ executed_state::ap(0), @@ -1412,7 +1412,7 @@ fn canon_map_with_lens_by_key_number_tetraplet_check() { let map_value1 = json!({"42": "value1", "key": "value1"}); let call_result = map_value1.clone(); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); let states_vec = vec![ executed_state::ap(0), @@ -1492,7 +1492,7 @@ fn canon_map_with_lens_by_key_number_key_tetraplet_check() { let map_value1 = json!({"42": "value1", "key": "value1"}); let call_result = map_value1.clone(); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}); let states_vec = vec![ executed_state::ap(0), diff --git a/air/tests/test_module/instructions/fold.rs b/air/tests/test_module/instructions/fold.rs index 39f47a60..41609ccd 100644 --- a/air/tests/test_module/instructions/fold.rs +++ b/air/tests/test_module/instructions/fold.rs @@ -220,7 +220,7 @@ fn empty_literal_array_fold() { } #[test] -fn empty_fold_json_path() { +fn empty_fold_lens() { let mut vm = create_avm(echo_call_service(), "A"); let mut set_variable_vm = create_avm(set_variable_call_service(json!({ "messages": [] })), "set_variable"); @@ -605,7 +605,7 @@ fn fold_scalar_seq_next_completes_with_null() { executed_state::par(1, 0), stream!(service_result.clone(), 0, peer = vm_peer_id, args = [2]), executed_state::canon( - json!({"tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": []}), + json!({"tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": []}), ), unused!(service_result, peer = vm_peer_id, args = [json!([])]), ]); @@ -870,10 +870,10 @@ fn fold_stream_map() { stream_1, executed_state::canon_tracked( json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": vm_1_peer_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": vm_1_peer_id, "service_id": ""}, "values": [{ "result": service_result.clone(), - "tetraplet": {"function_name": "f2", "json_path": "", "peer_pk": vm_1_peer_id, "service_id": "m2"}, + "tetraplet": {"function_name": "f2", "lens": "", "peer_pk": vm_1_peer_id, "service_id": "m2"}, "provenance": Provenance::service_result(cid_1), }] }), @@ -967,7 +967,7 @@ fn fold_canon_stream_map() { let actual_trace = trace_from_result(&result.last().unwrap()); let mut cid_tracker: ExecutionCidState = ExecutionCidState::new(); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_1_peer_id, "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_1_peer_id, "service_id": ""}); let map_value_1 = json!({"key": "key", "value": "value1"}); let map_value_2 = json!({"key": -42, "value": "value2"}); @@ -1062,7 +1062,7 @@ fn fold_map_and_canon_map_orders_are_same() { let actual_trace = trace_from_result(&result.last().unwrap()); let mut cid_tracker: ExecutionCidState = ExecutionCidState::new(); - let tetraplet = json!({"function_name": "", "json_path": "", "peer_pk": vm_1_peer_id, "service_id": ""}); + let tetraplet = json!({"function_name": "", "lens": "", "peer_pk": vm_1_peer_id, "service_id": ""}); let map_value_1 = json!({"key": "key", "value": "value1"}); let map_value_2 = json!({"key": -42, "value": "value2"}); diff --git a/air/tests/test_module/instructions/new.rs b/air/tests/test_module/instructions/new.rs index bf72e468..5b94b091 100644 --- a/air/tests/test_module/instructions/new.rs +++ b/air/tests/test_module/instructions/new.rs @@ -119,7 +119,7 @@ fn several_restrictions() { let expected_trace = ExecutionTrace::from(vec![ stream!("test", 0, peer = vm_peer_id, args = ["test"]), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ ] @@ -184,11 +184,11 @@ fn check_influence_to_not_restricted() { executed_state::ap(0), executed_state::canon(json!( { - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ { "result": "more", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 2 } ] @@ -203,11 +203,11 @@ fn check_influence_to_not_restricted() { ), executed_state::canon(json!( { - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ { "result": "push more", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 0 } ] @@ -221,11 +221,11 @@ fn check_influence_to_not_restricted() { args = [json!(["push more"])] ), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ { "result": "push more", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 1 } ] @@ -238,7 +238,7 @@ fn check_influence_to_not_restricted() { args = [json!(["push more"])] ), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ ] })), @@ -298,11 +298,11 @@ fn new_in_fold_with_ap() { scalar!(json!([1, 2, 3, 4, 5]), peer = set_variable_peer_id), executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ { "result": "none", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 1 } ] @@ -310,11 +310,11 @@ fn new_in_fold_with_ap() { scalar!(json!(["none"]), peer = vm_peer_id, args = [json!(["none"])]), executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ { "result": "none", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 4 } ] @@ -322,11 +322,11 @@ fn new_in_fold_with_ap() { scalar!(json!(["none"]), peer = vm_peer_id, args = [json!(["none"])]), executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ { "result": "none", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 7 } ] @@ -334,11 +334,11 @@ fn new_in_fold_with_ap() { scalar!(json!(["none"]), peer = vm_peer_id, args = [json!(["none"])]), executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ { "result": "none", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 10 } ] @@ -346,11 +346,11 @@ fn new_in_fold_with_ap() { scalar!(json!(["none"]), peer = vm_peer_id, args = [json!(["none"])]), executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "vm_peer_id", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "vm_peer_id", "service_id": ""}, "values": [ { "result": "none", - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "", "service_id": ""}, "trace_pos": 13 } ] diff --git a/air/tests/test_module/issues/issue_211.rs b/air/tests/test_module/issues/issue_211.rs index 1859b2b4..f5405190 100644 --- a/air/tests/test_module/issues/issue_211.rs +++ b/air/tests/test_module/issues/issue_211.rs @@ -96,21 +96,21 @@ fn issue_211() { executed_state::par(1, 0), executed_state::ap(0), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": peer_1_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": peer_1_id, "service_id": ""}, "values": [ { "result": 1, - "tetraplet": {"function_name": "nodes", "json_path": ".$.[0]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, + "tetraplet": {"function_name": "nodes", "lens": ".$.[0]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, "provenance": Provenance::service_result(cid_2.clone()), }, { "result": 2, - "tetraplet": {"function_name": "nodes", "json_path": ".$.[1]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, + "tetraplet": {"function_name": "nodes", "lens": ".$.[1]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, "provenance": Provenance::service_result(cid_2.clone()), }, { "result": 3, - "tetraplet": {"function_name": "nodes", "json_path": ".$.[2]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, + "tetraplet": {"function_name": "nodes", "lens": ".$.[2]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, "provenance": Provenance::service_result(cid_2.clone()), }, ] @@ -123,21 +123,21 @@ fn issue_211() { args = vec![json!(3), json!([1, 2, 3])] ), executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": peer_1_id, "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": peer_1_id, "service_id": ""}, "values": [ { "result": 1, - "tetraplet": {"function_name": "nodes", "json_path": ".$.[0]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, + "tetraplet": {"function_name": "nodes", "lens": ".$.[0]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, "provenance": Provenance::service_result(cid_2.clone()), }, { "result": 2, - "tetraplet": {"function_name": "nodes", "json_path": ".$.[1]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, + "tetraplet": {"function_name": "nodes", "lens": ".$.[1]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, "provenance": Provenance::service_result(cid_2.clone()), }, { "result": 3, - "tetraplet": {"function_name": "nodes", "json_path": ".$.[2]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, + "tetraplet": {"function_name": "nodes", "lens": ".$.[2]", "peer_pk": peer_1_id, "service_id": "getdatasrv..1"}, "provenance": Provenance::service_result(cid_2), }, ] diff --git a/air/tests/test_module/issues/issue_302.rs b/air/tests/test_module/issues/issue_302.rs index 18f7e480..44ec2a31 100644 --- a/air/tests/test_module/issues/issue_302.rs +++ b/air/tests/test_module/issues/issue_302.rs @@ -70,18 +70,18 @@ fn issue_302() { val_1, val_0, executed_state::canon(json!({ - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_2", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_2", "service_id": ""}, "values": [{ "result": 1, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_2", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_2", "service_id": ""}, "provenance": Provenance::service_result(cid_1), }, { "result": 2, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_1", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_1", "service_id": ""}, "provenance": Provenance::service_result(cid_2), }, { "result": 0, - "tetraplet": {"function_name": "", "json_path": "", "peer_pk": "peer_id_3", "service_id": ""}, + "tetraplet": {"function_name": "", "lens": "", "peer_pk": "peer_id_3", "service_id": ""}, "provenance": Provenance::service_result(cid_0), }], })), diff --git a/air/tests/test_module/negative_tests/uncatchable_trace_related.rs b/air/tests/test_module/negative_tests/uncatchable_trace_related.rs index 246fef45..74e0f0df 100644 --- a/air/tests/test_module/negative_tests/uncatchable_trace_related.rs +++ b/air/tests/test_module/negative_tests/uncatchable_trace_related.rs @@ -387,11 +387,11 @@ fn canon_result_error() { "# ); let prev_tetraplet = json!({ - "tetraplet": {"function_name": "s", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, + "tetraplet": {"function_name": "s", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, "values": [ { "result": 42, - "tetraplet": {"function_name": "s", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, + "tetraplet": {"function_name": "s", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, }, ] }); @@ -399,11 +399,11 @@ fn canon_result_error() { let prev_cid = extract_canon_result_cid(&prev_trace[0]); let prev_data = raw_data_from_trace(prev_trace, <_>::default()); let curr_tetraplet = json!({ - "tetraplet": {"function_name": "s", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, + "tetraplet": {"function_name": "s", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, "values": [ { "result": 43, - "tetraplet": {"function_name": "s", "json_path": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, + "tetraplet": {"function_name": "s", "lens": "", "peer_pk": "vm_peer_id_1", "service_id": ""}, }, ] }); diff --git a/avm/client/src/types.ts b/avm/client/src/types.ts index e89d5f8a..cccc0d89 100644 --- a/avm/client/src/types.ts +++ b/avm/client/src/types.ts @@ -167,9 +167,9 @@ export interface ResolvedTriplet { */ export interface SecurityTetraplet extends ResolvedTriplet { /** - * Value was produced by applying this `json_path` to the output from `call_service`. + * Value was produced by applying this `lens` to the output from `call_service`. */ - json_path: string; + lens: string; } export type JSONValue = string | number | boolean | { [x: string]: JSONValue } | Array; diff --git a/avm/server/Cargo.toml b/avm/server/Cargo.toml index 1e8faece..d11a056a 100644 --- a/avm/server/Cargo.toml +++ b/avm/server/Cargo.toml @@ -19,7 +19,7 @@ air-interpreter-interface = { version = "0.18.0", path = "../../crates/air-lib/i air-interpreter-sede = { version = "0.1.0", path = "../../crates/air-lib/interpreter-sede" } air-utils = { version = "0.3.0", path = "../../crates/air-lib/utils" } avm-data-store = { version = "0.7.8", path = "../../crates/data-store" } -marine-runtime = "0.32.0" +marine-runtime = "0.35.0" polyplets = { version = "0.6.0", path = "../../crates/air-lib/polyplets" } avm-interface = { version = "0.32.0", path = "../../avm/interface" } diff --git a/crates/air-lib/air-parser/src/parser/lexer/call_variable_parser.rs b/crates/air-lib/air-parser/src/parser/lexer/call_variable_parser.rs index aa02d7fa..705111d6 100644 --- a/crates/air-lib/air-parser/src/parser/lexer/call_variable_parser.rs +++ b/crates/air-lib/air-parser/src/parser/lexer/call_variable_parser.rs @@ -176,11 +176,11 @@ impl<'input> CallVariableParser<'input> { fn try_parse_as_variable(&mut self) -> LexerResult<()> { if self.try_parse_as_canon()? || self.try_parse_as_stream()? - || self.try_parse_as_json_path_start()? + || self.try_parse_as_lens_start()? { return Ok(()); - } else if self.is_json_path_started() { - self.try_parse_as_json_path()?; + } else if self.is_lens_started() { + self.try_parse_as_lens()?; } else { self.try_parse_as_alphanumeric()?; } @@ -219,7 +219,7 @@ impl<'input> CallVariableParser<'input> { Ok(false) } - fn try_parse_as_json_path_start(&mut self) -> LexerResult { + fn try_parse_as_lens_start(&mut self) -> LexerResult { self.try_parse_first_met_dot() } @@ -232,8 +232,8 @@ impl<'input> CallVariableParser<'input> { Ok(()) } - fn try_parse_as_json_path(&mut self) -> LexerResult<()> { - if !self.json_path_allowed_char() && !self.try_parse_as_flattening() { + fn try_parse_as_lens(&mut self) -> LexerResult<()> { + if !self.lens_allowed_char() && !self.try_parse_as_flattening() { let error_pos = self.pos_in_string_to_parse(); return Err(LexerError::invalid_lambda(error_pos..error_pos)); } @@ -267,7 +267,7 @@ impl<'input> CallVariableParser<'input> { Ok(false) } - fn is_json_path_started(&self) -> bool { + fn is_lens_started(&self) -> bool { self.dot_met() } @@ -279,8 +279,8 @@ impl<'input> CallVariableParser<'input> { super::is_air_alphanumeric(self.current_char()) } - fn json_path_allowed_char(&self) -> bool { - super::is_json_path_allowed_char(self.current_char()) + fn lens_allowed_char(&self) -> bool { + super::is_lens_allowed_char(self.current_char()) } fn pos_in_string_to_parse(&self) -> AirPos { diff --git a/crates/air-lib/air-parser/src/parser/lexer/mod.rs b/crates/air-lib/air-parser/src/parser/lexer/mod.rs index 1576bd1c..44df0f0e 100644 --- a/crates/air-lib/air-parser/src/parser/lexer/mod.rs +++ b/crates/air-lib/air-parser/src/parser/lexer/mod.rs @@ -34,4 +34,4 @@ pub use token::Token; pub(super) type LexerResult = std::result::Result; use utils::is_air_alphanumeric; -use utils::is_json_path_allowed_char; +use utils::is_lens_allowed_char; diff --git a/crates/air-lib/air-parser/src/parser/lexer/utils.rs b/crates/air-lib/air-parser/src/parser/lexer/utils.rs index 306d718a..679db877 100644 --- a/crates/air-lib/air-parser/src/parser/lexer/utils.rs +++ b/crates/air-lib/air-parser/src/parser/lexer/utils.rs @@ -18,10 +18,7 @@ pub(super) fn is_air_alphanumeric(ch: char) -> bool { ch.is_alphanumeric() || ch == '_' || ch == '-' } -pub(super) fn is_json_path_allowed_char(ch: char) -> bool { - // we don't have spec for json path now, but some possible example could be found here - // https://packagist.org/packages/softcreatr/jsonpath - +pub(super) fn is_lens_allowed_char(ch: char) -> bool { // good old switch faster here than hash set match ch { '$' => true, diff --git a/crates/air-lib/air-parser/src/parser/tests/call.rs b/crates/air-lib/air-parser/src/parser/tests/call.rs index 0f57ce40..ae569532 100644 --- a/crates/air-lib/air-parser/src/parser/tests/call.rs +++ b/crates/air-lib/air-parser/src/parser/tests/call.rs @@ -25,7 +25,7 @@ use lalrpop_util::ParseError; use std::rc::Rc; #[test] -fn parse_json_path() { +fn parse_lambda() { let source_code = r#" (call peer_id.$.a! ("service_id" "function_name") ["hello" name] $void) "#; @@ -125,7 +125,7 @@ fn parse_undefined_variable() { } #[test] -fn parse_undefined_stream_without_json_path() { +fn parse_undefined_stream_without_lambda() { let source_code = r#" (call "" ("" "") [$stream]) "#; @@ -247,7 +247,7 @@ fn parse_lambda_with_scalars_complex() { } #[test] -fn json_path_square_braces() { +fn lambda_square_braces() { let source_code = r#" (call u.$.peer_id! ("return" "") [u.$[1].cde[0][0].abc u.$.name] $void) "#; diff --git a/crates/air-lib/air-parser/src/parser/tests/fold.rs b/crates/air-lib/air-parser/src/parser/tests/fold.rs index 8a3f6ad4..52f9b5f4 100644 --- a/crates/air-lib/air-parser/src/parser/tests/fold.rs +++ b/crates/air-lib/air-parser/src/parser/tests/fold.rs @@ -299,7 +299,7 @@ fn fold_with_scalar_and_last_instruction() { } #[test] -fn fold_json_path() { +fn fold_lambda() { let source_code = r#" ; comment (fold members.$.[123321] m (null)) ;;; comment diff --git a/crates/air-lib/interpreter-interface/Cargo.toml b/crates/air-lib/interpreter-interface/Cargo.toml index 022fd778..40c353f3 100644 --- a/crates/air-lib/interpreter-interface/Cargo.toml +++ b/crates/air-lib/interpreter-interface/Cargo.toml @@ -15,11 +15,11 @@ name = "air_interpreter_interface" path = "src/lib.rs" [dependencies] -marine-rs-sdk = {version = "0.10.3", optional = true } +marine-rs-sdk = {version = "0.14.0", optional = true } fluence-it-types = { version = "0.4.1", optional = true } air-interpreter-sede = { version = "0.1.0", path = "../interpreter-sede", features = ["msgpack"] } -marine-call-parameters = { version = "0.10.3", default-features = false } +marine-call-parameters = { version = "0.14.0", default-features = false } serde = "1.0.190" serde_json = "1.0.108" serde_bytes = "0.11.12" diff --git a/crates/air-lib/interpreter-sede/Cargo.toml b/crates/air-lib/interpreter-sede/Cargo.toml index db3f0bbf..a2f20c41 100644 --- a/crates/air-lib/interpreter-sede/Cargo.toml +++ b/crates/air-lib/interpreter-sede/Cargo.toml @@ -14,7 +14,7 @@ categories = ["wasm"] rmp-serde = { version = "1.1.2", optional = true } serde = { version = "1.0.190" } serde_json = { version = "1.0.108" } -marine-rs-sdk = { version = "0.10.3", optional = true } +marine-rs-sdk = { version = "0.14.0", optional = true } unsigned-varint = { version = "0.8.0", default-features = false, features = ["std"] } thiserror = "1.0.50" serde_bytes = "0.11.12" diff --git a/crates/air-lib/polyplets/Cargo.toml b/crates/air-lib/polyplets/Cargo.toml index e2badfb7..7dca73d7 100644 --- a/crates/air-lib/polyplets/Cargo.toml +++ b/crates/air-lib/polyplets/Cargo.toml @@ -15,7 +15,7 @@ name = "polyplets" path = "src/lib.rs" [dependencies] -marine-call-parameters = { version = "0.10.3", default-features = false } +marine-call-parameters = { version = "0.14.0", default-features = false } serde = { version = "1.0.190", features = ["rc", "derive"] } diff --git a/crates/air-lib/polyplets/src/triplet.rs b/crates/air-lib/polyplets/src/triplet.rs index 6271c355..4dba6404 100644 --- a/crates/air-lib/polyplets/src/triplet.rs +++ b/crates/air-lib/polyplets/src/triplet.rs @@ -36,7 +36,7 @@ impl From for SecurityTetraplet { peer_pk: triplet.peer_pk, service_id: triplet.service_id, function_name: triplet.function_name, - json_path: String::new(), + lens: String::new(), } } } diff --git a/crates/air-lib/test-utils/Cargo.toml b/crates/air-lib/test-utils/Cargo.toml index 5c177ce7..dc49defe 100644 --- a/crates/air-lib/test-utils/Cargo.toml +++ b/crates/air-lib/test-utils/Cargo.toml @@ -23,7 +23,7 @@ air-interpreter-sede = { version = "0.1.0", path = "../interpreter-sede" } air-interpreter-signatures = { version = "0.1.7", path = "../interpreter-signatures" } avm-interface = { version = "0.32.0", path = "../../../avm/interface" } avm-server = { version = "0.36.0", path = "../../../avm/server" } -marine-rs-sdk = "0.10.3" +marine-rs-sdk = "0.14.0" object-pool = "0.5.4" once_cell = "1.17.1" diff --git a/crates/air-lib/test-utils/src/executed_state.rs b/crates/air-lib/test-utils/src/executed_state.rs index c8f4e8de..6fcb4ff5 100644 --- a/crates/air-lib/test-utils/src/executed_state.rs +++ b/crates/air-lib/test-utils/src/executed_state.rs @@ -323,8 +323,8 @@ impl ExecutedCallBuilder { self } - pub fn json_path(mut self, json_path: impl Into) -> Self { - self.tetraplet.json_path = json_path.into(); + pub fn lens(mut self, lens: impl Into) -> Self { + self.tetraplet.lens = lens.into(); self } diff --git a/crates/air-lib/test-utils/src/wasm_test_runner.rs b/crates/air-lib/test-utils/src/wasm_test_runner.rs index 5381a64e..96a43bb7 100644 --- a/crates/air-lib/test-utils/src/wasm_test_runner.rs +++ b/crates/air-lib/test-utils/src/wasm_test_runner.rs @@ -23,8 +23,8 @@ use once_cell::sync::OnceCell; use std::path::PathBuf; -// 10 Mb -const AVM_MAX_HEAP_SIZE: u64 = 10 * 1024 * 1024; +// 100 Mb +const AVM_MAX_HEAP_SIZE: u64 = 100 * 1024 * 1024; const AIR_WASM_PATH: &str = "../target/wasm32-wasi/debug/air_interpreter_server.wasm"; const RELEASE_AIR_WASM_PATH: &str = "../target/wasm32-wasi/release/air_interpreter_server.wasm"; diff --git a/crates/testing-framework/src/execution/mod.rs b/crates/testing-framework/src/execution/mod.rs index a87c75a4..d241ab3f 100644 --- a/crates/testing-framework/src/execution/mod.rs +++ b/crates/testing-framework/src/execution/mod.rs @@ -961,12 +961,12 @@ mod tests { ExecutionTrace::from(vec![scalar!( json!([[{ "function_name": "", - "json_path": "", + "lens": "", "peer_pk": &peer_id, "service_id": "", }], [{ "function_name": "", - "json_path": "", + "lens": "", "peer_pk": &peer_id, "service_id": "", }]]), diff --git a/junk/gen-bench-data/Cargo.lock b/junk/gen-bench-data/Cargo.lock index 9338287d..5db192ee 100644 --- a/junk/gen-bench-data/Cargo.lock +++ b/junk/gen-bench-data/Cargo.lock @@ -51,7 +51,7 @@ dependencies = [ [[package]] name = "air-execution-info-collector" -version = "0.7.12" +version = "0.7.13" dependencies = [ "aquavm-air-parser", ] @@ -74,7 +74,7 @@ dependencies = [ [[package]] name = "air-interpreter-data" -version = "0.17.0" +version = "0.17.1" dependencies = [ "air-interpreter-cid", "air-interpreter-sede", @@ -99,12 +99,12 @@ dependencies = [ [[package]] name = "air-interpreter-interface" -version = "0.17.2" +version = "0.18.0" dependencies = [ "air-interpreter-sede", "air-interpreter-value", "fluence-it-types", - "marine-call-parameters", + "marine-call-parameters 0.14.0", "marine-rs-sdk", "serde", "serde_bytes", @@ -174,7 +174,7 @@ version = "0.1.0" [[package]] name = "air-test-utils" -version = "0.15.1" +version = "0.16.0" dependencies = [ "air-interpreter-cid", "air-interpreter-data", @@ -199,7 +199,7 @@ dependencies = [ [[package]] name = "air-testing-framework" -version = "0.8.4" +version = "0.9.0" dependencies = [ "air-interpreter-signatures", "air-test-utils", @@ -215,7 +215,7 @@ dependencies = [ [[package]] name = "air-trace-handler" -version = "0.5.10" +version = "0.5.11" dependencies = [ "air-interpreter-cid", "air-interpreter-data", @@ -232,7 +232,7 @@ dependencies = [ [[package]] name = "air-utils" -version = "0.2.0" +version = "0.3.0" [[package]] name = "ambient-authority" @@ -311,7 +311,7 @@ checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "aquavm-air" -version = "0.59.0" +version = "0.60.0" dependencies = [ "air-execution-info-collector", "air-interpreter-cid", @@ -346,7 +346,7 @@ dependencies = [ [[package]] name = "aquavm-air-parser" -version = "0.11.1" +version = "0.11.2" dependencies = [ "air-interpreter-value", "air-lambda-ast", @@ -435,7 +435,7 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "avm-data-store" -version = "0.7.7" +version = "0.7.8" dependencies = [ "avm-interface", "serde", @@ -444,7 +444,7 @@ dependencies = [ [[package]] name = "avm-interface" -version = "0.31.2" +version = "0.32.0" dependencies = [ "air-interpreter-interface", "air-interpreter-sede", @@ -460,7 +460,7 @@ dependencies = [ [[package]] name = "avm-server" -version = "0.35.0" +version = "0.36.0" dependencies = [ "air-interpreter-interface", "air-interpreter-sede", @@ -2177,17 +2177,50 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef9a7c6ed5fa9052474c1cd76d3b3e67dbc4c455c76263c2c043214e12cce6bd" dependencies = [ - "marine-macro", - "marine-rs-sdk-main", + "marine-macro 0.10.3", + "marine-rs-sdk-main 0.10.3", + "serde", +] + +[[package]] +name = "marine-call-parameters" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f47b1186bad0b2a5e9218e3f6fbe0612ef6b17c58c58537d77bd08044596ea95" +dependencies = [ + "marine-macro 0.12.0", + "marine-rs-sdk-main 0.12.0", + "serde", +] + +[[package]] +name = "marine-call-parameters" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d16852b36a3cfc8fa044955380901e78109db0035dc93eea4f666d8f3979072" +dependencies = [ + "marine-macro 0.13.0", + "marine-rs-sdk-main 0.13.0", + "serde", +] + +[[package]] +name = "marine-call-parameters" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05495180730abae04abe209386ce367309a82110edb65fcdb1f3080f819bc1a0" +dependencies = [ + "marine-macro 0.14.0", + "marine-rs-sdk-main 0.14.0", "rkyv", "serde", ] [[package]] name = "marine-core" -version = "0.26.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0e21dd5918c69eefcc06acea338bf444f9137fca6e193b52bfd8e0f069ab4d" +checksum = "81f40fac4650a022a2ce8d7b6df5614062fc32cb25fb44e61027997e90a3aff6" dependencies = [ "anyhow", "bytesize", @@ -2214,13 +2247,13 @@ dependencies = [ [[package]] name = "marine-it-generator" -version = "0.13.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03328e174951faf739e7e12be3d9ffb044cfc308508dc89260d63a1a43a0df" +checksum = "23bdd0119dc71f98e2f0a4bef305e43b9a4d9b9adbead12bc05b0fac1d5a247c" dependencies = [ "it-lilo", "marine-it-parser", - "marine-macro-impl 0.7.1", + "marine-macro-impl 0.14.0", "once_cell", "serde", "serde_json", @@ -2265,14 +2298,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acdaa50f8239afa104ef8a99d4219288f68169e29c913485bbd094a35fe79113" dependencies = [ "marine-macro-impl 0.10.3", - "marine-rs-sdk-main", + "marine-rs-sdk-main 0.10.3", +] + +[[package]] +name = "marine-macro" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "727b1a5449eb1676837c5fc22a8c31dc9980dcef4de938f26f2eaf7c2c54331b" +dependencies = [ + "marine-macro-impl 0.12.0", + "marine-rs-sdk-main 0.12.0", +] + +[[package]] +name = "marine-macro" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cec2cd19fedf559833d0f1e6a33cbcc5cf0efa338bb0975346ff12538a3cdde4" +dependencies = [ + "marine-macro-impl 0.13.0", + "marine-rs-sdk-main 0.13.0", +] + +[[package]] +name = "marine-macro" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f502185316f584a9373cceb6ff24a11d260dfd39505c817056bc127cd1a96a08" +dependencies = [ + "marine-macro-impl 0.14.0", + "marine-rs-sdk-main 0.14.0", ] [[package]] name = "marine-macro-impl" -version = "0.7.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca474b63cabaf8d7d9b38de87d630023cbc91ddc77e92f9c7bb745462a131b44" +checksum = "460ef42c1bf6dbb88976a00514f8e1b97a7ccb60e3e6009cbb563b0d163166c7" dependencies = [ "proc-macro2", "quote", @@ -2283,9 +2346,35 @@ dependencies = [ [[package]] name = "marine-macro-impl" -version = "0.10.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460ef42c1bf6dbb88976a00514f8e1b97a7ccb60e3e6009cbb563b0d163166c7" +checksum = "57c8cd8a228856db057bd4a32c6e2708848b2b1db7552be0a6063d534cafb4e2" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "marine-macro-impl" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e09acb3ada67e69a301b6d7b52a915a36176c5eedb312647de7d5b6cf17f51e4" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 1.0.109", +] + +[[package]] +name = "marine-macro-impl" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e50fbc0e70ee4cde7802f0748acfb197d7770c7feffb980ce8c29bddd007519e" dependencies = [ "proc-macro2", "quote", @@ -2306,14 +2395,14 @@ dependencies = [ [[package]] name = "marine-module-info-parser" -version = "0.11.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d578b9c5b1a95e9f76301a347d0fbaef5e5e22a0c370e43fc575253e69fa23e6" +checksum = "9b312830884d07fc495a43e867d9641163897f0b0b047842cf1172cc61f57075" dependencies = [ "anyhow", "chrono", "derivative", - "marine-rs-sdk-main", + "marine-rs-sdk-main 0.14.0", "marine-wasm-backend-traits", "semver 1.0.21", "serde", @@ -2340,13 +2429,13 @@ dependencies = [ [[package]] name = "marine-rs-sdk" -version = "0.10.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034cab8adf708e87db08f093e0c7b8ea49359cc875ed2a778c1bf245b5d9d9f8" +checksum = "f93d2bd852fea1fea8097c195044430347eda98fd6a3752119b549192d5ac4ba" dependencies = [ - "marine-call-parameters", - "marine-macro", - "marine-rs-sdk-main", + "marine-call-parameters 0.14.0", + "marine-macro 0.14.0", + "marine-rs-sdk-main 0.14.0", "marine-timestamp-macro", "serde", ] @@ -2362,20 +2451,53 @@ dependencies = [ ] [[package]] -name = "marine-runtime" -version = "0.32.1" +name = "marine-rs-sdk-main" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c9a539b0b1586839f133f768db670f0b3f6cd5ffd977dc247cbf8acf8a3dc1a" +checksum = "6cba9000500575b4965ec44e44bbbfd056d121be1195969ce1a5cc146646c37b" +dependencies = [ + "log", + "serde", +] + +[[package]] +name = "marine-rs-sdk-main" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b487a1a1b288ba06c832942eadb43384cd99c9754c1454e1e061dd9866be92" +dependencies = [ + "log", + "serde", +] + +[[package]] +name = "marine-rs-sdk-main" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b79c165fc21438b069babeec5ae36ba0eade5e08fb1d92dabbe6b41014ce841" +dependencies = [ + "log", + "serde", +] + +[[package]] +name = "marine-runtime" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c599c7c13e976170a1211e31fe2fb4557e0479cbdba331b19a5a9e87f145f52" dependencies = [ "bytesize", "it-json-serde", "it-memory-traits", "itertools", "log", + "marine-call-parameters 0.10.3", + "marine-call-parameters 0.12.0", + "marine-call-parameters 0.13.0", "marine-core", "marine-module-interface", "marine-rs-sdk", - "marine-rs-sdk-main", + "marine-rs-sdk-main 0.14.0", "marine-utils", "marine-wasm-backend-traits", "marine-wasmtime-backend", @@ -2392,9 +2514,9 @@ dependencies = [ [[package]] name = "marine-timestamp-macro" -version = "0.10.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f812a03cb13b79ab75e38053a77ecc4b4738a1b485b650d971dec3dbbcb2561" +checksum = "d03f267ac0a29f543ef12a1a519ff8d98e74ac66e1c580f2930d41ce2c50507d" dependencies = [ "chrono", "quote", @@ -2834,7 +2956,7 @@ checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" name = "polyplets" version = "0.6.0" dependencies = [ - "marine-call-parameters", + "marine-call-parameters 0.14.0", "serde", ] diff --git a/junk/gen-bench-data/src/cid_benchmarking/mod.rs b/junk/gen-bench-data/src/cid_benchmarking/mod.rs index 0bd3a316..47c0a707 100644 --- a/junk/gen-bench-data/src/cid_benchmarking/mod.rs +++ b/junk/gen-bench-data/src/cid_benchmarking/mod.rs @@ -43,7 +43,7 @@ struct CallInfo { service: Option, function: Option, args: Option>, - json_path: Option, + lens: Option, kind: Option, } @@ -88,8 +88,8 @@ fn transform_cid( if let Some(args) = meta.args { builder = builder.args(args); } - if let Some(json_path) = meta.json_path { - builder = builder.json_path(json_path); + if let Some(lens) = meta.lens { + builder = builder.lens(lens); } match meta.kind {