diff --git a/Cargo.lock b/Cargo.lock index 16535ae4d..50eacad72 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -324,7 +324,7 @@ dependencies = [ "mpl-token-metadata", "solana-program", "spl-associated-token-account", - "spl-token", + "spl-token 4.0.0", "spl-token-2022 0.9.0", ] @@ -1571,44 +1571,20 @@ dependencies = [ "borsh 0.10.4", "bytemuck", "derive_more", - "guestchain 0.0.0", + "guestchain", "ibc-client-tendermint-types", "ibc-core-client-context", "ibc-core-commitment-types", "ibc-core-host", "ibc-primitives 0.50.0", "ibc-proto 0.41.0", - "lib 0.0.0", + "lib", "prost 0.12.3", "prost-build 0.12.3", - "proto-utils 0.0.0", - "sealable-trie 0.0.0", - "stdx 0.0.0", - "trie-ids 0.0.0", -] - -[[package]] -name = "cf-guest" -version = "0.0.0" -source = "git+https://github.com/ComposableFi/emulated-light-client/#ba1046ead4232ee07a1db9b120f3035c983e0052" -dependencies = [ - "borsh 0.10.4", - "bytemuck", - "derive_more", - "guestchain 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "ibc-client-tendermint-types", - "ibc-core-client-context", - "ibc-core-commitment-types", - "ibc-core-host", - "ibc-primitives 0.50.0", - "ibc-proto 0.41.0", - "lib 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "prost 0.12.3", - "prost-build 0.12.3", - "proto-utils 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "sealable-trie 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "stdx 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "trie-ids 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "proto-utils", + "sealable-trie", + "stdx", + "trie-ids", ] [[package]] @@ -1620,7 +1596,7 @@ dependencies = [ "cf-guest 0.0.0", "derive_more", "ed25519-consensus", - "guestchain 0.0.0", + "guestchain", "ibc 0.15.0", "ibc-core-client-context", "ibc-core-client-types", @@ -1630,17 +1606,17 @@ dependencies = [ "ibc-primitives 0.50.0", "ibc-proto 0.18.0", "insta", - "lib 0.0.0", - "memory 0.0.0", + "lib", + "memory", "prost 0.11.9", "prost 0.12.3", "prost-build 0.11.9", "rand 0.8.5", - "sealable-trie 0.0.0", + "sealable-trie", "serde", - "stdx 0.0.0", + "stdx", "tendermint-proto 0.34.1", - "trie-ids 0.0.0", + "trie-ids", ] [[package]] @@ -1656,7 +1632,7 @@ dependencies = [ "derive_more", "digest 0.10.7", "ed25519-dalek 2.1.1", - "guestchain 0.0.0", + "guestchain", "hex", "hyperspace-primitives", "ibc 0.15.0", @@ -1673,7 +1649,7 @@ dependencies = [ "sha2 0.10.8", "sha3 0.10.8", "thiserror", - "trie-ids 0.0.0", + "trie-ids", ] [[package]] @@ -1693,40 +1669,14 @@ dependencies = [ "ibc-core-host", "ibc-primitives 0.50.0", "ibc-proto 0.41.0", - "lib 0.0.0", + "lib", "prost 0.12.3", "prost-build 0.12.3", - "proto-utils 0.0.0", + "proto-utils", "serde", "solana-program", - "stdx 0.0.0", - "trie-ids 0.0.0", -] - -[[package]] -name = "cf-solana" -version = "0.0.0" -source = "git+https://github.com/ComposableFi/emulated-light-client/#ba1046ead4232ee07a1db9b120f3035c983e0052" -dependencies = [ - "arrayvec 0.7.4", - "base64 0.21.7", - "blake3", - "bs58 0.5.1", - "bytemuck", - "cf-guest 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "derive_more", - "ibc-client-tendermint-types", - "ibc-core-client-context", - "ibc-core-commitment-types", - "ibc-core-host", - "ibc-primitives 0.50.0", - "ibc-proto 0.41.0", - "lib 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "prost 0.12.3", - "prost-build 0.12.3", - "proto-utils 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "stdx 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "trie-ids 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "stdx", + "trie-ids", ] [[package]] @@ -1735,10 +1685,10 @@ version = "0.1.0" dependencies = [ "borsh 0.10.4", "bytemuck", - "cf-solana 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "cf-solana 0.0.0", "derive_more", "ed25519-consensus", - "guestchain 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "guestchain", "ibc 0.15.0", "ibc-core-client-context", "ibc-core-client-types", @@ -1748,17 +1698,17 @@ dependencies = [ "ibc-primitives 0.50.0", "ibc-proto 0.18.0", "insta", - "lib 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "memory 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "lib", + "memory", "prost 0.11.9", "prost 0.12.3", "prost-build 0.11.9", "rand 0.8.5", - "sealable-trie 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "sealable-trie", "serde", - "stdx 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "stdx", "tendermint-proto 0.34.1", - "trie-ids 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "trie-ids", ] [[package]] @@ -4959,35 +4909,13 @@ dependencies = [ "ibc-core-host", "ibc-primitives 0.50.0", "ibc-proto 0.41.0", - "lib 0.0.0", - "prost 0.12.3", - "proto-utils 0.0.0", - "sealable-trie 0.0.0", - "stdx 0.0.0", - "strum 0.25.0", - "trie-ids 0.0.0", -] - -[[package]] -name = "guestchain" -version = "0.0.0" -source = "git+https://github.com/ComposableFi/emulated-light-client/#ba1046ead4232ee07a1db9b120f3035c983e0052" -dependencies = [ - "borsh 0.10.4", - "bytemuck", - "derive_more", - "ibc-core-client-context", - "ibc-core-commitment-types", - "ibc-core-host", - "ibc-primitives 0.50.0", - "ibc-proto 0.41.0", - "lib 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "lib", "prost 0.12.3", - "proto-utils 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "sealable-trie 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "stdx 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "proto-utils", + "sealable-trie", + "stdx", "strum 0.25.0", - "trie-ids 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "trie-ids", ] [[package]] @@ -5452,7 +5380,7 @@ dependencies = [ "frame-support", "frame-system", "futures", - "guestchain 0.0.0", + "guestchain", "hex", "hyperspace-cosmos", "hyperspace-metrics", @@ -5477,7 +5405,7 @@ dependencies = [ "ics10-grandpa", "ics11-beefy", "itertools 0.10.5", - "lib 0.0.0", + "lib", "light-client-common", "log", "once_cell", @@ -5488,7 +5416,7 @@ dependencies = [ "prost 0.11.9", "rand 0.8.5", "scale-encode 0.1.2", - "sealable-trie 0.0.0", + "sealable-trie", "serde", "serde_json", "sp-consensus-beefy", @@ -5504,7 +5432,7 @@ dependencies = [ "thiserror", "tokio", "toml 0.7.8", - "trie-ids 0.0.0", + "trie-ids", ] [[package]] @@ -5683,7 +5611,7 @@ dependencies = [ "ed25519-zebra", "futures", "futures-util", - "guestchain 0.0.0", + "guestchain", "hex", "hyperspace-primitives", "ibc 0.15.0", @@ -5708,9 +5636,10 @@ dependencies = [ "jito-protos", "jito-searcher-client", "k256 0.11.6", - "lib 0.0.0", + "lazy_static", + "lib", "log", - "memory 0.0.0", + "memory", "pallet-ibc", "parity-scale-codec", "prost 0.11.9", @@ -5721,7 +5650,7 @@ dependencies = [ "ripemd", "rs_merkle", "rusqlite", - "sealable-trie 0.0.0", + "sealable-trie", "serde", "serde_json", "sha2 0.10.8", @@ -5731,7 +5660,8 @@ dependencies = [ "solana-transaction-status", "solana-trie", "solana-write-account", - "stdx 0.0.0", + "spl-token 3.5.0", + "stdx", "tendermint 0.33.2", "tendermint 0.34.1", "tendermint-light-client", @@ -5745,7 +5675,7 @@ dependencies = [ "tokio-stream", "tonic 0.8.3", "tracing", - "trie-ids 0.0.0", + "trie-ids", ] [[package]] @@ -5773,7 +5703,7 @@ dependencies = [ "ed25519-zebra", "futures", "futures-util", - "guestchain 0.0.0", + "guestchain", "hex", "hyperspace-primitives", "ibc 0.15.0", @@ -5798,9 +5728,9 @@ dependencies = [ "jito-protos", "jito-searcher-client", "k256 0.11.6", - "lib 0.0.0", + "lib", "log", - "memory 0.0.0", + "memory", "pallet-ibc", "parity-scale-codec", "prost 0.11.9", @@ -5811,7 +5741,7 @@ dependencies = [ "ripemd", "rs_merkle", "rusqlite", - "sealable-trie 0.0.0", + "sealable-trie", "serde", "serde_json", "sha2 0.10.8", @@ -5821,7 +5751,7 @@ dependencies = [ "solana-transaction-status", "solana-trie", "solana-write-account", - "stdx 0.0.0", + "stdx", "tendermint 0.33.2", "tendermint 0.34.1", "tendermint-light-client", @@ -5835,7 +5765,7 @@ dependencies = [ "tokio-stream", "tonic 0.8.3", "tracing", - "trie-ids 0.0.0", + "trie-ids", ] [[package]] @@ -7416,21 +7346,7 @@ dependencies = [ "serde", "sha2 0.10.8", "solana-program", - "stdx 0.0.0", -] - -[[package]] -name = "lib" -version = "0.0.0" -source = "git+https://github.com/ComposableFi/emulated-light-client/#ba1046ead4232ee07a1db9b120f3035c983e0052" -dependencies = [ - "base64 0.21.7", - "borsh 0.10.4", - "bs58 0.5.1", - "bytemuck", - "derive_more", - "sha2 0.10.8", - "stdx 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "stdx", ] [[package]] @@ -8297,16 +8213,7 @@ name = "memory" version = "0.0.0" dependencies = [ "derive_more", - "stdx 0.0.0", -] - -[[package]] -name = "memory" -version = "0.0.0" -source = "git+https://github.com/ComposableFi/emulated-light-client/#ba1046ead4232ee07a1db9b120f3035c983e0052" -dependencies = [ - "derive_more", - "stdx 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "stdx", ] [[package]] @@ -8938,6 +8845,15 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +dependencies = [ + "num_enum_derive 0.5.11", +] + [[package]] name = "num_enum" version = "0.6.1" @@ -8956,6 +8872,18 @@ dependencies = [ "num_enum_derive 0.7.2", ] +[[package]] +name = "num_enum_derive" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "num_enum_derive" version = "0.6.1" @@ -9583,7 +9511,7 @@ dependencies = [ "frame-support", "frame-system", "grandpa-light-client-primitives", - "guestchain 0.0.0", + "guestchain", "hex", "hex-literal 0.3.4", "ibc 0.15.0", @@ -12401,18 +12329,6 @@ dependencies = [ "prost 0.12.3", ] -[[package]] -name = "proto-utils" -version = "0.0.0" -source = "git+https://github.com/ComposableFi/emulated-light-client/#ba1046ead4232ee07a1db9b120f3035c983e0052" -dependencies = [ - "const_format", - "derive_more", - "ibc-core-client-context", - "ibc-proto 0.41.0", - "prost 0.12.3", -] - [[package]] name = "psm" version = "0.1.21" @@ -14823,27 +14739,10 @@ dependencies = [ "borsh 0.10.4", "bytemuck", "derive_more", - "lib 0.0.0", - "memory 0.0.0", + "lib", + "memory", "sha2 0.10.8", - "stdx 0.0.0", - "strum 0.25.0", -] - -[[package]] -name = "sealable-trie" -version = "0.0.0" -source = "git+https://github.com/ComposableFi/emulated-light-client/#ba1046ead4232ee07a1db9b120f3035c983e0052" -dependencies = [ - "ascii 1.1.0", - "base64 0.21.7", - "borsh 0.10.4", - "bytemuck", - "derive_more", - "lib 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "memory 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", - "sha2 0.10.8", - "stdx 0.0.0 (git+https://github.com/ComposableFi/emulated-light-client/)", + "stdx", "strum 0.25.0", ] @@ -15396,7 +15295,7 @@ dependencies = [ "serde_json", "solana-config-program", "solana-sdk", - "spl-token", + "spl-token 4.0.0", "spl-token-2022 1.0.0", "spl-token-group-interface", "spl-token-metadata-interface", @@ -15551,15 +15450,15 @@ dependencies = [ "cf-guest 0.0.0", "cf-solana 0.0.0", "derive_more", - "guestchain 0.0.0", + "guestchain", "hex-literal 0.4.1", "ibc 0.50.0", "ibc-client-tendermint-types", "ibc-proto 0.41.0", "itertools 0.10.5", - "lib 0.0.0", + "lib", "linear-map", - "memory 0.0.0", + "memory", "primitive-types", "prost 0.12.3", "serde", @@ -15568,12 +15467,12 @@ dependencies = [ "solana-signature-verifier", "solana-trie", "spl-associated-token-account", - "spl-token", - "stdx 0.0.0", + "spl-token 4.0.0", + "stdx", "strum 0.25.0", "tendermint 0.34.1", "tendermint-light-client-verifier 0.34.1", - "trie-ids 0.0.0", + "trie-ids", "uint", "wasm", ] @@ -15970,10 +15869,10 @@ dependencies = [ "borsh 0.10.4", "bytemuck", "derive_more", - "guestchain 0.0.0", - "lib 0.0.0", + "guestchain", + "lib", "solana-program", - "stdx 0.0.0", + "stdx", ] [[package]] @@ -16068,7 +15967,7 @@ dependencies = [ "solana-sdk", "spl-associated-token-account", "spl-memo", - "spl-token", + "spl-token 4.0.0", "spl-token-2022 1.0.0", "thiserror", ] @@ -16078,11 +15977,11 @@ name = "solana-trie" version = "0.0.3" dependencies = [ "bytemuck", - "lib 0.0.0", - "memory 0.0.0", - "sealable-trie 0.0.0", + "lib", + "memory", + "sealable-trie", "solana-program", - "stdx 0.0.0", + "stdx", ] [[package]] @@ -16143,7 +16042,7 @@ name = "solana-write-account" version = "0.0.3" dependencies = [ "solana-program", - "stdx 0.0.0", + "stdx", ] [[package]] @@ -17337,7 +17236,7 @@ dependencies = [ "num-derive 0.4.2", "num-traits", "solana-program", - "spl-token", + "spl-token 4.0.0", "spl-token-2022 1.0.0", "thiserror", ] @@ -17452,6 +17351,20 @@ dependencies = [ "spl-type-length-value", ] +[[package]] +name = "spl-token" +version = "3.5.0" +source = "git+https://github.com/ComposableFi/solana-program-library.git?branch=mantis#5762f98836864430da3eb0de5dcc363e0e06d74d" +dependencies = [ + "arrayref", + "bytemuck", + "num-derive 0.3.3", + "num-traits", + "num_enum 0.5.11", + "solana-program", + "thiserror", +] + [[package]] name = "spl-token" version = "4.0.0" @@ -17482,7 +17395,7 @@ dependencies = [ "solana-zk-token-sdk", "spl-memo", "spl-pod", - "spl-token", + "spl-token 4.0.0", "spl-token-metadata-interface", "spl-transfer-hook-interface 0.3.0", "spl-type-length-value", @@ -17505,7 +17418,7 @@ dependencies = [ "solana-zk-token-sdk", "spl-memo", "spl-pod", - "spl-token", + "spl-token 4.0.0", "spl-token-group-interface", "spl-token-metadata-interface", "spl-transfer-hook-interface 0.4.1", @@ -17644,11 +17557,6 @@ dependencies = [ name = "stdx" version = "0.0.0" -[[package]] -name = "stdx" -version = "0.0.0" -source = "git+https://github.com/ComposableFi/emulated-light-client/#ba1046ead4232ee07a1db9b120f3035c983e0052" - [[package]] name = "strsim" version = "0.8.0" @@ -18945,22 +18853,6 @@ dependencies = [ "strum 0.25.0", ] -[[package]] -name = "trie-ids" -version = "0.0.0" -source = "git+https://github.com/ComposableFi/emulated-light-client/#ba1046ead4232ee07a1db9b120f3035c983e0052" -dependencies = [ - "ascii 1.1.0", - "base64 0.21.7", - "bytemuck", - "derive_more", - "ibc-core-channel-types", - "ibc-core-client-types", - "ibc-core-connection-types", - "ibc-core-host-types", - "strum 0.25.0", -] - [[package]] name = "trie-root" version = "0.18.0" @@ -19387,9 +19279,9 @@ dependencies = [ "ibc-core-commitment-types", "ibc-primitives 0.50.0", "ibc-proto 0.41.0", - "lib 0.0.0", + "lib", "prost 0.12.3", - "proto-utils 0.0.0", + "proto-utils", ] [[package]] diff --git a/hyperspace/rollup/Cargo.toml b/hyperspace/rollup/Cargo.toml index 09158894a..80da2c50b 100644 --- a/hyperspace/rollup/Cargo.toml +++ b/hyperspace/rollup/Cargo.toml @@ -16,11 +16,13 @@ log = "0.4.17" hex = "0.4.3" tokio = { version = "1.32.0", features = ["macros", "sync"] } rs_merkle = "1.2.0" -codec = { package = "parity-scale-codec", version = "3.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", features = [ + "derive", +] } serde_json = "1.0.74" -derive_more = { version = "0.99", features = ["from"] } -serde = {version="1.0.137", features = ["derive"]} -tokio-stream = { version = "0.1.14", features = ["sync"]} +derive_more = { version = "0.99", features = ["from"] } +serde = { version = "1.0.137", features = ["derive"] } +tokio-stream = { version = "0.1.14", features = ["sync"] } thiserror = "1.0.31" itertools = "0.10.3" prost = { version = "0.11" } @@ -35,7 +37,7 @@ ripemd = "0.1.3" digest = "0.10.6" quick_cache = "0.3.0" rand = "0.8.5" -anchor-client = {version = "0.29.0", features = ["async"] } +anchor-client = { version = "0.29.0", features = ["async"] } anchor-lang = "0.29.0" anchor-spl = "0.29.0" solana-transaction-status = "=1.17.31" @@ -52,10 +54,17 @@ rusqlite = { version = "0.29.0", features = ["bundled"] } bs58 = { version = "0.5.0", features = ["alloc"] } bincode = { version = "1.3.3" } +lazy_static = "1.4.0" # New IBC -ibc-new-primitives = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false, features = ["borsh", "serde"] , package="ibc-primitives" } -ibc-core-host-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false, features = ["borsh", "serde"]} +ibc-new-primitives = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false, features = [ + "borsh", + "serde", +], package = "ibc-primitives" } +ibc-core-host-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false, features = [ + "borsh", + "serde", +] } ibc-core-handler-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } ibc-core-client-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } ibc-core-connection-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } @@ -63,41 +72,53 @@ ibc-core-channel-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be ibc-app-transfer-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } ibc-core-commitment-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } ibc-client-tendermint-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } -ibc-client-wasm-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false} +ibc-client-wasm-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } # ibc-testkit = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } -ibc-proto-new = { version = "0.41.0", default-features = false, package="ibc-proto" } +ibc-proto-new = { version = "0.41.0", default-features = false, package = "ibc-proto" } ics23 = { version = "0.11.1" } - # Old IBC ibc = { path = "../../ibc/modules", features = [] } -ibc-proto = { path = "../../ibc/proto", package="ibc-proto" } +ibc-proto = { path = "../../ibc/proto", package = "ibc-proto" } ibc-primitives = { path = "../../contracts/pallet-ibc/primitives" } -ics07-tendermint = { path = "../../light-clients/ics07-tendermint", features = ["dummy"] } +ics07-tendermint = { path = "../../light-clients/ics07-tendermint", features = [ + "dummy", +] } ics08-wasm = { path = "../../light-clients/ics08-wasm" } ibc-rpc = { path = "../../contracts/pallet-ibc/rpc" } -pallet-ibc = { path = "../../contracts/pallet-ibc", features = ["testing"]} +pallet-ibc = { path = "../../contracts/pallet-ibc", features = ["testing"] } # Trie lib = { path = "../../../emulated-light-client/common/lib" } memory = { path = "../../../emulated-light-client/common/memory" } -sealable-trie = { path = "../../../emulated-light-client/common/sealable-trie" ,features = ["borsh"] } +sealable-trie = { path = "../../../emulated-light-client/common/sealable-trie", features = [ + "borsh", +] } stdx = { path = "../../../emulated-light-client/common/stdx" } solana-trie = { path = "../../../emulated-light-client/solana/trie" } -trie-ids = { path = "../../../emulated-light-client/common/trie-ids" ,features = ["borsh"] } +trie-ids = { path = "../../../emulated-light-client/common/trie-ids", features = [ + "borsh", +] } cf-guest = { path = "../../light-clients/cf-guest", default-features = false } -cf-guest-og = { path = "../../../emulated-light-client/common/cf-guest" ,package = "cf-guest" } -guestchain = { path = "../../../emulated-light-client/common/guestchain" ,default-features = false } +cf-guest-og = { path = "../../../emulated-light-client/common/cf-guest", package = "cf-guest" } +guestchain = { path = "../../../emulated-light-client/common/guestchain", default-features = false } -cf-solana-og = { path = "../../../emulated-light-client/common/cf-solana", package = "cf-solana", features = ["serde"] } +cf-solana-og = { path = "../../../emulated-light-client/common/cf-solana", package = "cf-solana", features = [ + "serde", +] } cf-solana = { path = "../../light-clients/cf-solana", default-features = false } #Contract -solana-ibc = { path = "../../../emulated-light-client/solana/solana-ibc/programs/solana-ibc", features = ["no-entrypoint"]} -solana-write-account = { path = "../../../emulated-light-client/solana/write-account" ,features = ["library"] } +solana-ibc = { path = "../../../emulated-light-client/solana/solana-ibc/programs/solana-ibc", features = [ + "no-entrypoint", +] } +solana-write-account = { path = "../../../emulated-light-client/solana/write-account", features = [ + "library", +] } solana-signature-verifier = { path = "../../../emulated-light-client/solana/signature-verifier" } +spl-token = { git = "https://github.com/ComposableFi/solana-program-library.git", branch = "mantis" } tracing = "0.1.36" @@ -115,12 +136,10 @@ tendermint-light-client = { git = "https://github.com/informalsystems/tendermint "rpc-client", "secp256k1", "unstable", -# "testing" + # "testing" ] } tendermint-light-client-verifier = { git = "https://github.com/informalsystems/tendermint-rs", rev = "4d81b67c28510db7d2d99ed62ebfa9fdf0e02141", default-features = false } tendermint-light-client-verifier_new = { git = "https://github.com/mina86/tendermint-rs", rev = "45fbd500d731effb95a98257630feb46f6c41d06", default-features = false, package = "tendermint-light-client-verifier" } [features] -testing = [ - "primitives/testing" -] +testing = ["primitives/testing"] diff --git a/hyperspace/rollup/src/client.rs b/hyperspace/rollup/src/client.rs index 547d9f0d2..94303f72c 100644 --- a/hyperspace/rollup/src/client.rs +++ b/hyperspace/rollup/src/client.rs @@ -40,11 +40,8 @@ use sigverify::ed25519_program::{new_instruction, Entry}; use solana_transaction_status::UiTransactionEncoding; use std::{ collections::HashSet, - ops::Deref, - rc::Rc, result::Result, sync::{Arc, Mutex}, - thread::sleep, }; use tendermint_light_client_verifier_new::types::{TrustedBlockState, UntrustedBlockState}; use tendermint_rpc::Url; @@ -93,11 +90,13 @@ pub enum DeliverIxType { pub struct RollupClient { /// Chain name pub name: String, - /// rpc url for solana + /// rpc url for rollup pub rpc_url: String, + /// rpc url for solana + pub rpc_l1_url: String, /// rpc url for trie proofs pub trie_rpc_url: String, - /// websocket url for solana + /// websocket url for rollup pub ws_url: String, /// Solana chain Id pub chain_id: String, @@ -114,6 +113,8 @@ pub struct RollupClient { pub max_tx_size: usize, pub commitment_level: CommitmentLevel, pub solana_ibc_program_id: Pubkey, + pub solana_token_program_id: Pubkey, + pub solana_token_mint_pubkey: Pubkey, pub write_program_id: Pubkey, pub signature_verifier_program_id: Pubkey, pub common_state: CommonClientState, @@ -134,11 +135,13 @@ pub struct RollupClient { pub struct RollupClientConfig { /// Chain name pub name: String, - /// rpc url for solana + /// rpc url for rollup pub rpc_url: Url, + /// rpc url for solana + pub rpc_l1_url: Url, /// rpc url for trie proofs pub trie_rpc_url: Url, - /// websocket url for solana + /// websocket url for rollup pub ws_url: Url, /// Solana chain Id pub chain_id: String, @@ -168,6 +171,8 @@ pub struct RollupClientConfig { pub commitment_level: String, pub private_key: Vec, pub solana_ibc_program_id: String, + pub solana_token_program_id: String, + pub solana_token_mint_pubkey: String, pub write_program_id: String, pub signature_verifier_program_id: String, pub trie_db_path: String, @@ -325,6 +330,11 @@ impl RollupClient { program.async_rpc() } + pub fn rpc_l1_client(&self) -> AsyncRpcClient { + let program = self.program_l1(); + program.async_rpc() + } + pub fn client(&self) -> AnchorClient> { let cluster = Cluster::from_str(&self.rpc_url).unwrap(); let signer = self.keybase.keypair(); @@ -334,6 +344,15 @@ impl RollupClient { client } + pub fn client_l1(&self) -> AnchorClient> { + let cluster = Cluster::from_str(&self.rpc_l1_url).unwrap(); + let signer = self.keybase.keypair(); + let authority = Arc::new(signer); + let client = + AnchorClient::new_with_options(cluster, authority, CommitmentConfig::processed()); + client + } + pub fn get_db(&self) -> rusqlite::Connection { let db_url = self.trie_db_path.as_str(); rusqlite::Connection::open(db_url).unwrap() @@ -344,6 +363,11 @@ impl RollupClient { anchor_client.program(self.solana_ibc_program_id).unwrap() } + pub fn program_l1(&self) -> Program> { + let anchor_client = self.client_l1(); + anchor_client.program(self.solana_ibc_program_id).unwrap() + } + #[allow(dead_code)] pub async fn new(config: RollupClientConfig) -> Result { let db_url = config.trie_db_path.as_str(); @@ -362,6 +386,7 @@ impl RollupClient { Ok(Self { name: config.name, rpc_url: config.rpc_url.to_string(), + rpc_l1_url: config.rpc_l1_url.to_string(), trie_rpc_url: config.trie_rpc_url.to_string(), ws_url: config.ws_url.to_string(), chain_id: config.chain_id, @@ -373,6 +398,8 @@ impl RollupClient { max_tx_size: config.max_tx_size, commitment_level: CommitmentLevel::from_str(&config.commitment_level).unwrap(), solana_ibc_program_id: Pubkey::from_str(&config.solana_ibc_program_id).unwrap(), + solana_token_program_id: Pubkey::from_str(&config.solana_token_mint_pubkey).unwrap(), + solana_token_mint_pubkey: Pubkey::from_str(&config.solana_token_mint_pubkey).unwrap(), write_program_id: Pubkey::from_str(&config.write_program_id).unwrap(), signature_verifier_program_id: Pubkey::from_str(&config.signature_verifier_program_id) .unwrap(), diff --git a/hyperspace/rollup/src/lib.rs b/hyperspace/rollup/src/lib.rs index 464739090..36484d8a5 100644 --- a/hyperspace/rollup/src/lib.rs +++ b/hyperspace/rollup/src/lib.rs @@ -41,6 +41,7 @@ use tendermint::{Hash, Time}; use tendermint_proto::Protobuf; use tokio::{ sync::mpsc::unbounded_channel, + sync::Mutex, task::{spawn_blocking, JoinSet}, }; @@ -123,6 +124,10 @@ pub use crate::{ events::convert_new_event_to_old, }; +lazy_static::lazy_static! { + static ref LAST_SUPPLY_UPDATE_TIME: Mutex> = Mutex::new(Box::new(Instant::now())); +} + pub mod client; mod client_state; mod consensus_state; @@ -2044,6 +2049,44 @@ impl Chain for RollupClient { // } } + { + let now = Instant::now(); + + let mut last = LAST_SUPPLY_UPDATE_TIME.lock().await; + + let last = last.as_mut(); + + if (now - *last).as_secs() > 24 * 60 * 60 { + *last = now; + + let compute_budget_ix = ComputeBudgetInstruction::set_compute_unit_limit(300_000); + + let mantis_token_supply_on_l1 = self + .rpc_l1_client() + .get_token_supply(&self.solana_token_mint_pubkey) + .await + .unwrap() + .amount + .parse::() + .unwrap(); + + let ix = spl_token::instruction::update_l1_token_supply( + &self.solana_token_program_id, + &self.solana_token_mint_pubkey, + &[&authority.pubkey()], + mantis_token_supply_on_l1, + ) + .unwrap(); + + let update_mantis_supply_ix = vec![Transaction::new_with_payer( + &[compute_budget_ix.clone(), ix], + Some(&authority.pubkey()), + )]; + + all_transactions.push(update_mantis_supply_ix); + } + } + let total_transactions_length = all_transactions.iter().fold(0, |acc, tx| acc + tx.len()); let mut failure = false; diff --git a/hyperspace/solana/Cargo.toml b/hyperspace/solana/Cargo.toml index 817c323c3..a6c3f7a21 100644 --- a/hyperspace/solana/Cargo.toml +++ b/hyperspace/solana/Cargo.toml @@ -16,11 +16,13 @@ log = "0.4.17" hex = "0.4.3" tokio = { version = "1.32.0", features = ["macros", "sync"] } rs_merkle = "1.2.0" -codec = { package = "parity-scale-codec", version = "3.0.0", features = ["derive"] } +codec = { package = "parity-scale-codec", version = "3.0.0", features = [ + "derive", +] } serde_json = "1.0.74" -derive_more = { version = "0.99", features = ["from"] } -serde = {version="1.0.137", features = ["derive"]} -tokio-stream = { version = "0.1.14", features = ["sync"]} +derive_more = { version = "0.99", features = ["from"] } +serde = { version = "1.0.137", features = ["derive"] } +tokio-stream = { version = "0.1.14", features = ["sync"] } thiserror = "1.0.31" itertools = "0.10.3" prost = { version = "0.11" } @@ -35,7 +37,7 @@ ripemd = "0.1.3" digest = "0.10.6" quick_cache = "0.3.0" rand = "0.8.5" -anchor-client = {version = "0.29.0", features = ["async"] } +anchor-client = { version = "0.29.0", features = ["async"] } anchor-lang = "0.29.0" anchor-spl = "0.29.0" solana-transaction-status = "=1.17.31" @@ -54,8 +56,14 @@ bs58 = { version = "0.5.0", features = ["alloc"] } bincode = { version = "1.3.3" } # New IBC -ibc-new-primitives = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false, features = ["borsh", "serde"] , package="ibc-primitives" } -ibc-core-host-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false, features = ["borsh", "serde"]} +ibc-new-primitives = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false, features = [ + "borsh", + "serde", +], package = "ibc-primitives" } +ibc-core-host-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false, features = [ + "borsh", + "serde", +] } ibc-core-handler-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } ibc-core-client-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } ibc-core-connection-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } @@ -63,40 +71,51 @@ ibc-core-channel-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be ibc-app-transfer-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } ibc-core-commitment-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } ibc-client-tendermint-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } -ibc-client-wasm-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false} +ibc-client-wasm-types = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } # ibc-testkit = { git = "https://github.com/mina86/ibc-rs", rev = "e1be8c9292c82c1e7c158067f0014fb292ee652d", default-features = false } -ibc-proto-new = { version = "0.41.0", default-features = false, package="ibc-proto" } +ibc-proto-new = { version = "0.41.0", default-features = false, package = "ibc-proto" } ics23 = { version = "0.11.1" } - # Old IBC ibc = { path = "../../ibc/modules", features = [] } -ibc-proto = { path = "../../ibc/proto", package="ibc-proto" } +ibc-proto = { path = "../../ibc/proto", package = "ibc-proto" } ibc-primitives = { path = "../../contracts/pallet-ibc/primitives" } -ics07-tendermint = { path = "../../light-clients/ics07-tendermint", features = ["dummy"] } +ics07-tendermint = { path = "../../light-clients/ics07-tendermint", features = [ + "dummy", +] } ics08-wasm = { path = "../../light-clients/ics08-wasm" } ibc-rpc = { path = "../../contracts/pallet-ibc/rpc" } -pallet-ibc = { path = "../../contracts/pallet-ibc", features = ["testing"]} +pallet-ibc = { path = "../../contracts/pallet-ibc", features = ["testing"] } # Trie lib = { path = "../../../emulated-light-client/common/lib" } memory = { path = "../../../emulated-light-client/common/memory" } -sealable-trie = { path = "../../../emulated-light-client/common/sealable-trie" ,features = ["borsh"] } +sealable-trie = { path = "../../../emulated-light-client/common/sealable-trie", features = [ + "borsh", +] } stdx = { path = "../../../emulated-light-client/common/stdx" } solana-trie = { path = "../../../emulated-light-client/solana/trie" } -trie-ids = { path = "../../../emulated-light-client/common/trie-ids" ,features = ["borsh"] } +trie-ids = { path = "../../../emulated-light-client/common/trie-ids", features = [ + "borsh", +] } cf-guest = { path = "../../light-clients/cf-guest", default-features = false } -cf-guest-og = { path = "../../../emulated-light-client/common/cf-guest" ,package = "cf-guest" } -guestchain = { path = "../../../emulated-light-client/common/guestchain" ,default-features = false } +cf-guest-og = { path = "../../../emulated-light-client/common/cf-guest", package = "cf-guest" } +guestchain = { path = "../../../emulated-light-client/common/guestchain", default-features = false } -cf-solana = { path = "../../light-clients/cf-solana", default-features = false} -cf-solana-og = { path = "../../../emulated-light-client/common/cf-solana", package = "cf-solana", features = ["serde"] } +cf-solana = { path = "../../light-clients/cf-solana", default-features = false } +cf-solana-og = { path = "../../../emulated-light-client/common/cf-solana", package = "cf-solana", features = [ + "serde", +] } #Contract -solana-ibc = { path = "../../../emulated-light-client/solana/solana-ibc/programs/solana-ibc" ,features = ["no-entrypoint"]} -solana-write-account = { path = "../../../emulated-light-client/solana/write-account" ,features = ["library"] } +solana-ibc = { path = "../../../emulated-light-client/solana/solana-ibc/programs/solana-ibc", features = [ + "no-entrypoint", +] } +solana-write-account = { path = "../../../emulated-light-client/solana/write-account", features = [ + "library", +] } solana-signature-verifier = { path = "../../../emulated-light-client/solana/signature-verifier" } tracing = "0.1.36" @@ -115,12 +134,10 @@ tendermint-light-client = { git = "https://github.com/informalsystems/tendermint "rpc-client", "secp256k1", "unstable", -# "testing" + # "testing" ] } tendermint-light-client-verifier = { git = "https://github.com/informalsystems/tendermint-rs", rev = "4d81b67c28510db7d2d99ed62ebfa9fdf0e02141", default-features = false } tendermint-light-client-verifier_new = { git = "https://github.com/mina86/tendermint-rs", rev = "45fbd500d731effb95a98257630feb46f6c41d06", default-features = false, package = "tendermint-light-client-verifier" } [features] -testing = [ - "primitives/testing" -] +testing = ["primitives/testing"] diff --git a/hyperspace/solana/src/client.rs b/hyperspace/solana/src/client.rs index 25b97abfc..6b396e214 100644 --- a/hyperspace/solana/src/client.rs +++ b/hyperspace/solana/src/client.rs @@ -365,7 +365,7 @@ impl SolanaClient { channel_whitelist: Arc::new(Mutex::new(config.channel_whitelist.into_iter().collect())), trie_db_path: config.trie_db_path, transaction_sender, - is_transaction_processing: Arc::new(Mutex::new(false)) + is_transaction_processing: Arc::new(Mutex::new(false)), }) } diff --git a/hyperspace/solana/src/lib.rs b/hyperspace/solana/src/lib.rs index 52fde4179..0eaf047b0 100644 --- a/hyperspace/solana/src/lib.rs +++ b/hyperspace/solana/src/lib.rs @@ -5,6 +5,7 @@ use anchor_client::{ solana_client::{rpc_client::RpcClient, rpc_config::RpcSendTransactionConfig}, solana_sdk::{ compute_budget::ComputeBudgetInstruction, + feature_set::spl_token_v3_4_0, instruction::Instruction, system_instruction::transfer, transaction::{Transaction, VersionedTransaction}, @@ -570,13 +571,14 @@ deserialize client state" ) -> Result { use ibc_proto_new::Protobuf; let chain_account = self.get_chain_storage().await; - let proof_height = if u64::from(chain_account.head().unwrap().block_height) == at.revision_height { - log::info!("Using existing proof height {}", at.revision_height); - at.revision_height - } else { - log::info!("Using incremented proof height {}", at.revision_height + 1); - at.revision_height - }; + let proof_height = + if u64::from(chain_account.head().unwrap().block_height) == at.revision_height { + log::info!("Using existing proof height {}", at.revision_height); + at.revision_height + } else { + log::info!("Using incremented proof height {}", at.revision_height + 1); + at.revision_height + }; let (trie, at_height) = self.get_trie(proof_height, true).await; let storage = self.get_ibc_storage().await; let connection_idx = ConnectionIdx::try_from(