diff --git a/Cargo.lock b/Cargo.lock index 7d841e6..d5e30e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -694,14 +694,15 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bigdecimal" -version = "0.3.1" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +checksum = "51d712318a27c7150326677b321a5fa91b55f6d9034ffd67f20319e147d40cee" dependencies = [ + "autocfg", + "libm", "num-bigint", "num-integer", "num-traits 0.2.19", - "serde", ] [[package]] @@ -872,13 +873,13 @@ checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" [[package]] name = "cainome" version = "0.2.3" -source = "git+https://github.com/cartridge-gg/cainome?rev=ec18eea5#ec18eea55a5c3c563dc502c051a8df3dfab118a9" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.0#6c82c5b8e8169a79fe5606f963a3afdf0aa37078" dependencies = [ "anyhow", "async-trait", - "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", - "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", - "cainome-rs 0.1.0 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", + "cainome-cairo-serde", + "cainome-parser", + "cainome-rs", "cainome-rs-macro", "camino", "clap 4.5.4", @@ -887,49 +888,17 @@ dependencies = [ "serde", "serde_json", "starknet", + "starknet-types-core", "thiserror", "tracing", "tracing-subscriber", "url", ] -[[package]] -name = "cainome" -version = "0.2.3" -source = "git+https://github.com/cartridge-gg/cainome#b5c728a137256bc68b3645ed37734aa778c83508" -dependencies = [ - "anyhow", - "async-trait", - "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome)", - "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome)", - "cainome-rs 0.1.0 (git+https://github.com/cartridge-gg/cainome)", - "camino", - "clap 4.5.4", - "clap_complete", - "convert_case", - "serde", - "serde_json", - "starknet", - "thiserror", - "tracing", - "tracing-subscriber", - "url", -] - -[[package]] -name = "cainome-cairo-serde" -version = "0.1.0" -source = "git+https://github.com/cartridge-gg/cainome?rev=ec18eea5#ec18eea55a5c3c563dc502c051a8df3dfab118a9" -dependencies = [ - "serde", - "starknet", - "thiserror", -] - [[package]] name = "cainome-cairo-serde" version = "0.1.0" -source = "git+https://github.com/cartridge-gg/cainome#b5c728a137256bc68b3645ed37734aa778c83508" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.0#6c82c5b8e8169a79fe5606f963a3afdf0aa37078" dependencies = [ "serde", "starknet", @@ -939,20 +908,7 @@ dependencies = [ [[package]] name = "cainome-parser" version = "0.1.0" -source = "git+https://github.com/cartridge-gg/cainome?rev=ec18eea5#ec18eea55a5c3c563dc502c051a8df3dfab118a9" -dependencies = [ - "convert_case", - "quote", - "serde_json", - "starknet", - "syn 2.0.66", - "thiserror", -] - -[[package]] -name = "cainome-parser" -version = "0.1.0" -source = "git+https://github.com/cartridge-gg/cainome#b5c728a137256bc68b3645ed37734aa778c83508" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.0#6c82c5b8e8169a79fe5606f963a3afdf0aa37078" dependencies = [ "convert_case", "quote", @@ -965,29 +921,11 @@ dependencies = [ [[package]] name = "cainome-rs" version = "0.1.0" -source = "git+https://github.com/cartridge-gg/cainome?rev=ec18eea5#ec18eea55a5c3c563dc502c051a8df3dfab118a9" -dependencies = [ - "anyhow", - "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", - "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", - "camino", - "prettyplease 0.2.19", - "proc-macro2", - "quote", - "serde_json", - "starknet", - "syn 2.0.66", - "thiserror", -] - -[[package]] -name = "cainome-rs" -version = "0.1.0" -source = "git+https://github.com/cartridge-gg/cainome#b5c728a137256bc68b3645ed37734aa778c83508" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.0#6c82c5b8e8169a79fe5606f963a3afdf0aa37078" dependencies = [ "anyhow", - "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome)", - "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome)", + "cainome-cairo-serde", + "cainome-parser", "camino", "prettyplease 0.2.19", "proc-macro2", @@ -1001,12 +939,12 @@ dependencies = [ [[package]] name = "cainome-rs-macro" version = "0.1.0" -source = "git+https://github.com/cartridge-gg/cainome?rev=ec18eea5#ec18eea55a5c3c563dc502c051a8df3dfab118a9" +source = "git+https://github.com/cartridge-gg/cainome?tag=v0.3.0#6c82c5b8e8169a79fe5606f963a3afdf0aa37078" dependencies = [ "anyhow", - "cainome-cairo-serde 0.1.0 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", - "cainome-parser 0.1.0 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", - "cainome-rs 0.1.0 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", + "cainome-cairo-serde", + "cainome-parser", + "cainome-rs", "proc-macro2", "quote", "serde_json", @@ -1420,7 +1358,7 @@ dependencies = [ "serde_json", "sha3", "smol_str", - "starknet-crypto", + "starknet-crypto 0.6.2", "starknet-types-core", "thiserror", ] @@ -2319,7 +2257,7 @@ name = "dojo-c" version = "0.7.3" dependencies = [ "anyhow", - "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome)", + "cainome", "cbindgen", "crypto-bigint", "dojo-types", @@ -2331,7 +2269,7 @@ dependencies = [ "serde-wasm-bindgen", "serde_json", "starknet", - "starknet-crypto", + "starknet-crypto 0.7.1", "stream-cancel", "tokio", "tokio-stream", @@ -2347,10 +2285,11 @@ dependencies = [ [[package]] name = "dojo-lang" -version = "0.7.3" -source = "git+https://github.com/dojoengine/dojo?rev=e8539d5b199efbd51c89c75da32f6592de5d9262#e8539d5b199efbd51c89c75da32f6592de5d9262" +version = "1.0.0-alpha.0" +source = "git+https://github.com/dojoengine/dojo?rev=2e04f54ceaa1c595e5d9ca369aaef640e189ac2a#2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" dependencies = [ "anyhow", + "cainome", "cairo-lang-compiler", "cairo-lang-debug", "cairo-lang-defs", @@ -2378,6 +2317,7 @@ dependencies = [ "lazy_static", "num-traits 0.2.19", "once_cell", + "regex", "salsa", "scarb", "semver", @@ -2386,6 +2326,7 @@ dependencies = [ "serde_with", "smol_str", "starknet", + "starknet-crypto 0.7.1", "thiserror", "toml 0.8.12", "tracing", @@ -2394,13 +2335,14 @@ dependencies = [ [[package]] name = "dojo-types" -version = "0.7.3" -source = "git+https://github.com/dojoengine/dojo?rev=e8539d5b199efbd51c89c75da32f6592de5d9262#e8539d5b199efbd51c89c75da32f6592de5d9262" +version = "1.0.0-alpha.0" +source = "git+https://github.com/dojoengine/dojo?rev=2e04f54ceaa1c595e5d9ca369aaef640e189ac2a#2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" dependencies = [ - "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", + "cainome", "crypto-bigint", "hex", "itertools 0.12.1", + "num-traits 0.2.19", "serde", "serde_json", "starknet", @@ -2411,12 +2353,12 @@ dependencies = [ [[package]] name = "dojo-world" -version = "0.7.3" -source = "git+https://github.com/dojoengine/dojo?rev=e8539d5b199efbd51c89c75da32f6592de5d9262#e8539d5b199efbd51c89c75da32f6592de5d9262" +version = "1.0.0-alpha.0" +source = "git+https://github.com/dojoengine/dojo?rev=2e04f54ceaa1c595e5d9ca369aaef640e189ac2a#2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" dependencies = [ "anyhow", "async-trait", - "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", + "cainome", "cairo-lang-filesystem", "cairo-lang-project", "cairo-lang-starknet", @@ -2427,19 +2369,21 @@ dependencies = [ "futures", "http 0.2.12", "ipfs-api-backend-hyper", + "num-traits 0.2.19", "scarb", "serde", "serde_json", "serde_with", "smol_str", "starknet", - "starknet-crypto", + "starknet-crypto 0.7.1", "thiserror", "tokio", "toml 0.8.12", "topological-sort", "tracing", "url", + "walkdir", ] [[package]] @@ -5983,9 +5927,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits 0.2.19", @@ -8125,12 +8069,13 @@ dependencies = [ [[package]] name = "sozo-ops" -version = "0.7.3" -source = "git+https://github.com/dojoengine/dojo?rev=e8539d5b199efbd51c89c75da32f6592de5d9262#e8539d5b199efbd51c89c75da32f6592de5d9262" +version = "1.0.0-alpha.0" +source = "git+https://github.com/dojoengine/dojo?rev=2e04f54ceaa1c595e5d9ca369aaef640e189ac2a#2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" dependencies = [ "anyhow", "async-trait", - "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", + "bigdecimal", + "cainome", "cairo-lang-compiler", "cairo-lang-defs", "cairo-lang-filesystem", @@ -8151,6 +8096,9 @@ dependencies = [ "dojo-types", "dojo-world", "futures", + "itertools 0.12.1", + "num-bigint", + "num-traits 0.2.19", "rpassword", "scarb", "scarb-ui", @@ -8160,7 +8108,7 @@ dependencies = [ "serde_with", "smol_str", "starknet", - "starknet-crypto", + "starknet-crypto 0.7.1", "thiserror", "tokio", "toml 0.8.12", @@ -8423,15 +8371,14 @@ dependencies = [ [[package]] name = "starknet" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20b9a7b7bfd87287af85854f7458b8170ba6aa59c39113436532b7ff3d2fcbd8" +checksum = "1e633a772f59214c296d5037c95c36b72792c9360323818da2b625c7b4ec4b49" dependencies = [ "starknet-accounts", "starknet-contract", "starknet-core", - "starknet-crypto", - "starknet-ff", + "starknet-crypto 0.7.1", "starknet-macros", "starknet-providers", "starknet-signers", @@ -8439,13 +8386,14 @@ dependencies = [ [[package]] name = "starknet-accounts" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2095d7584608ae1707bd1cf2889368ab3734d9f54e4fcef4765cba1f3b3f7618" +checksum = "eee8a6b588a22c7e79f5d8d4e33413387db63a8beb98be8610138541794cc0a5" dependencies = [ "async-trait", "auto_impl", "starknet-core", + "starknet-crypto 0.7.1", "starknet-providers", "starknet-signers", "thiserror", @@ -8453,9 +8401,9 @@ dependencies = [ [[package]] name = "starknet-contract" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3b73d437b4d62241612d13fce612602de6684c149cccf696e76a20757e2156" +checksum = "a5f91344f1e0b81873b6dc235c50ae4d084c6ea4dd4a1e3e27ad895803adb610" dependencies = [ "serde", "serde_json", @@ -8468,11 +8416,11 @@ dependencies = [ [[package]] name = "starknet-core" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ed286d637e34fb8ae1cd2f9615120ec8ff38d1cffd311ed7fdd497cdd2bd01f" +version = "0.11.1" +source = "git+https://github.com/kariy/starknet-rs?branch=dojo-patch#a8ed922690258ca218c80154007aa446ad03929c" dependencies = [ "base64 0.21.7", + "crypto-bigint", "flate2", "hex", "serde", @@ -8480,8 +8428,8 @@ dependencies = [ "serde_json_pythonic", "serde_with", "sha3", - "starknet-crypto", - "starknet-ff", + "starknet-crypto 0.7.0", + "starknet-types-core", ] [[package]] @@ -8498,23 +8446,83 @@ dependencies = [ "num-traits 0.2.19", "rfc6979", "sha2", - "starknet-crypto-codegen", - "starknet-curve", + "starknet-crypto-codegen 0.3.3", + "starknet-curve 0.4.2", "starknet-ff", "zeroize", ] +[[package]] +name = "starknet-crypto" +version = "0.7.0" +source = "git+https://github.com/kariy/starknet-rs?branch=dojo-patch#a8ed922690258ca218c80154007aa446ad03929c" +dependencies = [ + "crypto-bigint", + "hex", + "hmac", + "num-bigint", + "num-integer", + "num-traits 0.2.19", + "rfc6979", + "sha2", + "starknet-crypto-codegen 0.4.0 (git+https://github.com/kariy/starknet-rs?branch=dojo-patch)", + "starknet-curve 0.5.0 (git+https://github.com/kariy/starknet-rs?branch=dojo-patch)", + "starknet-types-core", + "zeroize", +] + +[[package]] +name = "starknet-crypto" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2a821ad8d98c6c3e4d0e5097f3fe6e2ed120ada9d32be87cd1330c7923a2f0" +dependencies = [ + "crypto-bigint", + "hex", + "hmac", + "num-bigint", + "num-integer", + "num-traits 0.2.19", + "rfc6979", + "sha2", + "starknet-crypto-codegen 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "starknet-curve 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "starknet-types-core", + "zeroize", +] + [[package]] name = "starknet-crypto-codegen" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbc159a1934c7be9761c237333a57febe060ace2bc9e3b337a59a37af206d19f" dependencies = [ - "starknet-curve", + "starknet-curve 0.4.2", "starknet-ff", "syn 2.0.66", ] +[[package]] +name = "starknet-crypto-codegen" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e179dedc3fa6da064e56811d3e05d446aa2f7459e4eb0e3e49378a337235437" +dependencies = [ + "starknet-curve 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "starknet-types-core", + "syn 2.0.66", +] + +[[package]] +name = "starknet-crypto-codegen" +version = "0.4.0" +source = "git+https://github.com/kariy/starknet-rs?branch=dojo-patch#a8ed922690258ca218c80154007aa446ad03929c" +dependencies = [ + "starknet-curve 0.5.0 (git+https://github.com/kariy/starknet-rs?branch=dojo-patch)", + "starknet-types-core", + "syn 2.0.66", +] + [[package]] name = "starknet-curve" version = "0.4.2" @@ -8524,6 +8532,23 @@ dependencies = [ "starknet-ff", ] +[[package]] +name = "starknet-curve" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56935b306dcf0b8f14bb2a1257164b8478bb8be4801dfae0923f5b266d1b457c" +dependencies = [ + "starknet-types-core", +] + +[[package]] +name = "starknet-curve" +version = "0.5.0" +source = "git+https://github.com/kariy/starknet-rs?branch=dojo-patch#a8ed922690258ca218c80154007aa446ad03929c" +dependencies = [ + "starknet-types-core", +] + [[package]] name = "starknet-ff" version = "0.3.7" @@ -8531,19 +8556,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abf1b44ec5b18d87c1ae5f54590ca9d0699ef4dd5b2ffa66fc97f24613ec585" dependencies = [ "ark-ff", - "bigdecimal", "crypto-bigint", "getrandom", "hex", - "num-bigint", - "serde", ] [[package]] name = "starknet-macros" -version = "0.1.7" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95d549d3078bdbe775d0deaa8ddb57a19942989ce7c1f2dfd60beeb322bb4945" +checksum = "f4fe4f8d615329410578cbedcdbaa4a36c7f28f68c3f3ac56006cfbdaeaa2b41" dependencies = [ "starknet-core", "syn 2.0.66", @@ -8551,14 +8573,15 @@ dependencies = [ [[package]] name = "starknet-providers" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6abf40ffcbe3b887b4d5cfc8ab73170c816b4aa78d1d4ad59abd3fb3b0f53cd" +checksum = "59c85e0a0f4563ae95dfeae14ea0f0c70610efc0ec2462505c64eff5765e7b97" dependencies = [ "async-trait", "auto_impl", "ethereum-types", "flate2", + "getrandom", "log", "reqwest 0.11.27", "serde", @@ -8571,25 +8594,25 @@ dependencies = [ [[package]] name = "starknet-signers" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e9a2bd4fd66090003c3b7f0d76476e5b63cd44f6a49ede2442673f4427d5a40" +checksum = "c17da2139119dbe3aacf1d5d4338798a5c489d17f424916ceb9d2efd83554f87" dependencies = [ "async-trait", "auto_impl", "crypto-bigint", "eth-keystore", + "getrandom", "rand", "starknet-core", - "starknet-crypto", + "starknet-crypto 0.7.1", "thiserror", ] [[package]] name = "starknet-types-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4098ac4ad57621cc7ec133b80fe72814d2cc4bee63ca8e7be4450ba6f42a07e8" +version = "0.1.5" +source = "git+https://github.com/dojoengine/types-rs?rev=289e2f0#289e2f0bfd5f01a98e7273ff7ce8902a23b5f9d5" dependencies = [ "lambdaworks-crypto", "lambdaworks-math", @@ -9233,8 +9256,8 @@ checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" [[package]] name = "torii-client" -version = "0.7.3" -source = "git+https://github.com/dojoengine/dojo?rev=e8539d5b199efbd51c89c75da32f6592de5d9262#e8539d5b199efbd51c89c75da32f6592de5d9262" +version = "1.0.0-alpha.0" +source = "git+https://github.com/dojoengine/dojo?rev=2e04f54ceaa1c595e5d9ca369aaef640e189ac2a#2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" dependencies = [ "async-trait", "crypto-bigint", @@ -9243,13 +9266,14 @@ dependencies = [ "futures", "futures-util", "libp2p-gossipsub 0.46.1 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.19", "parking_lot 0.12.3", "prost 0.11.9", "prost 0.12.4", "serde", "serde_json", "starknet", - "starknet-crypto", + "starknet-crypto 0.7.1", "thiserror", "tokio", "tonic 0.10.2", @@ -9261,13 +9285,13 @@ dependencies = [ [[package]] name = "torii-core" -version = "0.7.3" -source = "git+https://github.com/dojoengine/dojo?rev=e8539d5b199efbd51c89c75da32f6592de5d9262#e8539d5b199efbd51c89c75da32f6592de5d9262" +version = "1.0.0-alpha.0" +source = "git+https://github.com/dojoengine/dojo?rev=2e04f54ceaa1c595e5d9ca369aaef640e189ac2a#2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" dependencies = [ "anyhow", "async-trait", "base64 0.21.7", - "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", + "cainome", "chrono", "crypto-bigint", "dojo-types", @@ -9277,6 +9301,7 @@ dependencies = [ "hex", "lazy_static", "log", + "num-traits 0.2.19", "once_cell", "reqwest 0.12.4", "scarb-ui", @@ -9286,7 +9311,7 @@ dependencies = [ "sozo-ops", "sqlx", "starknet", - "starknet-crypto", + "starknet-crypto 0.7.1", "thiserror", "tokio", "tokio-stream", @@ -9296,16 +9321,18 @@ dependencies = [ [[package]] name = "torii-grpc" -version = "0.7.3" -source = "git+https://github.com/dojoengine/dojo?rev=e8539d5b199efbd51c89c75da32f6592de5d9262#e8539d5b199efbd51c89c75da32f6592de5d9262" +version = "1.0.0-alpha.0" +source = "git+https://github.com/dojoengine/dojo?rev=2e04f54ceaa1c595e5d9ca369aaef640e189ac2a#2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" dependencies = [ "bytes", "crypto-bigint", "dojo-types", + "dojo-world", "futures", "futures-util", "hex", "hyper 0.14.28", + "num-traits 0.2.19", "parking_lot 0.12.3", "prost 0.11.9", "prost 0.12.4", @@ -9315,7 +9342,7 @@ dependencies = [ "serde_json", "sqlx", "starknet", - "starknet-crypto", + "starknet-crypto 0.7.1", "strum", "strum_macros", "thiserror", @@ -9335,12 +9362,12 @@ dependencies = [ [[package]] name = "torii-relay" -version = "0.7.3" -source = "git+https://github.com/dojoengine/dojo?rev=e8539d5b199efbd51c89c75da32f6592de5d9262#e8539d5b199efbd51c89c75da32f6592de5d9262" +version = "1.0.0-alpha.0" +source = "git+https://github.com/dojoengine/dojo?rev=2e04f54ceaa1c595e5d9ca369aaef640e189ac2a#2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" dependencies = [ "anyhow", "async-trait", - "cainome 0.2.3 (git+https://github.com/cartridge-gg/cainome?rev=ec18eea5)", + "cainome", "chrono", "crypto-bigint", "dojo-types", @@ -9356,7 +9383,7 @@ dependencies = [ "serde_json", "sqlx", "starknet", - "starknet-crypto", + "starknet-crypto 0.7.1", "thiserror", "tokio", "torii-core", diff --git a/Cargo.toml b/Cargo.toml index 93ba6c1..10a4996 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,16 +7,17 @@ version = "0.7.3" crate-type = ["cdylib", "rlib", "staticlib"] [dependencies] -dojo-types = { git = "https://github.com/dojoengine/dojo", rev = "e8539d5b199efbd51c89c75da32f6592de5d9262" } -torii-client = { git = "https://github.com/dojoengine/dojo", rev = "e8539d5b199efbd51c89c75da32f6592de5d9262" } +dojo-types = { git = "https://github.com/dojoengine/dojo", rev = "2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" } +torii-client = { git = "https://github.com/dojoengine/dojo", rev = "2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" } torii-grpc = { git = "https://github.com/dojoengine/dojo", features = [ "client", -], rev = "e8539d5b199efbd51c89c75da32f6592de5d9262" } -torii-relay = { git = "https://github.com/dojoengine/dojo", rev = "e8539d5b199efbd51c89c75da32f6592de5d9262" } +], rev = "2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" } +torii-relay = { git = "https://github.com/dojoengine/dojo", rev = "2e04f54ceaa1c595e5d9ca369aaef640e189ac2a" } parking_lot = "0.12.1" -starknet = "0.10.0" -starknet-crypto = "0.6.2" +starknet = "0.11.0" +starknet-crypto = "0.7.0" + tokio = { version = "1.32.0", default-features = false, features = ["rt"] } url = "2.5.0" anyhow = "1.0.76" @@ -27,7 +28,7 @@ futures = "0.3.30" futures-channel = "0.3.30" wasm-bindgen = "0.2.92" stream-cancel = "0.8.2" -cainome ={ git = "https://github.com/cartridge-gg/cainome" } +cainome = { git = "https://github.com/cartridge-gg/cainome", tag = "v0.3.0" } # WASM [target.'cfg(target_arch = "wasm32")'.dependencies] @@ -46,3 +47,11 @@ crypto-bigint = "0.5.5" [build-dependencies] cbindgen = "0.26.0" + +[patch.crates-io] +# Remove this patch once the following PR is merged: +# +# To enable std feature on `starknet-types-core`. +# To re-export the entire `felt` module from `starknet-types-core`. +starknet-core = { git = "https://github.com/kariy/starknet-rs", branch = "dojo-patch" } +starknet-types-core = { git = "https://github.com/dojoengine/types-rs", rev = "289e2f0" } diff --git a/dojo.h b/dojo.h index f6e6e5a..de1cc44 100644 --- a/dojo.h +++ b/dojo.h @@ -255,19 +255,14 @@ typedef struct ModelKeysClause { const char *model; } ModelKeysClause; -typedef struct Model { - const char *name; - struct CArrayMember members; -} Model; - -typedef struct CArrayModel { - struct Model *data; +typedef struct CArrayStruct { + struct Struct *data; uintptr_t data_len; -} CArrayModel; +} CArrayStruct; typedef struct Entity { struct FieldElement hashed_keys; - struct CArrayModel models; + struct CArrayStruct models; } Entity; typedef struct CArrayEntity { @@ -369,7 +364,6 @@ typedef struct CArrayClause { } CArrayClause; typedef struct CompositeClause { - const char *model; enum LogicalOperator operator_; struct CArrayClause clauses; } CompositeClause; @@ -422,6 +416,7 @@ typedef struct CArrayModelKeysClause { typedef struct ModelMetadata { struct Ty schema; + const char *namespace_; const char *name; uint32_t packed_size; uint32_t unpacked_size; @@ -430,20 +425,20 @@ typedef struct ModelMetadata { struct CArrayFieldElement layout; } ModelMetadata; -typedef struct CHashItemc_charModelMetadata { - const char *key; +typedef struct CHashItemFieldElementModelMetadata { + struct FieldElement key; struct ModelMetadata value; -} CHashItemc_charModelMetadata; +} CHashItemFieldElementModelMetadata; -typedef struct CArrayCHashItemc_charModelMetadata { - struct CHashItemc_charModelMetadata *data; +typedef struct CArrayCHashItemFieldElementModelMetadata { + struct CHashItemFieldElementModelMetadata *data; uintptr_t data_len; -} CArrayCHashItemc_charModelMetadata; +} CArrayCHashItemFieldElementModelMetadata; typedef struct WorldMetadata { struct FieldElement world_address; struct FieldElement world_class_hash; - struct CArrayCHashItemc_charModelMetadata models; + struct CArrayCHashItemFieldElementModelMetadata models; } WorldMetadata; typedef enum Resultbool_Tag { @@ -666,12 +661,12 @@ struct ResultSubscription client_on_sync_model_update(struct ToriiClient *client struct ResultSubscription client_on_entity_state_update(struct ToriiClient *client, const struct EntityKeysClause *clause, void (*callback)(struct FieldElement, - struct CArrayModel)); + struct CArrayStruct)); struct ResultSubscription client_on_event_message_update(struct ToriiClient *client, const struct EntityKeysClause *clause, void (*callback)(struct FieldElement, - struct CArrayModel)); + struct CArrayStruct)); struct Resultbool client_remove_models_to_sync(struct ToriiClient *client, const struct ModelKeysClause *models, @@ -723,7 +718,7 @@ struct Resultbool wait_for_transaction(struct Provider *rpc, struct FieldElement struct FieldElement hash_get_contract_address(struct FieldElement class_hash, struct FieldElement salt, - const struct FieldElement *constructor_calldata, + const Felt *constructor_calldata, uintptr_t constructor_calldata_len, struct FieldElement deployer_address); @@ -733,7 +728,7 @@ void client_free(struct ToriiClient *t); void provider_free(struct Provider *rpc); -void model_free(struct Model *model); +void model_free(struct Struct *model); void account_free(struct Account *account); diff --git a/dojo.hpp b/dojo.hpp index f007b63..3d48a07 100644 --- a/dojo.hpp +++ b/dojo.hpp @@ -476,14 +476,9 @@ struct ModelKeysClause { const char *model; }; -struct Model { - const char *name; - CArray members; -}; - struct Entity { FieldElement hashed_keys; - CArray models; + CArray models; }; template @@ -637,7 +632,6 @@ struct MemberClause { }; struct CompositeClause { - const char *model; LogicalOperator operator_; CArray clauses; }; @@ -710,6 +704,7 @@ struct Query { struct ModelMetadata { Ty schema; + const char *namespace_; const char *name; uint32_t packed_size; uint32_t unpacked_size; @@ -727,7 +722,7 @@ struct CHashItem { struct WorldMetadata { FieldElement world_address; FieldElement world_class_hash; - CArray> models; + CArray> models; }; struct EntityKeysClause { @@ -873,11 +868,11 @@ Result client_on_sync_model_update(ToriiClient *client, Result client_on_entity_state_update(ToriiClient *client, const EntityKeysClause *clause, - void (*callback)(FieldElement, CArray)); + void (*callback)(FieldElement, CArray)); Result client_on_event_message_update(ToriiClient *client, const EntityKeysClause *clause, - void (*callback)(FieldElement, CArray)); + void (*callback)(FieldElement, CArray)); Result client_remove_models_to_sync(ToriiClient *client, const ModelKeysClause *models, @@ -925,7 +920,7 @@ Result wait_for_transaction(Provider *rpc, FieldElement txn_hash); FieldElement hash_get_contract_address(FieldElement class_hash, FieldElement salt, - const FieldElement *constructor_calldata, + const Felt *constructor_calldata, uintptr_t constructor_calldata_len, FieldElement deployer_address); @@ -935,7 +930,7 @@ void client_free(ToriiClient *t); void provider_free(Provider *rpc); -void model_free(Model *model); +void model_free(Struct *model); void account_free(Account *account); diff --git a/src/c/mod.rs b/src/c/mod.rs index 10d5a8f..34c6594 100644 --- a/src/c/mod.rs +++ b/src/c/mod.rs @@ -1,8 +1,7 @@ mod types; use self::types::{ - BlockId, CArray, Call, Entity, Error, Model, Query, Result, Signature, ToriiClient, Ty, - WorldMetadata, + BlockId, CArray, Call, Entity, Error, Query, Result, Signature, ToriiClient, Ty, WorldMetadata, }; use crate::constants; use crate::types::{Account, Provider, Subscription}; @@ -16,7 +15,7 @@ use starknet::core::utils::{ use starknet::providers::jsonrpc::HttpTransport; use starknet::providers::{JsonRpcClient, Provider as _}; use starknet::signers::{LocalWallet, SigningKey, VerifyingKey}; -use starknet_crypto::{poseidon_hash_many, FieldElement}; +use starknet_crypto::{poseidon_hash_many, Felt}; use std::ffi::{c_void, CStr, CString}; use std::ops::Deref; use std::os::raw::c_char; @@ -26,7 +25,7 @@ use tokio_stream::StreamExt; use torii_client::client::Client as TClient; use torii_relay::typed_data::TypedData; use torii_relay::types::Message; -use types::{EntityKeysClause, ModelKeysClause}; +use types::{EntityKeysClause, ModelKeysClause, Struct}; #[no_mangle] #[allow(clippy::missing_safety_doc)] @@ -246,7 +245,7 @@ pub unsafe extern "C" fn client_on_sync_model_update( pub unsafe extern "C" fn client_on_entity_state_update( client: *mut ToriiClient, clause: Option<&EntityKeysClause>, - callback: unsafe extern "C" fn(types::FieldElement, CArray), + callback: unsafe extern "C" fn(types::FieldElement, CArray), ) -> Result<*mut Subscription> { let clause = clause.map(|c| c.into()); @@ -262,7 +261,7 @@ pub unsafe extern "C" fn client_on_entity_state_update( while let Some(Ok(entity)) = rcv.next().await { let key: types::FieldElement = (&entity.hashed_keys).into(); - let models: Vec = entity.models.into_iter().map(|e| (&e).into()).collect(); + let models: Vec = entity.models.into_iter().map(|e| (&e).into()).collect(); callback(key, models.into()); } }); @@ -275,7 +274,7 @@ pub unsafe extern "C" fn client_on_entity_state_update( pub unsafe extern "C" fn client_on_event_message_update( client: *mut ToriiClient, clause: Option<&EntityKeysClause>, - callback: unsafe extern "C" fn(types::FieldElement, CArray), + callback: unsafe extern "C" fn(types::FieldElement, CArray), ) -> Result<*mut Subscription> { let clause = clause.map(|c| c.into()); @@ -291,7 +290,7 @@ pub unsafe extern "C" fn client_on_event_message_update( while let Some(Ok(entity)) = rcv.next().await { let key: types::FieldElement = (&entity.hashed_keys).into(); - let models: Vec = entity.models.into_iter().map(|e| (&e).into()).collect(); + let models: Vec = entity.models.into_iter().map(|e| (&e).into()).collect(); callback(key, models.into()); } }); @@ -349,7 +348,7 @@ pub unsafe extern "C" fn bytearray_deserialize( let felts = felts .iter() .map(|f| (&f.clone()).into()) - .collect::>(); + .collect::>(); let bytearray = match cairo_serde::ByteArray::cairo_deserialize(&felts, 0) { Ok(bytearray) => bytearray, Err(e) => return Result::Err(e.into()), @@ -373,7 +372,7 @@ pub unsafe extern "C" fn poseidon_hash( let felts = felts .iter() .map(|f| (&f.clone()).into()) - .collect::>(); + .collect::>(); (&poseidon_hash_many(&felts)).into() } @@ -477,7 +476,7 @@ pub unsafe extern "C" fn account_new( address: *const c_char, ) -> Result<*mut Account> { let address = unsafe { CStr::from_ptr(address).to_string_lossy() }; - let address = match FieldElement::from_hex_be(address.deref()) { + let address = match Felt::from_hex(address.deref()) { Ok(address) => address, Err(e) => return Result::Err(e.into()), }; @@ -542,7 +541,7 @@ pub unsafe extern "C" fn account_deploy_burner( verifying_key.scalar(), constants::KATANA_ACCOUNT_CLASS_HASH, &[verifying_key.scalar()], - FieldElement::ZERO, + Felt::ZERO, ); let signer = LocalWallet::from_signing_key(signing_key); @@ -557,17 +556,19 @@ pub unsafe extern "C" fn account_deploy_burner( ); // deploy the burner - let exec = (*master_account).0.execute(vec![starknet::accounts::Call { - to: constants::UDC_ADDRESS, - calldata: vec![ - constants::KATANA_ACCOUNT_CLASS_HASH, // class_hash - verifying_key.scalar(), // salt - FieldElement::ZERO, // deployer_address - FieldElement::ONE, // constructor calldata length (1) - verifying_key.scalar(), // constructor calldata - ], - selector: get_selector_from_name("deployContract").unwrap(), - }]); + let exec = (*master_account) + .0 + .execute_v3(vec![starknet::accounts::Call { + to: constants::UDC_ADDRESS, + calldata: vec![ + constants::KATANA_ACCOUNT_CLASS_HASH, // class_hash + verifying_key.scalar(), // salt + Felt::ZERO, // deployer_address + Felt::ONE, // constructor calldata length (1) + verifying_key.scalar(), // constructor calldata + ], + selector: get_selector_from_name("deployContract").unwrap(), + }]); let runtime = match tokio::runtime::Runtime::new() { Ok(runtime) => runtime, @@ -618,7 +619,7 @@ pub unsafe extern "C" fn account_execute_raw( .into_iter() .map(|c| (&c).into()) .collect::>(); - let call = (*account).0.execute(calldata); + let call = (*account).0.execute_v3(calldata); match tokio::runtime::Runtime::new() { Ok(runtime) => match runtime.block_on(call.send()) { @@ -652,7 +653,7 @@ pub unsafe extern "C" fn wait_for_transaction( pub unsafe extern "C" fn hash_get_contract_address( class_hash: types::FieldElement, salt: types::FieldElement, - constructor_calldata: *const FieldElement, + constructor_calldata: *const Felt, constructor_calldata_len: usize, deployer_address: types::FieldElement, ) -> types::FieldElement { @@ -706,9 +707,9 @@ pub unsafe extern "C" fn provider_free(rpc: *mut Provider) { #[no_mangle] #[allow(clippy::missing_safety_doc)] -pub unsafe extern "C" fn model_free(model: *mut Model) { +pub unsafe extern "C" fn model_free(model: *mut Struct) { if !model.is_null() { - let _: torii_grpc::types::schema::Model = (&*Box::::from_raw(model)).into(); + let _: dojo_types::schema::Struct = (&*Box::::from_raw(model)).into(); } } diff --git a/src/c/types.rs b/src/c/types.rs index 92c8214..a1b9736 100644 --- a/src/c/types.rs +++ b/src/c/types.rs @@ -41,7 +41,7 @@ impl From> for COption { } impl From> for Option { -fn from(val: COption) -> Self { + fn from(val: COption) -> Self { match val { COption::Some(v) => Some(v), COption::None => None, @@ -58,17 +58,17 @@ pub struct Signature { pub s: FieldElement, } -impl From<&Signature> for starknet_crypto::Signature { +impl From<&Signature> for starknet::core::crypto::Signature { fn from(val: &Signature) -> Self { - starknet_crypto::Signature { + Self { r: (&val.r).into(), s: (&val.s).into(), } } } -impl From<&starknet_crypto::Signature> for Signature { - fn from(val: &starknet_crypto::Signature) -> Self { +impl From<&starknet::core::crypto::Signature> for Signature { + fn from(val: &starknet::core::crypto::Signature) -> Self { Signature { r: (&val.r).into(), s: (&val.s).into(), @@ -213,14 +213,14 @@ pub struct FieldElement { data: [u8; 32], } -impl From<&FieldElement> for starknet::core::types::FieldElement { +impl From<&FieldElement> for starknet::core::types::Felt { fn from(val: &FieldElement) -> Self { - starknet::core::types::FieldElement::from_bytes_be(&val.data).unwrap() + starknet::core::types::Felt::from_bytes_be(&val.data) } } -impl From<&starknet::core::types::FieldElement> for FieldElement { - fn from(val: &starknet::core::types::FieldElement) -> Self { +impl From<&starknet::core::types::Felt> for FieldElement { + fn from(val: &starknet::core::types::Felt) -> Self { FieldElement { data: val.to_bytes_be(), } @@ -284,7 +284,6 @@ pub struct MemberClause { #[derive(Clone, Debug)] #[repr(C)] pub struct CompositeClause { - pub model: *const c_char, pub operator: LogicalOperator, pub clauses: CArray, } @@ -328,12 +327,12 @@ pub enum ValueType { #[repr(C)] pub struct Entity { pub hashed_keys: FieldElement, - pub models: CArray, + pub models: CArray, } impl From<&Entity> for torii_grpc::types::schema::Entity { fn from(val: &Entity) -> Self { - let models: Vec = (&val.models).into(); + let models: Vec = (&val.models).into(); let models = models.iter().map(|m| (&m.clone()).into()).collect(); torii_grpc::types::schema::Entity { @@ -349,7 +348,7 @@ impl From<&torii_grpc::types::schema::Entity> for Entity { .models .iter() .map(|m| (&m.clone()).into()) - .collect::>(); + .collect::>(); Entity { hashed_keys: (&val.hashed_keys.clone()).into(), @@ -358,43 +357,6 @@ impl From<&torii_grpc::types::schema::Entity> for Entity { } } -#[derive(Clone, Debug)] -#[repr(C)] -pub struct Model { - pub name: *const c_char, - pub members: CArray, -} - -impl From<&Model> for torii_grpc::types::schema::Model { - fn from(val: &Model) -> Self { - let members: Vec = (&val.members).into(); - - torii_grpc::types::schema::Model { - name: unsafe { - CString::from_raw(val.name as *mut c_char) - .into_string() - .unwrap() - }, - members: members.iter().map(|m| m.into()).collect(), - } - } -} - -impl From<&torii_grpc::types::schema::Model> for Model { - fn from(val: &torii_grpc::types::schema::Model) -> Self { - let members = val - .members - .iter() - .map(|m| (&m.clone()).into()) - .collect::>(); - - Model { - name: CString::new(val.name.clone()).unwrap().into_raw(), - members: members.into(), - } - } -} - impl From<&ValueType> for torii_grpc::types::ValueType { fn from(value: &ValueType) -> Self { match value { @@ -892,7 +854,7 @@ impl From<&torii_grpc::types::KeysClause> for KeysClause { let keys = val .keys .iter() - .map(|o| o.clone().into()) + .map(|o| (*o).into()) .map(|o: COption<_>| o.as_ref().map(Into::into)) .collect::>>(); let models = val @@ -974,11 +936,6 @@ impl From<&CompositeClause> for torii_grpc::types::CompositeClause { }; torii_grpc::types::CompositeClause { - model: unsafe { - CString::from_raw(val.model as *mut c_char) - .into_string() - .unwrap() - }, operator: operator.into(), clauses: clauses.iter().map(|c| c.into()).collect(), } @@ -995,7 +952,6 @@ impl From<&torii_grpc::types::CompositeClause> for CompositeClause { .collect::>(); CompositeClause { - model: CString::new(val.model.clone()).unwrap().into_raw(), operator: operator.into(), clauses: clauses.into(), } @@ -1106,7 +1062,7 @@ pub struct ModelStorage { pub struct WorldMetadata { pub world_address: FieldElement, pub world_class_hash: FieldElement, - pub models: CArray>, + pub models: CArray>, } impl From<&dojo_types::WorldMetadata> for WorldMetadata { @@ -1115,10 +1071,10 @@ impl From<&dojo_types::WorldMetadata> for WorldMetadata { .models .iter() .map(|(k, v)| CHashItem { - key: CString::new(k.clone()).unwrap().into_raw() as *const c_char, - value: (&v.clone()).into(), + key: k.into(), + value: v.into(), }) - .collect::>>(); + .collect::>>(); WorldMetadata { world_address: (&value.world_address.clone()).into(), @@ -1130,18 +1086,14 @@ impl From<&dojo_types::WorldMetadata> for WorldMetadata { impl From<&WorldMetadata> for dojo_types::WorldMetadata { fn from(value: &WorldMetadata) -> Self { - let models: Vec> = (&value.models).into(); + let models: Vec> = (&value.models).into(); let models = models .iter() .map(|m| { - let key = unsafe { - CString::from_raw(m.key as *mut c_char) - .into_string() - .unwrap() - }; - let value: dojo_types::schema::ModelMetadata = (&m.value).into(); + let k = (&m.key).into(); + let v: dojo_types::schema::ModelMetadata = (&m.value).into(); - (key, value) + (k, v) }) .collect(); @@ -1157,6 +1109,7 @@ impl From<&WorldMetadata> for dojo_types::WorldMetadata { #[repr(C)] pub struct ModelMetadata { pub schema: Ty, + pub namespace: *const c_char, pub name: *const c_char, pub packed_size: u32, pub unpacked_size: u32, @@ -1176,6 +1129,7 @@ impl From<&dojo_types::schema::ModelMetadata> for ModelMetadata { ModelMetadata { schema: (&value.schema.clone()).into(), name: CString::new(value.name.clone()).unwrap().into_raw(), + namespace: CString::new(value.namespace.clone()).unwrap().into_raw(), packed_size: value.packed_size, unpacked_size: value.unpacked_size, class_hash: (&value.class_hash.clone()).into(), @@ -1189,11 +1143,16 @@ impl From<&ModelMetadata> for dojo_types::schema::ModelMetadata { fn from(value: &ModelMetadata) -> Self { let layout: Vec = (&value.layout).into(); - let layout: Vec = + let layout: Vec = layout.iter().map(|v| (&v.clone()).into()).collect(); dojo_types::schema::ModelMetadata { schema: (&value.schema).into(), + namespace: unsafe { + CString::from_raw(value.namespace as *mut c_char) + .into_string() + .unwrap() + }, name: unsafe { CString::from_raw(value.name as *mut c_char) .into_string() diff --git a/src/constants.rs b/src/constants.rs index 4d94041..c71bbcf 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -1,7 +1,7 @@ use starknet::macros::felt; -use starknet_crypto::FieldElement; +use starknet_crypto::Felt; -pub const KATANA_ACCOUNT_CLASS_HASH: FieldElement = +pub const KATANA_ACCOUNT_CLASS_HASH: Felt = felt!("0x05400e90f7e0ae78bd02c77cd75527280470e2fe19c54970dd79dc37a9d3645c"); -pub const UDC_ADDRESS: FieldElement = +pub const UDC_ADDRESS: Felt = felt!("0x41a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf"); diff --git a/src/utils.rs b/src/utils.rs index 5034cc3..45d9bde 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -4,9 +4,9 @@ use starknet::{ core::types::StarknetError, providers::{Provider, ProviderError}, }; -use starknet_crypto::FieldElement; +use starknet_crypto::Felt; -pub async fn watch_tx

(provider: P, transaction_hash: FieldElement) -> Result<()> +pub async fn watch_tx

(provider: P, transaction_hash: Felt) -> Result<()> where P: Provider, ProviderError: 'static, diff --git a/src/wasm/mod.rs b/src/wasm/mod.rs index 80e1739..604239e 100644 --- a/src/wasm/mod.rs +++ b/src/wasm/mod.rs @@ -11,14 +11,15 @@ use serde::{Deserialize, Serialize}; use starknet::accounts::{ Account as _, ConnectedAccount as _, ExecutionEncoding, SingleOwnerAccount, }; -use starknet::core::types::{FieldElement, FunctionCall}; +use starknet::core::crypto::Signature; +use starknet::core::types::{Felt, FunctionCall}; use starknet::core::utils::{ cairo_short_string_to_felt, get_contract_address, get_selector_from_name, }; use starknet::providers::jsonrpc::HttpTransport; use starknet::providers::{JsonRpcClient, Provider as _}; use starknet::signers::{LocalWallet, SigningKey, VerifyingKey}; -use starknet_crypto::{poseidon_hash_many, Signature}; +use starknet_crypto::poseidon_hash_many; use stream_cancel::{StreamExt as _, Tripwire}; use torii_relay::typed_data::TypedData; use torii_relay::types::Message; @@ -76,8 +77,8 @@ impl From<&Signature> for JsSignature { impl From<&JsSignature> for Signature { fn from(value: &JsSignature) -> Self { Self { - r: FieldElement::from_str(value.r.as_str()).unwrap(), - s: FieldElement::from_str(value.s.as_str()).unwrap(), + r: Felt::from_str(value.r.as_str()).unwrap(), + s: Felt::from_str(value.s.as_str()).unwrap(), } } } @@ -96,12 +97,12 @@ pub struct Call { impl From<&Call> for starknet::accounts::Call { fn from(value: &Call) -> Self { Self { - to: FieldElement::from_str(value.to.as_str()).unwrap(), + to: Felt::from_str(value.to.as_str()).unwrap(), selector: get_selector_from_name(value.selector.as_str()).unwrap(), calldata: value .calldata .iter() - .map(|c| FieldElement::from_str(c.as_str()).unwrap()) + .map(|c| Felt::from_str(c.as_str()).unwrap()) .collect(), } } @@ -110,12 +111,12 @@ impl From<&Call> for starknet::accounts::Call { impl From<&Call> for FunctionCall { fn from(value: &Call) -> Self { Self { - contract_address: FieldElement::from_str(value.to.as_str()).unwrap(), + contract_address: Felt::from_str(value.to.as_str()).unwrap(), entry_point_selector: get_selector_from_name(value.selector.as_str()).unwrap(), calldata: value .calldata .iter() - .map(|c| FieldElement::from_str(c.as_str()).unwrap()) + .map(|c| Felt::from_str(c.as_str()).unwrap()) .collect(), } } @@ -149,7 +150,7 @@ impl From<&BlockId> for starknet::core::types::BlockId { fn from(value: &BlockId) -> Self { match value { BlockId::Hash(hash) => { - starknet::core::types::BlockId::Hash(FieldElement::from_str(hash.as_str()).unwrap()) + starknet::core::types::BlockId::Hash(Felt::from_str(hash.as_str()).unwrap()) } BlockId::Number(number) => starknet::core::types::BlockId::Number(*number), BlockId::BlockTag(tag) => starknet::core::types::BlockId::Tag(tag.into()), @@ -222,7 +223,7 @@ impl From<&EntityKeysClause> for torii_grpc::types::EntityKeysClause { match value { EntityKeysClause::HashedKeys(keys) => Self::HashedKeys( keys.iter() - .map(|k| FieldElement::from_str(k.as_str()).unwrap()) + .map(|k| Felt::from_str(k.as_str()).unwrap()) .collect(), ), EntityKeysClause::Keys(keys) => Self::Keys(keys.into()), @@ -262,7 +263,7 @@ impl From<&ModelKeysClause> for torii_grpc::types::ModelKeysClause { keys: value .keys .iter() - .map(|k| FieldElement::from_str(k.as_str()).unwrap()) + .map(|k| Felt::from_str(k.as_str()).unwrap()) .collect(), } } @@ -274,10 +275,7 @@ impl From<&KeysClause> for torii_grpc::types::KeysClause { keys: value .keys .iter() - .map(|o| { - o.as_ref() - .map(|k| FieldElement::from_str(k.as_str()).unwrap()) - }) + .map(|o| o.as_ref().map(|k| Felt::from_str(k.as_str()).unwrap())) .collect(), models: value.models.iter().map(|m| m.to_string()).collect(), pattern_matching: (&value.pattern_matching).into(), @@ -299,7 +297,6 @@ impl From<&MemberClause> for torii_grpc::types::MemberClause { impl From<&CompositeClause> for torii_grpc::types::CompositeClause { fn from(value: &CompositeClause) -> Self { Self { - model: value.model.to_string(), operator: (&value.operator).into(), clauses: value.clauses.iter().map(|c| c.into()).collect(), } @@ -421,14 +418,12 @@ impl From<&Primitive> for dojo_types::primitive::Primitive { Primitive::U256(Some(value)) => Self::U256(Some(U256::from_be_hex(value.as_str()))), Primitive::USize(Some(value)) => Self::USize(Some(*value)), Primitive::Bool(Some(value)) => Self::Bool(Some(*value)), - Primitive::Felt252(Some(value)) => { - Self::Felt252(Some(FieldElement::from_str(value).unwrap())) - } + Primitive::Felt252(Some(value)) => Self::Felt252(Some(Felt::from_str(value).unwrap())), Primitive::ClassHash(Some(value)) => { - Self::ClassHash(Some(FieldElement::from_str(value).unwrap())) + Self::ClassHash(Some(Felt::from_str(value).unwrap())) } Primitive::ContractAddress(Some(value)) => { - Self::ContractAddress(Some(FieldElement::from_str(value).unwrap())) + Self::ContractAddress(Some(Felt::from_str(value).unwrap())) } _ => unimplemented!(), } @@ -440,7 +435,7 @@ pub fn typed_data_encode(typed_data: &str, address: &str) -> Result(&typed_data) .map_err(|err| JsValue::from(format!("failed to parse typed data: {err}")))?; - let address = FieldElement::from_str(&address) + let address = Felt::from_str(&address) .map_err(|err| JsValue::from(format!("failed to parse address: {err}")))?; typed_data @@ -458,12 +453,12 @@ pub fn signing_key_new() -> String { #[wasm_bindgen(js_name = signingKeySign)] pub fn signing_key_sign(private_key: &str, hash: &str) -> Result { - let private_key = FieldElement::from_str(private_key); + let private_key = Felt::from_str(private_key); if let Err(e) = private_key { return Err(JsValue::from(format!("failed to parse private key: {e}"))); } - let hash = FieldElement::from_str(hash); + let hash = Felt::from_str(hash); if let Err(e) = hash { return Err(JsValue::from(format!("failed to parse hash: {e}"))); } @@ -479,7 +474,7 @@ pub fn signing_key_sign(private_key: &str, hash: &str) -> Result Result { - let signing_key = FieldElement::from_str(signing_key); + let signing_key = Felt::from_str(signing_key); if let Err(e) = signing_key { return Err(JsValue::from(format!("failed to parse signing key: {e}"))); } @@ -495,14 +490,14 @@ pub fn verifying_key_verify( hash: &str, signature: JsSignature, ) -> Result { - let verifying_key = FieldElement::from_str(verifying_key); + let verifying_key = Felt::from_str(verifying_key); if let Err(e) = verifying_key { return Err(JsValue::from(format!("failed to parse verifying key: {e}"))); } let verifying_key = VerifyingKey::from_scalar(verifying_key.unwrap()); - let hash = FieldElement::from_str(hash); + let hash = Felt::from_str(hash); if let Err(e) = hash { return Err(JsValue::from(format!("failed to parse hash: {e}"))); } @@ -538,14 +533,14 @@ impl Provider { private_key: &str, address: &str, ) -> Result { - let private_key = FieldElement::from_str(private_key); + let private_key = Felt::from_str(private_key); if let Err(e) = private_key { return Err(JsValue::from(format!("failed to parse private key: {e}"))); } let private_key = private_key.unwrap(); - let address = FieldElement::from_str(address); + let address = Felt::from_str(address); if let Err(e) = address { return Err(JsValue::from(format!("failed to parse address: {e}"))); } @@ -592,7 +587,7 @@ impl Provider { #[wasm_bindgen(js_name = waitForTransaction)] pub async unsafe fn wait_for_transaction(&self, txn_hash: &str) -> Result { - let txn_hash = FieldElement::from_str(txn_hash) + let txn_hash = Felt::from_str(txn_hash) .map_err(|err| JsValue::from(format!("failed to parse transaction hash: {err}")))?; let result: Result<(), anyhow::Error> = watch_tx(&self.0, txn_hash).await; @@ -619,7 +614,7 @@ impl Account { #[wasm_bindgen(js_name = setBlockId)] pub unsafe fn set_block_id(&mut self, block_id: String) -> Result<(), JsValue> { - let block_id = FieldElement::from_str(&block_id) + let block_id = Felt::from_str(&block_id) .map_err(|err| JsValue::from(format!("failed to parse block id: {err}")))?; self.0 .set_block_id(starknet::core::types::BlockId::Hash(block_id)); @@ -630,7 +625,7 @@ impl Account { pub async unsafe fn execute_raw(&self, calldata: Calls) -> Result { let calldata = calldata.0.iter().map(|c| c.into()).collect(); - let call = self.0.execute(calldata); + let call = self.0.execute_v3(calldata); let result = call.send().await; @@ -642,7 +637,7 @@ impl Account { #[wasm_bindgen(js_name = deployBurner)] pub async unsafe fn deploy_burner(&self, private_key: &str) -> Result { - let private_key = match FieldElement::from_str(private_key) { + let private_key = match Felt::from_str(private_key) { Ok(key) => key, Err(e) => return Err(JsValue::from(format!("failed to parse private key: {e}"))), }; @@ -653,7 +648,7 @@ impl Account { verifying_key.scalar(), constants::KATANA_ACCOUNT_CLASS_HASH, &[verifying_key.scalar()], - FieldElement::ZERO, + Felt::ZERO, ); let signer = LocalWallet::from_signing_key(signing_key); @@ -664,13 +659,13 @@ impl Account { SingleOwnerAccount::new(provider, signer, address, chain_id, ExecutionEncoding::New); // deploy the burner - let exec = self.0.execute(vec![starknet::accounts::Call { + let exec = self.0.execute_v3(vec![starknet::accounts::Call { to: constants::UDC_ADDRESS, calldata: vec![ constants::KATANA_ACCOUNT_CLASS_HASH, // class_hash verifying_key.scalar(), // salt - FieldElement::ZERO, // deployer_address - FieldElement::ONE, // constructor calldata length (1) + Felt::ZERO, // deployer_address + Felt::ONE, // constructor calldata length (1) verifying_key.scalar(), // constructor calldata ], selector: get_selector_from_name("deployContract").unwrap(), @@ -699,17 +694,17 @@ pub fn hash_get_contract_address( constructor_calldata: Vec, deployer_address: &str, ) -> Result { - let class_hash = FieldElement::from_str(class_hash) + let class_hash = Felt::from_str(class_hash) .map_err(|err| JsValue::from(format!("failed to parse class hash: {err}")))?; - let salt = FieldElement::from_str(salt) + let salt = Felt::from_str(salt) .map_err(|err| JsValue::from(format!("failed to parse salt: {err}")))?; - let deployer_address = FieldElement::from_str(deployer_address) + let deployer_address = Felt::from_str(deployer_address) .map_err(|err| JsValue::from(format!("failed to parse deployer address: {err}")))?; let constructor_calldata = constructor_calldata .into_iter() .map(|c| { - FieldElement::from_str(c.as_str()).map_err(|err| { + Felt::from_str(c.as_str()).map_err(|err| { JsValue::from(format!("failed to parse constructor calldata: {err}")) }) }) @@ -735,7 +730,7 @@ pub fn bytearray_serialize(str: &str) -> Result, JsValue> { pub fn bytearray_deserialize(felts: Vec) -> Result { let felts = felts .into_iter() - .map(|f| FieldElement::from_str(f.as_str())) + .map(|f| Felt::from_str(f.as_str())) .collect::, _>>() .map_err(|e| JsValue::from(format!("failed to parse felts: {e}")))?; @@ -758,7 +753,7 @@ pub fn bytearray_deserialize(felts: Vec) -> Result { pub fn poseidon_hash(inputs: Vec) -> Result { let inputs = inputs .into_iter() - .map(|i| FieldElement::from_str(i.as_str())) + .map(|i| Felt::from_str(i.as_str())) .collect::, _>>() .map_err(|e| JsValue::from(format!("failed to parse inputs: {e}")))?; @@ -833,8 +828,8 @@ impl Client { let keys = keys .into_iter() - .map(|k| FieldElement::from_str(k.as_str())) - .collect::, _>>() + .map(|k| Felt::from_str(k.as_str())) + .collect::, _>>() .map_err(|err| JsValue::from(format!("failed to parse entity keys: {err}")))?; match self @@ -905,7 +900,7 @@ impl Client { &model .keys .iter() - .map(|k| FieldElement::from_str(k.as_str())) + .map(|k| Felt::from_str(k.as_str())) .collect::, _>>() .unwrap(), ) @@ -941,7 +936,7 @@ impl Client { while let Some(update) = stream.next().await { let entity = update.expect("no updated entity"); - if entity.hashed_keys == FieldElement::ZERO { + if entity.hashed_keys == Felt::ZERO { continue; } @@ -974,7 +969,7 @@ impl Client { while let Some(update) = stream.next().await { let entity = update.expect("no updated entity"); - if entity.hashed_keys == FieldElement::ZERO { + if entity.hashed_keys == Felt::ZERO { continue; } @@ -1005,9 +1000,9 @@ impl Client { .inner .publish_message(Message { message, - signature_r: FieldElement::from_str(signature.r.as_str()) + signature_r: Felt::from_str(signature.r.as_str()) .map_err(|err| JsValue::from(err.to_string()))?, - signature_s: FieldElement::from_str(signature.s.as_str()) + signature_s: Felt::from_str(signature.s.as_str()) .map_err(|err| JsValue::from(err.to_string()))?, }) .await @@ -1038,7 +1033,7 @@ pub async fn create_client(config: ClientConfig) -> Result { world_address, } = config; - let world_address = FieldElement::from_str(&world_address) + let world_address = Felt::from_str(&world_address) .map_err(|err| JsValue::from(format!("failed to parse world address: {err}")))?; let client = torii_client::client::Client::new(torii_url, rpc_url, relay_url, world_address) diff --git a/src/wasm/utils.rs b/src/wasm/utils.rs index f8617d0..b89487b 100644 --- a/src/wasm/utils.rs +++ b/src/wasm/utils.rs @@ -12,7 +12,7 @@ pub fn parse_entities_as_json_str(entities: Vec) -> Value { .into_iter() .map(|model| { let model_map = model - .members + .children .iter() .map(|member| { (