From 4894ec414fe5fd34ac0e368f2caf65c509bb7681 Mon Sep 17 00:00:00 2001 From: Nasr Date: Fri, 16 Aug 2024 12:59:54 -0400 Subject: [PATCH] remove world class hahs & libp2p singature --- dojo.h | 26 +++++++++++++------------- dojo.hpp | 18 +++++++++--------- dojo.pyx | 16 ++++++++-------- src/c/mod.rs | 14 ++++++-------- src/c/types.rs | 8 +------- src/wasm/mod.rs | 16 ++++++++-------- 6 files changed, 45 insertions(+), 53 deletions(-) diff --git a/dojo.h b/dojo.h index e204010..970bedb 100644 --- a/dojo.h +++ b/dojo.h @@ -82,17 +82,6 @@ typedef struct ResultCArrayu8 { }; } ResultCArrayu8; -typedef struct Signature { - /** - * The `r` value of a signature - */ - struct FieldElement r; - /** - * The `s` value of a signature - */ - struct FieldElement s; -} Signature; - typedef enum Primitive_Tag { I8, I16, @@ -396,7 +385,6 @@ typedef struct CArrayCHashItemFieldElementModelMetadata { typedef struct WorldMetadata { struct FieldElement world_address; - struct FieldElement world_class_hash; struct CArrayCHashItemFieldElementModelMetadata models; } WorldMetadata; @@ -502,6 +490,17 @@ typedef struct ResultFieldElement { }; } ResultFieldElement; +typedef struct Signature { + /** + * The `r` value of a signature + */ + struct FieldElement r; + /** + * The `s` value of a signature + */ + struct FieldElement s; +} Signature; + typedef enum ResultSignature_Tag { OkSignature, ErrSignature, @@ -596,7 +595,8 @@ void client_set_logger(struct ToriiClient *client, void (*logger)(const char*)); struct ResultCArrayu8 client_publish_message(struct ToriiClient *client, const char *message, - struct Signature signature); + const struct FieldElement *signature_felts, + uintptr_t signature_felts_len); struct ResultCArrayEntity client_entities(struct ToriiClient *client, const struct Query *query); diff --git a/dojo.hpp b/dojo.hpp index e089fcd..21e9492 100644 --- a/dojo.hpp +++ b/dojo.hpp @@ -96,13 +96,6 @@ struct CArray { uintptr_t data_len; }; -struct Signature { - /// The `r` value of a signature - FieldElement r; - /// The `s` value of a signature - FieldElement s; -}; - struct Primitive { enum class Tag { I8, @@ -704,7 +697,6 @@ struct CHashItem { struct WorldMetadata { FieldElement world_address; - FieldElement world_class_hash; CArray> models; }; @@ -751,6 +743,13 @@ struct EntityKeysClause { } }; +struct Signature { + /// The `r` value of a signature + FieldElement r; + /// The `s` value of a signature + FieldElement s; +}; + struct Call { FieldElement to; const char *selector; @@ -829,7 +828,8 @@ void client_set_logger(ToriiClient *client, void (*logger)(const char*)); Result> client_publish_message(ToriiClient *client, const char *message, - Signature signature); + const FieldElement *signature_felts, + uintptr_t signature_felts_len); Result> client_entities(ToriiClient *client, const Query *query); diff --git a/dojo.pyx b/dojo.pyx index d5c858a..16fd9fa 100644 --- a/dojo.pyx +++ b/dojo.pyx @@ -66,12 +66,6 @@ cdef extern from *: CArrayu8 ok; Error err; - cdef struct Signature: - # The `r` value of a signature - FieldElement r; - # The `s` value of a signature - FieldElement s; - cdef enum Primitive_Tag: I8, I16, @@ -262,7 +256,6 @@ cdef extern from *: cdef struct WorldMetadata: FieldElement world_address; - FieldElement world_class_hash; CArrayCHashItemFieldElementModelMetadata models; cdef enum ResultSubscription_Tag: @@ -319,6 +312,12 @@ cdef extern from *: FieldElement ok; Error err; + cdef struct Signature: + # The `r` value of a signature + FieldElement r; + # The `s` value of a signature + FieldElement s; + cdef enum ResultSignature_Tag: OkSignature, ErrSignature, @@ -372,7 +371,8 @@ cdef extern from *: ResultCArrayu8 client_publish_message(ToriiClient *client, const char *message, - Signature signature); + const FieldElement *signature_felts, + uintptr_t signature_felts_len); ResultCArrayEntity client_entities(ToriiClient *client, const Query *query); diff --git a/src/c/mod.rs b/src/c/mod.rs index 0194246..4508706 100644 --- a/src/c/mod.rs +++ b/src/c/mod.rs @@ -76,7 +76,8 @@ pub unsafe extern "C" fn client_publish_message( client: *mut ToriiClient, // A json string representing the typed data message message: *const c_char, - signature: types::Signature, + signature_felts: *const types::FieldElement, + signature_felts_len: usize, ) -> Result> { let message = unsafe { CStr::from_ptr(message).to_string_lossy().into_owned() }; let message = match serde_json::from_str::(message.as_str()) { @@ -84,13 +85,10 @@ pub unsafe extern "C" fn client_publish_message( Err(e) => return Result::Err(e.into()), }; - let client_future = unsafe { - (*client).inner.publish_message(Message { - message, - signature_r: (&signature.r).into(), - signature_s: (&signature.s).into(), - }) - }; + let signature = unsafe { std::slice::from_raw_parts(signature_felts, signature_felts_len) }; + let signature = signature.iter().map(|f| (&f.clone()).into()).collect::>(); + + let client_future = unsafe { (*client).inner.publish_message(Message { message, signature }) }; match (*client).runtime.block_on(client_future) { Ok(data) => Result::Ok(data.into()), diff --git a/src/c/types.rs b/src/c/types.rs index 0d11324..4cc4270 100644 --- a/src/c/types.rs +++ b/src/c/types.rs @@ -968,7 +968,6 @@ impl From<&torii_grpc::types::Value> for Value { #[repr(C)] pub struct WorldMetadata { pub world_address: FieldElement, - pub world_class_hash: FieldElement, pub models: CArray>, } @@ -982,7 +981,6 @@ impl From<&dojo_types::WorldMetadata> for WorldMetadata { WorldMetadata { world_address: (&value.world_address.clone()).into(), - world_class_hash: (&value.world_class_hash.clone()).into(), models: models.into(), } } @@ -1001,11 +999,7 @@ impl From<&WorldMetadata> for dojo_types::WorldMetadata { }) .collect(); - dojo_types::WorldMetadata { - world_address: (&value.world_address.clone()).into(), - world_class_hash: (&value.world_class_hash.clone()).into(), - models, - } + dojo_types::WorldMetadata { world_address: (&value.world_address.clone()).into(), models } } } diff --git a/src/wasm/mod.rs b/src/wasm/mod.rs index 9334125..81f232c 100644 --- a/src/wasm/mod.rs +++ b/src/wasm/mod.rs @@ -555,7 +555,7 @@ impl ToriiClient { pub async fn publish_message( &mut self, message: &str, - signature: Signature, + signature: Vec, ) -> Result { #[cfg(feature = "console-error-panic")] console_error_panic_hook::set_once(); @@ -563,15 +563,15 @@ impl ToriiClient { let message = serde_json::from_str(message) .map_err(|err| JsValue::from(format!("failed to parse message: {err}")))?; + let signature = signature + .iter() + .map(|s| Felt::from_str(s.as_str())) + .collect::, _>>() + .map_err(|err| JsValue::from(format!("failed to parse signature: {err}")))?; + let message_id = self .inner - .publish_message(Message { - message, - signature_r: Felt::from_str(signature.r.as_str()) - .map_err(|err| JsValue::from(err.to_string()))?, - signature_s: Felt::from_str(signature.s.as_str()) - .map_err(|err| JsValue::from(err.to_string()))?, - }) + .publish_message(Message { message, signature }) .await .map_err(|err| JsValue::from(err.to_string()))?;