Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 20 additions & 39 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 4 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,10 @@ crate-type = ["cdylib", "rlib", "staticlib"]
[dependencies]
dojo-world = { git = "https://github.com/dojoengine/dojo", rev = "4145801" }
dojo-types = { git = "https://github.com/dojoengine/dojo", rev = "4145801" }
torii-proto = { git = "https://github.com/dojoengine/torii", rev = "3ae9b23" }
torii-client = { git = "https://github.com/dojoengine/torii", rev = "3ae9b23" }
torii-grpc-client = { git = "https://github.com/dojoengine/torii", rev = "3ae9b23" }
torii-typed-data = { git = "https://github.com/dojoengine/torii", rev = "3ae9b23" }
torii-libp2p-types = { git = "https://github.com/dojoengine/torii", rev = "3ae9b23" }
torii-proto = { git = "https://github.com/dojoengine/torii", rev = "9a3f85b" }
torii-client = { git = "https://github.com/dojoengine/torii", rev = "9a3f85b" }
torii-grpc-client = { git = "https://github.com/dojoengine/torii", rev = "9a3f85b" }
torii-libp2p-types = { git = "https://github.com/dojoengine/torii", rev = "9a3f85b" }

starknet = "0.13.0"
starknet-crypto = "0.7.2"
Expand Down
15 changes: 8 additions & 7 deletions src/c/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ use lazy_static::lazy_static;
use starknet::accounts::{
Account as StarknetAccount, ConnectedAccount, ExecutionEncoding, SingleOwnerAccount,
};
use starknet::core::types::FunctionCall;
use starknet::core::types::{FunctionCall, TypedData};
use starknet::core::utils::get_contract_address;
use starknet::providers::jsonrpc::HttpTransport;
use starknet::providers::{JsonRpcClient, Provider as _};
Expand All @@ -49,7 +49,6 @@ use tokio::time::sleep;
use tokio_stream::StreamExt;
use torii_client::Client as TClient;
use torii_libp2p_types::Message;
use torii_typed_data::TypedData;
use tower_http::cors::{AllowOrigin, CorsLayer};
use types::{
BlockId, CArray, COption, Call, Clause, Controller, Entity, Error, Event, IndexerUpdate,
Expand Down Expand Up @@ -707,10 +706,12 @@ pub unsafe extern "C" fn client_publish_message(
signature_felts_len: usize,
) -> Result<CArray<u8>> {
let message = unsafe { CStr::from_ptr(message).to_string_lossy().into_owned() };
let message = match serde_json::from_str::<TypedData>(message.as_str()) {
Ok(message) => message,
Err(e) => return Result::Err(e.into()),
};
// Should we validate the message here?
// Not sure if it's worth the added latency
// match serde_json::from_str::<TypedData>(message.as_str()) {
// Ok(_) => {},
// Err(e) => return Result::Err(e.into()),
// };

let signature = unsafe { std::slice::from_raw_parts(signature_felts, signature_felts_len) };
let signature = signature.iter().map(|f| f.clone().into()).collect::<Vec<Felt>>();
Expand Down Expand Up @@ -1652,7 +1653,7 @@ pub unsafe extern "C" fn typed_data_encode(
};

let address = address.into();
let encoded = match typed_data.encode(address) {
let encoded = match typed_data.message_hash(address) {
Ok(encoded) => encoded,
Err(err) => return Result::Err(err.into()),
};
Expand Down
11 changes: 4 additions & 7 deletions src/wasm/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ pub struct SigningKey(starknet::signers::SigningKey);
pub struct VerifyingKey(starknet::signers::VerifyingKey);

#[wasm_bindgen]
pub struct TypedData(torii_typed_data::TypedData);
pub struct TypedData(starknet::core::types::TypedData);

#[wasm_bindgen]
pub struct ByteArray(cainome::cairo_serde::ByteArray);
Expand Down Expand Up @@ -199,7 +199,7 @@ impl VerifyingKey {
impl TypedData {
#[wasm_bindgen(constructor)]
pub fn new(typed_data: &str) -> Result<TypedData, JsValue> {
let typed_data = serde_json::from_str::<torii_typed_data::TypedData>(typed_data)
let typed_data = serde_json::from_str::<starknet::core::types::TypedData>(typed_data)
.map_err(|err| JsValue::from(format!("failed to parse typed data: {err}")))?;

Ok(TypedData(typed_data))
Expand All @@ -219,7 +219,7 @@ impl TypedData {
.map_err(|err| JsValue::from(format!("failed to parse address: {err}")))?;

self.0
.encode(address)
.message_hash(address)
.map(|felt| format!("{:#x}", felt))
.map_err(|err| JsValue::from(err.to_string()))
}
Expand Down Expand Up @@ -1413,9 +1413,6 @@ impl ToriiClient {
#[cfg(feature = "console-error-panic")]
console_error_panic_hook::set_once();

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()))
Expand All @@ -1424,7 +1421,7 @@ impl ToriiClient {

let message_id = self
.inner
.publish_message(Message { message, signature })
.publish_message(Message { message: message.to_string(), signature })
.await
.map_err(|err| JsValue::from(err.to_string()))?;

Expand Down