diff --git a/.config/dictionaries/technical.dic b/.config/dictionaries/technical.dic index 326469fbddf..46801cb0585 100644 --- a/.config/dictionaries/technical.dic +++ b/.config/dictionaries/technical.dic @@ -234,12 +234,14 @@ protoc PROTOC PTRACE reduxjs +registryaddr rekt resourcemonitor revhash rewardaccumulationhook rewardtrackerstore ripemd +rlib rnix rocksdb ROCKSDB @@ -276,6 +278,7 @@ statemine stdenv structopt styleguide +submessage substituters subwasm subxt diff --git a/.nix/arion-pure.nix b/.nix/arion-pure.nix deleted file mode 100644 index e9adb42ba84..00000000000 --- a/.nix/arion-pure.nix +++ /dev/null @@ -1,126 +0,0 @@ -{ pkgs, packages, ... }: -pkgs.arion.build { - modules = [ - ({ pkgs, ... }: - let - dali-container-name = "dali-devnet"; - subsquidGraphqlContainerName = "subsquid-graphql"; - gatewayContainerName = "subsquid-gateway"; - - # NOTE: Do not change this. It is hardcoded in the gateway source file. - # cfr: services/subsquid-substrate-gateway - gatewayPort = 8000; - - squid-archive-db = rec { - name = "squid-archive-db"; - host = name; - user = "squid-archive-user"; - password = "super-secret-squid-archive-pass"; - port = 5432; - }; - - squid-db = rec { - name = "squid-db"; - host = name; - user = "squid-user"; - password = "super-secret-squid-pass"; - port = 5433; - }; - - relaychainPort = 9944; - parachainPort = 9988; - squidGraphqlPort = 4350; - - parachainEndpoint = - "ws://${dali-container-name}:${toString parachainPort}"; - - network-name = "composable_devnet"; - mkComposableContainer = container: - container // { - service = container.service // { networks = [ network-name ]; }; - }; - in { - config = { - project.name = "composable"; - networks."${network-name}" = { }; - services = { - "${squid-archive-db.name}" = mkComposableContainer - (import ./services/postgres.nix { - inherit pkgs; - database = squid-archive-db; - version = "14"; - init-scripts = pkgs.writeTextFile { - name = "init"; - text = ""; - executable = false; - destination = "/init.sql"; - }; - }); - - "${squid-db.name}" = mkComposableContainer - (import ./services/postgres.nix { - inherit pkgs; - database = squid-db; - version = "14"; - init-scripts = pkgs.writeTextFile { - name = "init"; - text = ""; - executable = false; - destination = "/init.sql"; - }; - }); - - "${dali-container-name}" = mkComposableContainer - (import ./services/devnet-dali.nix { - inherit pkgs packages parachainPort relaychainPort; - }); - - ingest = mkComposableContainer - (import ./services/subsquid-substrate-ingest.nix { - database = squid-archive-db; - polkadotEndpoint = parachainEndpoint; - prometheusPort = 9090; - }); - - "${gatewayContainerName}" = mkComposableContainer - (import ./services/subsquid-substrate-gateway.nix { - database = squid-archive-db; - port = gatewayPort; - }); - - # NOTE, this one currently seems broken. but it is an optional service anyways. - # explorer = mkComposableContainer (import ./services/subsquid-substrate-explorer.nix { - # database = squid-archive-db; - # graphqlPort = 4010; - # }); - - "${subsquidGraphqlContainerName}" = mkComposableContainer - (import ./services/subsquid-graphql.nix { - inherit pkgs; - database = squid-db; - graphqlPort = squidGraphqlPort; - }); - - subsquid-processor = mkComposableContainer - (import ./services/subsquid-processor-dockerfile.nix { - inherit subsquidGraphqlContainerName gatewayContainerName - gatewayPort parachainEndpoint; - database = squid-db; - graphqlPort = squidGraphqlPort; - }); - - # NOTE: Ports are currently not configurable for frontend services - frontend-picasso = mkComposableContainer - (import ./services/frontend-picasso.nix { - inherit pkgs packages; - }); - - frontend-pablo = mkComposableContainer - (import ./services/frontend-pablo.nix { inherit pkgs packages; }); - }; - }; - }) - ]; - inherit pkgs; -} - diff --git a/.nix/arion-xcvm.nix b/.nix/arion-xcvm.nix deleted file mode 100644 index f6a5103ef5b..00000000000 --- a/.nix/arion-xcvm.nix +++ /dev/null @@ -1,238 +0,0 @@ -{ pkgs, packages, ... }: -pkgs.arion.build { - modules = [ - ({ pkgs, ... }: - let - db-container-name = "db"; - redis-container-name = "subsquid-redis"; - subsquid-status-container-name = "subsquid-status-service"; - subsquid-indexer-gateway-container-name = "subsquid-indexer-gateway"; - dali-container-name = "dali-devnet"; - junod-container-name = "junod"; - juno-indexer-container-name = "juno-indexer"; - subql-query-container-name = "subql-query"; - - hasuraGraphqlPort = 8080; - relaychainPort = 9944; - parachainPort = 9988; - subsquidParachainIndexerPort = 3000; - subsquidIndexerGateway = 8081; - subsquidIndexerStatusService = 60291; - junoRpcPort = 26657; - - default-db = { - name = "xcvm"; - host = "127.0.0.1"; - user = "xcvm"; - password = "xcvm"; - port = 1337; - }; - - juno-indexer-db-name = "juno"; - juno-indexer-db = default-db // { - name = juno-indexer-db-name; - host = db-container-name; - }; - - composable-indexer-db-name = "indexer"; - composable-indexer-db = default-db // { - name = composable-indexer-db-name; - host = db-container-name; - }; - - hasura-db-name = "hasura"; - hasura-db = default-db // { - name = hasura-db-name; - host = db-container-name; - }; - - network-name = "composable_xcvm_devnet"; - mk-composable-container = container: - container // { - service = container.service // { networks = [ network-name ]; }; - }; - in { - config = { - project.name = "composable_xcvm_devnet"; - networks."${network-name}" = { }; - services = { - # ============ COMMON =============== - "${db-container-name}" = mk-composable-container - (import ./services/postgres.nix { - inherit pkgs; - database = default-db; - version = "14"; - init-scripts = pkgs.writeTextFile { - name = "init"; - text = '' - CREATE DATABASE ${juno-indexer-db-name} WITH OWNER ${default-db.user}; - CREATE DATABASE ${composable-indexer-db-name} WITH OWNER ${default-db.user}; - CREATE DATABASE ${hasura-db-name} WITH OWNER ${default-db.user}; - ''; - executable = false; - destination = "/init.sql"; - }; - }); - - # ============== COSMOS =============== - "${junod-container-name}" = mk-composable-container - (import ./services/junod.nix { rpcPort = junoRpcPort; }); - "${juno-indexer-container-name}" = mk-composable-container - (import ./services/juno-subql-indexer.nix { - inherit pkgs; - database = juno-indexer-db; - juno = junod-container-name; - junoPort = junoRpcPort; - }); - "${subql-query-container-name}" = mk-composable-container - (import ./services/subql-query.nix { - database = juno-indexer-db; - subql-node = juno-indexer-container-name; - subqlPort = 3000; - }); - hasura-aggregated = mk-composable-container - (import ./services/hasura.nix { - inherit pkgs; - database = hasura-db; - graphql-port = hasuraGraphqlPort; - metadata = let - files = pkgs.linkFarm "metadata" [ - { - name = "remote_schemas.yaml"; - path = pkgs.writeText "remote_schemas.yaml" "[]"; - } - { - name = "actions.graphql"; - path = pkgs.writeText "actions.graphql" ""; - } - { - name = "actions.yaml"; - path = pkgs.writeText "actions.yaml" '' - actions: [] - custom_types: - enums: [] - input_objects: [] - objects: [] - scalars: [] - ''; - } - { - name = "allow_list.yaml"; - path = pkgs.writeText "allow_list.yaml" "[]"; - } - { - name = "cron_triggers.yaml"; - path = pkgs.writeText "cron_triggers.yaml" "[]"; - } - { - name = "query_collections.yaml"; - path = pkgs.writeText "query_collections.yaml" "[]"; - } - { - name = "version.yaml"; - path = pkgs.writeText "version.yaml" "version: 3"; - } - { - name = "rest_endpoints.yaml"; - path = pkgs.writeText "rest_endpoints.yaml" "[]"; - } - { - name = "databases"; - path = pkgs.writeTextFile { - name = "databases.yaml"; - text = '' - - name: cosmos - kind: postgres - configuration: - connection_info: - use_prepared_statements: false - database_url: postgres://${default-db.user}:${default-db.password}@${db-container-name}:${ - toString default-db.port - }/${juno-indexer-db-name} - isolation_level: read-committed - tables: - - table: - schema: cosmos - name: blocks - - table: - schema: cosmos - name: events - - table: - schema: cosmos - name: messages - - table: - schema: cosmos - name: transactions - - name: subsquid - kind: postgres - configuration: - connection_info: - use_prepared_statements: false - database_url: postgres://${default-db.user}:${default-db.password}@${db-container-name}:${ - toString default-db.port - }/${composable-indexer-db-name} - isolation_level: read-committed - tables: - - table: - schema: public - name: substrate_block - - table: - schema: public - name: substrate_extrinsic - - table: - schema: public - name: substrate_event - ''; - executable = false; - destination = "/databases.yaml"; - }; - } - ]; - in pkgs.stdenv.mkDerivation { - # We can't use the above symlinked farm as the metadata store because it is mounted as a volume. - # Hence, it would be a folder full of dead link from the POV of the container. - name = "metadata"; - phases = [ "installPhase" ]; - installPhase = '' - mkdir $out - cp -rL ${files}/* $out - ''; - }; - }); - - # ============== POLKADOT ============== - "${dali-container-name}" = mk-composable-container - (import ./services/devnet-dali.nix { - inherit pkgs; - inherit packages; - inherit relaychainPort; - inherit parachainPort; - }); - subsquid-indexer = mk-composable-container - (import ./services/subsquid-indexer.nix { - database = composable-indexer-db; - redis = redis-container-name; - parachain = dali-container-name; - inherit parachainPort; - parachainIndexerPort = subsquidParachainIndexerPort; - }); - "${subsquid-indexer-gateway-container-name}" = - mk-composable-container - (import ./services/subsquid-indexer-gateway.nix { - database = composable-indexer-db; - status = subsquid-status-container-name; - graphql-port = subsquidIndexerGateway; - }); - "${subsquid-status-container-name}" = mk-composable-container - (import ./services/subsquid-indexer-status-service.nix { - redis = redis-container-name; - port = subsquidIndexerStatusService; - }); - "${redis-container-name}" = - mk-composable-container (import ./services/redis.nix); - }; - }; - }) - ]; - inherit pkgs; -} diff --git a/.nix/devnet-specs/default.nix b/.nix/devnet-specs/default.nix new file mode 100644 index 00000000000..0b804e4369d --- /dev/null +++ b/.nix/devnet-specs/default.nix @@ -0,0 +1,124 @@ +{ pkgs, packages, ... }: { + modules = [ + (let + dali-container-name = "dali-devnet"; + subsquidGraphqlContainerName = "subsquid-graphql"; + gatewayContainerName = "subsquid-gateway"; + + # NOTE: Do not change this. It is hardcoded in the gateway source file. + # cfr: services/subsquid-substrate-gateway + gatewayPort = 8000; + + squid-archive-db = rec { + name = "squid-archive-db"; + host = name; + user = "squid-archive-user"; + password = "super-secret-squid-archive-pass"; + port = 5432; + }; + + squid-db = rec { + name = "squid-db"; + host = name; + user = "squid-user"; + password = "super-secret-squid-pass"; + port = 5433; + }; + + relaychainPort = 9944; + parachainPort = 9988; + squidGraphqlPort = 4350; + + parachainEndpoint = + "ws://${dali-container-name}:${toString parachainPort}"; + + network-name = "composable_devnet"; + mkComposableContainer = container: + container // { + service = container.service // { networks = [ network-name ]; }; + }; + in { + config = { + project.name = "composable"; + networks."${network-name}" = { }; + services = { + "${squid-archive-db.name}" = mkComposableContainer + (import ../services/postgres.nix { + inherit pkgs; + database = squid-archive-db; + version = "14"; + init-scripts = pkgs.writeTextFile { + name = "init"; + text = ""; + executable = false; + destination = "/init.sql"; + }; + }); + + "${squid-db.name}" = mkComposableContainer + (import ../services/postgres.nix { + inherit pkgs; + database = squid-db; + version = "14"; + init-scripts = pkgs.writeTextFile { + name = "init"; + text = ""; + executable = false; + destination = "/init.sql"; + }; + }); + + "${dali-container-name}" = mkComposableContainer + (import ../services/devnet-dali.nix { + inherit pkgs packages parachainPort relaychainPort; + }); + + ingest = mkComposableContainer + (import ../services/subsquid-substrate-ingest.nix { + database = squid-archive-db; + polkadotEndpoint = parachainEndpoint; + prometheusPort = 9090; + }); + + "${gatewayContainerName}" = mkComposableContainer + (import ../services/subsquid-substrate-gateway.nix { + database = squid-archive-db; + port = gatewayPort; + }); + + # NOTE, this one currently seems broken. but it is an optional service anyways. + # explorer = mkComposableContainer (import ../services/subsquid-substrate-explorer.nix { + # database = squid-archive-db; + # graphqlPort = 4010; + # }); + + "${subsquidGraphqlContainerName}" = mkComposableContainer + (import ../services/subsquid-graphql.nix { + inherit pkgs; + database = squid-db; + graphqlPort = squidGraphqlPort; + }); + + subsquid-processor = mkComposableContainer + (import ../services/subsquid-processor-dockerfile.nix { + inherit subsquidGraphqlContainerName gatewayContainerName + gatewayPort parachainEndpoint; + database = squid-db; + graphqlPort = squidGraphqlPort; + }); + + # NOTE: Ports are currently not configurable for frontend services + frontend-picasso = mkComposableContainer + (import ../services/frontend-picasso.nix { + inherit pkgs packages; + }); + + frontend-pablo = mkComposableContainer + (import ../services/frontend-pablo.nix { inherit pkgs packages; }); + }; + }; + }) + ]; + inherit pkgs; +} + diff --git a/.nix/devnet-specs/xcvm.nix b/.nix/devnet-specs/xcvm.nix new file mode 100644 index 00000000000..9180b2e0139 --- /dev/null +++ b/.nix/devnet-specs/xcvm.nix @@ -0,0 +1,234 @@ +{ pkgs, packages, ... }: { + modules = [ + (let + db-container-name = "db"; + redis-container-name = "subsquid-redis"; + subsquid-status-container-name = "subsquid-status-service"; + subsquid-indexer-gateway-container-name = "subsquid-indexer-gateway"; + dali-container-name = "dali-devnet"; + junod-container-name = "junod"; + juno-indexer-container-name = "juno-indexer"; + subql-query-container-name = "subql-query"; + + hasuraGraphqlPort = 8080; + relaychainPort = 9944; + parachainPort = 9988; + subsquidParachainIndexerPort = 3000; + subsquidIndexerGateway = 8081; + subsquidIndexerStatusService = 60291; + junoRpcPort = 26657; + + default-db = { + name = "xcvm"; + host = "127.0.0.1"; + user = "xcvm"; + password = "xcvm"; + port = 1337; + }; + + juno-indexer-db-name = "juno"; + juno-indexer-db = default-db // { + name = juno-indexer-db-name; + host = db-container-name; + }; + + composable-indexer-db-name = "indexer"; + composable-indexer-db = default-db // { + name = composable-indexer-db-name; + host = db-container-name; + }; + + hasura-db-name = "hasura"; + hasura-db = default-db // { + name = hasura-db-name; + host = db-container-name; + }; + + network-name = "composable_xcvm_devnet"; + mk-composable-container = container: + container // { + service = container.service // { networks = [ network-name ]; }; + }; + in { + config = { + project.name = "composable_xcvm_devnet"; + networks."${network-name}" = { }; + services = { + # ============ COMMON =============== + "${db-container-name}" = mk-composable-container + (import ../services/postgres.nix { + inherit pkgs; + database = default-db; + version = "14"; + init-scripts = pkgs.writeTextFile { + name = "init"; + text = '' + CREATE DATABASE ${juno-indexer-db-name} WITH OWNER ${default-db.user}; + CREATE DATABASE ${composable-indexer-db-name} WITH OWNER ${default-db.user}; + CREATE DATABASE ${hasura-db-name} WITH OWNER ${default-db.user}; + ''; + executable = false; + destination = "/init.sql"; + }; + }); + + # ============== COSMOS =============== + "${junod-container-name}" = mk-composable-container + (import ../services/junod.nix { rpcPort = junoRpcPort; }); + "${juno-indexer-container-name}" = mk-composable-container + (import ../services/juno-subql.nix { + inherit pkgs; + database = juno-indexer-db; + juno = junod-container-name; + junoPort = junoRpcPort; + }); + "${subql-query-container-name}" = mk-composable-container + (import ../services/subql-query.nix { + database = juno-indexer-db; + subql-node = juno-indexer-container-name; + subqlPort = 3000; + }); + hasura-aggregated = mk-composable-container + (import ../services/hasura.nix { + inherit pkgs; + database = hasura-db; + graphql-port = hasuraGraphqlPort; + metadata = let + files = pkgs.linkFarm "metadata" [ + { + name = "remote_schemas.yaml"; + path = pkgs.writeText "remote_schemas.yaml" "[]"; + } + { + name = "actions.graphql"; + path = pkgs.writeText "actions.graphql" ""; + } + { + name = "actions.yaml"; + path = pkgs.writeText "actions.yaml" '' + actions: [] + custom_types: + enums: [] + input_objects: [] + objects: [] + scalars: [] + ''; + } + { + name = "allow_list.yaml"; + path = pkgs.writeText "allow_list.yaml" "[]"; + } + { + name = "cron_triggers.yaml"; + path = pkgs.writeText "cron_triggers.yaml" "[]"; + } + { + name = "query_collections.yaml"; + path = pkgs.writeText "query_collections.yaml" "[]"; + } + { + name = "version.yaml"; + path = pkgs.writeText "version.yaml" "version: 3"; + } + { + name = "rest_endpoints.yaml"; + path = pkgs.writeText "rest_endpoints.yaml" "[]"; + } + { + name = "databases"; + path = pkgs.writeTextFile { + name = "databases.yaml"; + text = '' + - name: cosmos + kind: postgres + configuration: + connection_info: + use_prepared_statements: false + database_url: postgres://${default-db.user}:${default-db.password}@${db-container-name}:${ + toString default-db.port + }/${juno-indexer-db-name} + isolation_level: read-committed + tables: + - table: + schema: cosmos + name: blocks + - table: + schema: cosmos + name: events + - table: + schema: cosmos + name: messages + - table: + schema: cosmos + name: transactions + - name: subsquid + kind: postgres + configuration: + connection_info: + use_prepared_statements: false + database_url: postgres://${default-db.user}:${default-db.password}@${db-container-name}:${ + toString default-db.port + }/${composable-indexer-db-name} + isolation_level: read-committed + tables: + - table: + schema: public + name: substrate_block + - table: + schema: public + name: substrate_extrinsic + - table: + schema: public + name: substrate_event + ''; + executable = false; + destination = "/databases.yaml"; + }; + } + ]; + in pkgs.stdenv.mkDerivation { + # We can't use the above symlinked farm as the metadata store because it is mounted as a volume. + # Hence, it would be a folder full of dead link from the POV of the container. + name = "metadata"; + phases = [ "installPhase" ]; + installPhase = '' + mkdir $out + cp -rL ${files}/* $out + ''; + }; + }); + + # ============== POLKADOT ============== + "${dali-container-name}" = mk-composable-container + (import ../services/devnet-dali.nix { + inherit pkgs; + inherit packages; + inherit relaychainPort; + inherit parachainPort; + }); + subsquid-indexer = mk-composable-container + (import ../services/subsquid-indexer.nix { + database = composable-indexer-db; + redis = redis-container-name; + parachain = dali-container-name; + inherit parachainPort; + parachainIndexerPort = subsquidParachainIndexerPort; + }); + "${subsquid-indexer-gateway-container-name}" = mk-composable-container + (import ../services/subsquid-indexer-gateway.nix { + database = composable-indexer-db; + status = subsquid-status-container-name; + graphql-port = subsquidIndexerGateway; + }); + "${subsquid-status-container-name}" = mk-composable-container + (import ../services/subsquid-indexer-status-service.nix { + redis = redis-container-name; + port = subsquidIndexerStatusService; + }); + "${redis-container-name}" = + mk-composable-container (import ../services/redis.nix); + }; + }; + }) + ]; +} diff --git a/.nix/services/junod.nix b/.nix/services/junod.nix index 86b14addb93..005a4714453 100644 --- a/.nix/services/junod.nix +++ b/.nix/services/junod.nix @@ -12,7 +12,7 @@ "sh" "-c" '' - ./setup_junod.sh juno16g2rahf5846rxzp3fwlswy08fz8ccuwk03k57y + ./setup_junod.sh juno16g2rahf5846rxzp3fwlswy08fz8ccuwk03k57y juno16y8au6s5lc8mmf6pjm8m735sn7sdkennh7x0e6 mkdir -p /root/log junod start --rpc.laddr tcp://0.0.0.0:26657 --grpc.address 0.0.0.0:9099 --trace '' diff --git a/code/Cargo.lock b/code/Cargo.lock index bfe43c53855..3ccda5899fc 100644 --- a/code/Cargo.lock +++ b/code/Cargo.lock @@ -162,9 +162,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9a8f622bcf6ff3df478e9deba3e03e4e04b300f8e6a139e192c05fa3490afc7" +checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" [[package]] name = "approx" @@ -248,7 +248,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" dependencies = [ "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -457,7 +457,7 @@ checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -601,7 +601,7 @@ dependencies = [ [[package]] name = "beefy-gadget" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "beefy-primitives", "fnv", @@ -635,7 +635,7 @@ dependencies = [ [[package]] name = "beefy-gadget-rpc" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "beefy-gadget", "beefy-primitives", @@ -676,14 +676,14 @@ dependencies = [ "sp-runtime", "sp-std", "subxt-codegen 0.23.0", - "syn 1.0.99", + "syn 1.0.100", "tokio", ] [[package]] name = "beefy-merkle-tree" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "beefy-primitives", "sp-api", @@ -692,7 +692,7 @@ dependencies = [ [[package]] name = "beefy-primitives" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "scale-info", @@ -723,7 +723,7 @@ dependencies = [ "serde_json", "sha2 0.9.9", "tungstenite 0.15.0", - "url 2.3.0", + "url 2.3.1", ] [[package]] @@ -793,7 +793,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9cf849ee05b2ee5fba5e36f97ff8ec2533916700fc0758d40d92136a42f3388" dependencies = [ - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -854,7 +854,7 @@ dependencies = [ "cc", "cfg-if 1.0.0", "constant_time_eq", - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -937,7 +937,7 @@ dependencies = [ "borsh-schema-derive-internal", "proc-macro-crate 0.1.5", "proc-macro2 1.0.43", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -948,7 +948,7 @@ checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -959,7 +959,7 @@ checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -1097,7 +1097,7 @@ checksum = "4acbb09d9ee8e23699b9634375c72795d095bf268439da88562cf9b501f181fa" dependencies = [ "camino", "cargo-platform", - "semver 1.0.13", + "semver 1.0.14", "serde", "serde_json", ] @@ -1247,9 +1247,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.20" +version = "3.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b71c3ce99b7611011217b366d923f1d0a7e07a92bb2dbf1e84508c673ca3bd" +checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" dependencies = [ "atty", "bitflags", @@ -1259,7 +1259,7 @@ dependencies = [ "once_cell", "strsim 0.10.0", "termcolor", - "textwrap 0.15.0", + "textwrap 0.15.1", ] [[package]] @@ -1272,7 +1272,7 @@ dependencies = [ "proc-macro-error", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -1447,9 +1447,11 @@ version = "2.3.2" dependencies = [ "assets-rpc", "assets-runtime-api", - "clap 3.2.20", + "clap 3.2.22", "common", "composable-runtime", + "cosmwasm-rpc", + "cosmwasm-runtime-api", "crowdloan-rewards-rpc", "crowdloan-rewards-runtime-api", "cumulus-client-cli", @@ -1722,7 +1724,7 @@ dependencies = [ "base64 0.13.0", "hkdf", "hmac 0.10.1", - "percent-encoding 2.1.0", + "percent-encoding 2.2.0", "rand 0.8.5", "sha2 0.9.9", "time 0.2.27", @@ -1791,6 +1793,28 @@ dependencies = [ "memchr", ] +[[package]] +name = "cosmwasm-crypto" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb0afef2325df81aadbf9be1233f522ed8f6e91df870c764bc44cca2b1415bd" +dependencies = [ + "digest 0.9.0", + "ed25519-zebra", + "k256", + "rand_core 0.6.4", + "thiserror", +] + +[[package]] +name = "cosmwasm-derive" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81b4676a316d3e4636f658d2d3aba9b4b30c3177e311bbda721b56d4a26342f" +dependencies = [ + "syn 1.0.100", +] + [[package]] name = "cosmwasm-minimal-std" version = "0.1.0" @@ -1801,6 +1825,70 @@ dependencies = [ "serde_json", ] +[[package]] +name = "cosmwasm-rpc" +version = "0.0.1" +dependencies = [ + "cosmwasm-runtime-api", + "jsonrpsee 0.14.0", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-blockchain", + "sp-runtime", + "sp-std", +] + +[[package]] +name = "cosmwasm-runtime-api" +version = "0.0.1" +dependencies = [ + "parity-scale-codec", + "sp-api", + "sp-std", +] + +[[package]] +name = "cosmwasm-schema" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88917b0e7c987fd99251f8bb7e06da7d705e7572e0732428b72f8bc1f17b1af5" +dependencies = [ + "cosmwasm-schema-derive", + "schemars", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cosmwasm-schema-derive" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03bd1495b8bc0130529dad7e69bef8d800654b50a5d5fc150f1e795c4c24c5b4" +dependencies = [ + "proc-macro2 1.0.43", + "quote 1.0.21", + "syn 1.0.100", +] + +[[package]] +name = "cosmwasm-std" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875994993c2082a6fcd406937bf0fca21c349e4a624f3810253a14fa83a3a195" +dependencies = [ + "base64 0.13.0", + "cosmwasm-crypto", + "cosmwasm-derive", + "forward_ref", + "schemars", + "serde", + "serde-json-wasm", + "thiserror", + "uint", +] + [[package]] name = "cosmwasm-vm" version = "0.1.0" @@ -2060,7 +2148,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21" dependencies = [ "generic-array 0.14.6", - "rand_core 0.6.3", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -2112,7 +2200,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cb" dependencies = [ "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -2149,14 +2237,14 @@ name = "cumulus-client-cli" version = "0.1.0" source = "git+https://github.com/ComposableFi/cumulus?rev=f730e6747be173e2d4609381edc7929c8671f4d8#f730e6747be173e2d4609381edc7929c8671f4d8" dependencies = [ - "clap 3.2.20", + "clap 3.2.22", "parity-scale-codec", "sc-chain-spec", "sc-cli", "sc-service", "sp-core", "sp-runtime", - "url 2.3.0", + "url 2.3.1", ] [[package]] @@ -2384,7 +2472,7 @@ dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -2602,7 +2690,7 @@ dependencies = [ "sp-storage", "tokio", "tracing", - "url 2.3.0", + "url 2.3.1", ] [[package]] @@ -2652,7 +2740,7 @@ checksum = "4033478fbf70d6acf2655ac70da91ee65852d69daf7a67bf7a2f518fb47aafcf" dependencies = [ "byteorder", "digest 0.9.0", - "rand_core 0.6.3", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -2665,7 +2753,7 @@ checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" dependencies = [ "byteorder", "digest 0.9.0", - "rand_core 0.6.3", + "rand_core 0.6.4", "subtle-ng", "zeroize", ] @@ -2676,6 +2764,41 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9" +[[package]] +name = "cw-storage-plus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "648b1507290bbc03a8d88463d7cd9b04b1fa0155e5eef366c4fa052b9caaac7a" +dependencies = [ + "cosmwasm-std", + "schemars", + "serde", +] + +[[package]] +name = "cw-utils" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dbaecb78c8e8abfd6b4258c7f4fbeb5c49a5e45ee4d910d3240ee8e1d714e1b" +dependencies = [ + "cosmwasm-std", + "schemars", + "serde", + "thiserror", +] + +[[package]] +name = "cw20" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cb782b8f110819a4eb5dbbcfed25ffba49ec16bbe32b4ad8da50a5ce68fec05" +dependencies = [ + "cosmwasm-std", + "cw-utils", + "schemars", + "serde", +] + [[package]] name = "dali-runtime" version = "0.1.0" @@ -2684,6 +2807,7 @@ dependencies = [ "common", "composable-support", "composable-traits", + "cosmwasm-runtime-api", "crowdloan-rewards-runtime-api", "cumulus-pallet-aura-ext", "cumulus-pallet-dmp-queue", @@ -2807,7 +2931,7 @@ dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", "strsim 0.10.0", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -2818,7 +2942,7 @@ checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5" dependencies = [ "darling_core", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -2844,7 +2968,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5bbed42daaa95e780b60a50546aa345b8413a1e46f9a40a12907d3598f038db" dependencies = [ "data-encoding", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -2864,7 +2988,7 @@ checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -2877,7 +3001,7 @@ dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", "rustc_version 0.4.0", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -2900,9 +3024,9 @@ dependencies = [ [[package]] name = "digest" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c" dependencies = [ "block-buffer 0.10.3", "crypto-common", @@ -3027,7 +3151,7 @@ checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -3065,7 +3189,7 @@ checksum = "758e2a0cd8a6cdf483e1d369e7d081647e00b88d8953e34d8f2cbba05ae28368" dependencies = [ "curve25519-dalek-ng", "hex", - "rand_core 0.6.3", + "rand_core 0.6.4", "sha2 0.9.9", "zeroize", ] @@ -3084,6 +3208,21 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ed25519-zebra" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403ef3e961ab98f0ba902771d29f842058578bb1ce7e3c59dad5a6a93e784c69" +dependencies = [ + "curve25519-dalek 3.2.0", + "hex", + "rand_core 0.6.4", + "serde", + "sha2 0.9.9", + "thiserror", + "zeroize", +] + [[package]] name = "either" version = "1.8.0" @@ -3102,7 +3241,7 @@ dependencies = [ "ff", "generic-array 0.14.6", "group", - "rand_core 0.6.3", + "rand_core 0.6.4", "sec1", "subtle", "zeroize", @@ -3126,7 +3265,7 @@ dependencies = [ "heck 0.4.0", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -3152,7 +3291,7 @@ checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -3163,14 +3302,14 @@ checksum = "038b1afa59052df211f9efd58f8b1d84c242935ede1c3dbaed26b018a9e06ae2" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "env_logger" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +checksum = "c90bf5f19754d10198ccb95b70664fc925bd1fc090a0fd9a6ebc54acc8cd6272" dependencies = [ "atty", "humantime", @@ -3261,7 +3400,7 @@ dependencies = [ "fs-err", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -3316,7 +3455,7 @@ dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", "thiserror", ] @@ -3351,7 +3490,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "131655483be284720a17d74ff97592b8e76576dc25563148601df2d7c9080924" dependencies = [ - "rand_core 0.6.3", + "rand_core 0.6.4", "subtle", ] @@ -3499,25 +3638,30 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "fork-tree" version = "3.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", ] [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" dependencies = [ - "matches", - "percent-encoding 2.1.0", + "percent-encoding 2.2.0", ] +[[package]] +name = "forward_ref" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" + [[package]] name = "frame-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -3539,11 +3683,11 @@ dependencies = [ [[package]] name = "frame-benchmarking-cli" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "Inflector", "chrono", - "clap 3.2.20", + "clap 3.2.22", "comfy-table", "frame-benchmarking", "frame-support", @@ -3590,18 +3734,18 @@ dependencies = [ [[package]] name = "frame-election-provider-solution-type" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "frame-election-provider-support" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-election-provider-solution-type", "frame-support", @@ -3617,7 +3761,7 @@ dependencies = [ [[package]] name = "frame-executive" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -3645,7 +3789,7 @@ dependencies = [ [[package]] name = "frame-support" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "bitflags", "frame-metadata", @@ -3675,41 +3819,41 @@ dependencies = [ [[package]] name = "frame-support-procedural" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "Inflector", "frame-support-procedural-tools", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "frame-support-procedural-tools" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support-procedural-tools-derive", "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "frame-support-procedural-tools-derive" version = "3.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "frame-system" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "log 0.4.17", @@ -3726,7 +3870,7 @@ dependencies = [ [[package]] name = "frame-system-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -3741,7 +3885,7 @@ dependencies = [ [[package]] name = "frame-system-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "sp-api", @@ -3750,7 +3894,7 @@ dependencies = [ [[package]] name = "frame-try-runtime" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "sp-api", @@ -3919,7 +4063,7 @@ checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -4113,7 +4257,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89" dependencies = [ "ff", - "rand_core 0.6.3", + "rand_core 0.6.4", "subtle", ] @@ -4134,7 +4278,7 @@ checksum = "729f9bd3449d77e7831a18abfb7ba2f99ee813dfd15b8c2167c9a54ba20aa99d" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -4152,7 +4296,7 @@ dependencies = [ "indexmap", "slab", "tokio", - "tokio-util 0.7.3", + "tokio-util 0.7.4", "tracing", ] @@ -4167,9 +4311,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "4.3.3" +version = "4.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360d9740069b2f6cbb63ce2dbaa71a20d3185350cbb990d7bebeb9318415eb17" +checksum = "56b224eaa4987c03c30b251de7ef0c15a6a59f34222905850dbc3026dfb24d5f" dependencies = [ "log 0.4.17", "pest", @@ -4225,7 +4369,7 @@ dependencies = [ "http", "httpdate", "mime 0.3.16", - "sha1 0.10.4", + "sha1 0.10.5", ] [[package]] @@ -4394,7 +4538,7 @@ dependencies = [ "serde_json", "serde_qs", "serde_urlencoded", - "url 2.3.0", + "url 2.3.1", ] [[package]] @@ -4489,9 +4633,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.47" +version = "0.1.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c495f162af0bf17656d0014a0eded5f3cd2f365fdd204548c2869db89359dc7" +checksum = "237a0714f28b1ee39ccec0770ccb544eb02c9ef2c82bb096230eefcffa6468b0" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4525,8 +4669,8 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "sha2 0.10.5", - "sha3 0.10.4", + "sha2 0.10.6", + "sha3 0.10.5", "sp-core", "sp-io", "sp-mmr-primitives", @@ -4553,8 +4697,8 @@ dependencies = [ "ripemd", "scale-info", "serde", - "sha2 0.10.5", - "sha3 0.10.4", + "sha2 0.10.6", + "sha3 0.10.5", "sp-core", "sp-io", "sp-runtime", @@ -4693,6 +4837,16 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "if-addrs" version = "0.7.0" @@ -4762,7 +4916,7 @@ checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -4865,9 +5019,9 @@ checksum = "357376465c37db3372ef6a00585d336ed3d0f11d4345eef77ebcb05865392b21" [[package]] name = "itertools" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] @@ -4901,9 +5055,9 @@ checksum = "9478aa10f73e7528198d75109c8be5cd7d15fb530238040148d5f9a22d4c5b3b" [[package]] name = "js-sys" -version = "0.3.59" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" dependencies = [ "wasm-bindgen", ] @@ -5024,7 +5178,7 @@ dependencies = [ "thiserror", "tokio", "tokio-rustls", - "tokio-util 0.7.3", + "tokio-util 0.7.4", "tracing", "webpki-roots", ] @@ -5045,7 +5199,7 @@ dependencies = [ "thiserror", "tokio", "tokio-rustls", - "tokio-util 0.7.3", + "tokio-util 0.7.4", "tracing", "webpki-roots", ] @@ -5066,7 +5220,7 @@ dependencies = [ "thiserror", "tokio", "tokio-rustls", - "tokio-util 0.7.3", + "tokio-util 0.7.4", "tracing", "webpki-roots", ] @@ -5231,7 +5385,7 @@ dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -5243,7 +5397,7 @@ dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -5327,7 +5481,7 @@ dependencies = [ "soketto", "tokio", "tokio-stream", - "tokio-util 0.7.3", + "tokio-util 0.7.4", "tracing", ] @@ -5341,6 +5495,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "sec1", + "sha2 0.9.9", ] [[package]] @@ -5558,9 +5713,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.132" +version = "0.2.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" +checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966" [[package]] name = "libloading" @@ -5678,7 +5833,7 @@ dependencies = [ "rand 0.8.5", "ring", "rw-stream-sink", - "sha2 0.10.5", + "sha2 0.10.6", "smallvec 1.9.0", "thiserror", "unsigned-varint", @@ -5752,7 +5907,7 @@ dependencies = [ "prost-build", "rand 0.7.3", "regex", - "sha2 0.10.5", + "sha2 0.10.6", "smallvec 1.9.0", "unsigned-varint", "wasm-timer", @@ -5799,7 +5954,7 @@ dependencies = [ "prost", "prost-build", "rand 0.7.3", - "sha2 0.10.5", + "sha2 0.10.6", "smallvec 1.9.0", "thiserror", "uint", @@ -5877,7 +6032,7 @@ dependencies = [ "prost", "prost-build", "rand 0.8.5", - "sha2 0.10.5", + "sha2 0.10.6", "snow", "static_assertions", "x25519-dalek", @@ -5974,7 +6129,7 @@ dependencies = [ "prost", "prost-build", "rand 0.8.5", - "sha2 0.10.5", + "sha2 0.10.6", "thiserror", "unsigned-varint", "void", @@ -6025,7 +6180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f54a64b6957249e0ce782f8abf41d97f69330d02bf229f0672d864f0650cc76" dependencies = [ "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -6086,7 +6241,7 @@ dependencies = [ "quicksink", "rw-stream-sink", "soketto", - "url 2.3.0", + "url 2.3.1", "webpki-roots", ] @@ -6331,9 +6486,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ "autocfg 1.1.0", "scopeguard", @@ -6361,18 +6516,18 @@ dependencies = [ [[package]] name = "lru" -version = "0.6.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea2d928b485416e8908cff2d97d621db22b27f7b3b6729e438bcf42c671ba91" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" dependencies = [ - "hashbrown 0.11.2", + "hashbrown 0.12.3", ] [[package]] name = "lru" -version = "0.7.8" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +checksum = "936d98d2ddd79c18641c6709e7bb09981449694e402d1a0f0f657ea8d61f4a51" dependencies = [ "hashbrown 0.12.3", ] @@ -6497,11 +6652,11 @@ dependencies = [ [[package]] name = "memory-lru" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beeb98b3d1ed2c0054bd81b5ba949a0243c3ccad751d45ea898fa8059fa2860a" +checksum = "ce95ae042940bad7e312857b929ee3d11b8f799a80cb7b9c7ec5125516906395" dependencies = [ - "lru 0.6.6", + "lru 0.8.0", ] [[package]] @@ -6645,11 +6800,11 @@ dependencies = [ "byteorder", "data-encoding", "multihash", - "percent-encoding 2.1.0", + "percent-encoding 2.2.0", "serde", "static_assertions", "unsigned-varint", - "url 2.3.0", + "url 2.3.1", ] [[package]] @@ -6673,10 +6828,10 @@ dependencies = [ "blake2s_simd", "blake3 1.3.1", "core2", - "digest 0.10.3", + "digest 0.10.5", "multihash-derive", - "sha2 0.10.5", - "sha3 0.10.4", + "sha2 0.10.6", + "sha3 0.10.5", "unsigned-varint", ] @@ -6690,7 +6845,7 @@ dependencies = [ "proc-macro-error", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", "synstructure", ] @@ -6758,7 +6913,7 @@ checksum = "01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -6910,6 +7065,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" dependencies = [ + "num-bigint 0.4.3", "num-complex", "num-integer", "num-iter", @@ -6956,7 +7112,7 @@ checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -7066,9 +7222,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" [[package]] name = "opaque-debug" @@ -7105,7 +7261,7 @@ checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -7154,7 +7310,7 @@ dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -7368,7 +7524,7 @@ dependencies = [ "pallet-timestamp", "parity-scale-codec", "proptest", - "rand_core 0.6.3", + "rand_core 0.6.4", "rustc-hex", "scale-info", "serde", @@ -7384,7 +7540,7 @@ dependencies = [ [[package]] name = "pallet-asset-tx-payment" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -7429,7 +7585,7 @@ dependencies = [ [[package]] name = "pallet-assets" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -7464,7 +7620,7 @@ dependencies = [ [[package]] name = "pallet-aura" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -7480,7 +7636,7 @@ dependencies = [ [[package]] name = "pallet-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -7496,7 +7652,7 @@ dependencies = [ [[package]] name = "pallet-authorship" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -7511,7 +7667,7 @@ dependencies = [ [[package]] name = "pallet-babe" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -7535,7 +7691,7 @@ dependencies = [ [[package]] name = "pallet-bags-list" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7555,7 +7711,7 @@ dependencies = [ [[package]] name = "pallet-balances" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -7570,7 +7726,7 @@ dependencies = [ [[package]] name = "pallet-beefy" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "beefy-primitives", "frame-support", @@ -7586,7 +7742,7 @@ dependencies = [ [[package]] name = "pallet-beefy-mmr" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "beefy-merkle-tree", "beefy-primitives", @@ -7635,7 +7791,7 @@ dependencies = [ [[package]] name = "pallet-bounties" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -7671,7 +7827,7 @@ dependencies = [ [[package]] name = "pallet-child-bounties" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -7710,7 +7866,7 @@ dependencies = [ [[package]] name = "pallet-collective" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -7821,7 +7977,7 @@ dependencies = [ [[package]] name = "pallet-democracy" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -7900,7 +8056,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-multi-phase" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7923,7 +8079,7 @@ dependencies = [ [[package]] name = "pallet-election-provider-support-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -7936,7 +8092,7 @@ dependencies = [ [[package]] name = "pallet-elections-phragmen" version = "5.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -7974,7 +8130,7 @@ dependencies = [ [[package]] name = "pallet-gilt" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8007,7 +8163,7 @@ dependencies = [ [[package]] name = "pallet-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8060,7 +8216,7 @@ dependencies = [ "scale-info", "serde", "serde_json", - "sha2 0.10.5", + "sha2 0.10.6", "simple-iavl", "sp-core", "sp-io", @@ -8099,7 +8255,7 @@ dependencies = [ [[package]] name = "pallet-identity" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "enumflags2", "frame-benchmarking", @@ -8115,7 +8271,7 @@ dependencies = [ [[package]] name = "pallet-im-online" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8135,7 +8291,7 @@ dependencies = [ [[package]] name = "pallet-indices" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8229,7 +8385,7 @@ dependencies = [ [[package]] name = "pallet-membership" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8246,7 +8402,7 @@ dependencies = [ [[package]] name = "pallet-mmr" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "ckb-merkle-mountain-range", "frame-benchmarking", @@ -8264,7 +8420,7 @@ dependencies = [ [[package]] name = "pallet-mmr-rpc" version = "3.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "jsonrpsee 0.14.0", "parity-scale-codec", @@ -8305,7 +8461,7 @@ dependencies = [ [[package]] name = "pallet-multisig" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8320,7 +8476,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools" version = "1.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -8337,7 +8493,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-benchmarking" version = "1.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8356,7 +8512,7 @@ dependencies = [ [[package]] name = "pallet-nomination-pools-runtime-api" version = "1.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "sp-api", @@ -8366,7 +8522,7 @@ dependencies = [ [[package]] name = "pallet-offences" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -8383,7 +8539,7 @@ dependencies = [ [[package]] name = "pallet-offences-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8461,7 +8617,7 @@ dependencies = [ [[package]] name = "pallet-preimage" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8495,7 +8651,7 @@ dependencies = [ [[package]] name = "pallet-proxy" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8510,7 +8666,7 @@ dependencies = [ [[package]] name = "pallet-randomness-collective-flip" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -8524,7 +8680,7 @@ dependencies = [ [[package]] name = "pallet-recovery" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8539,7 +8695,7 @@ dependencies = [ [[package]] name = "pallet-scheduler" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8555,7 +8711,7 @@ dependencies = [ [[package]] name = "pallet-session" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -8576,7 +8732,7 @@ dependencies = [ [[package]] name = "pallet-session-benchmarking" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8592,7 +8748,7 @@ dependencies = [ [[package]] name = "pallet-society" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -8606,7 +8762,7 @@ dependencies = [ [[package]] name = "pallet-staking" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-election-provider-support", @@ -8629,18 +8785,18 @@ dependencies = [ [[package]] name = "pallet-staking-reward-curve" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "pallet-staking-reward-fn" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "log 0.4.17", "sp-arithmetic", @@ -8681,7 +8837,7 @@ dependencies = [ [[package]] name = "pallet-sudo" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -8695,7 +8851,7 @@ dependencies = [ [[package]] name = "pallet-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8713,7 +8869,7 @@ dependencies = [ [[package]] name = "pallet-tips" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8732,7 +8888,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-support", "frame-system", @@ -8748,7 +8904,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "jsonrpsee 0.14.0", "pallet-transaction-payment-rpc-runtime-api", @@ -8763,7 +8919,7 @@ dependencies = [ [[package]] name = "pallet-transaction-payment-rpc-runtime-api" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "pallet-transaction-payment", "parity-scale-codec", @@ -8774,7 +8930,7 @@ dependencies = [ [[package]] name = "pallet-treasury" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8791,7 +8947,7 @@ dependencies = [ [[package]] name = "pallet-uniques" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8806,7 +8962,7 @@ dependencies = [ [[package]] name = "pallet-utility" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8871,7 +9027,7 @@ dependencies = [ [[package]] name = "pallet-vesting" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-benchmarking", "frame-support", @@ -8980,9 +9136,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.1.5" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9182e4a71cae089267ab03e67c99368db7cd877baf50f931e5d6d4b71e195ac0" +checksum = "366e44391a8af4cfd6002ef6ba072bae071a96aafca98d7d448a34c5dca38b6a" dependencies = [ "arrayvec 0.7.2", "bitvec", @@ -9001,7 +9157,7 @@ dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -9033,7 +9189,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f557c32c6d268a07c921471619c0295f5efad3a0e76d4f97a05c091a51d110b2" dependencies = [ "proc-macro2 1.0.43", - "syn 1.0.99", + "syn 1.0.100", "synstructure", ] @@ -9082,7 +9238,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", - "lock_api 0.4.8", + "lock_api 0.4.9", "parking_lot_core 0.8.5", ] @@ -9092,7 +9248,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ - "lock_api 0.4.8", + "lock_api 0.4.9", "parking_lot_core 0.9.3", ] @@ -9241,15 +9397,15 @@ checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0560d531d1febc25a3c9398a62a71256c0178f2e3443baedd9ad4bb8c9deb4" +checksum = "cb779fcf4bb850fbbb0edc96ff6cf34fd90c4b1a112ce042653280d9a7364048" dependencies = [ "thiserror", "ucd-trie", @@ -9257,9 +9413,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905708f7f674518498c1f8d644481440f476d39ca6ecae83319bba7c6c12da91" +checksum = "502b62a6d0245378b04ffe0a7fb4f4419a4815fce813bd8a0ec89a56e07d67b1" dependencies = [ "pest", "pest_generator", @@ -9267,26 +9423,26 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5803d8284a629cc999094ecd630f55e91b561a1d1ba75e233b00ae13b91a69ad" +checksum = "451e629bf49b750254da26132f1a5a9d11fd8a95a3df51d15c4abd1ba154cb6c" dependencies = [ "pest", "pest_meta", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "pest_meta" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1538eb784f07615c6d9a8ab061089c6c54a344c5b4301db51990ca1c241e8c04" +checksum = "bcec162c71c45e269dfc3fc2916eaeb97feab22993a21bcce4721d08cd7801a6" dependencies = [ "once_cell", "pest", - "sha-1 0.10.0", + "sha1 0.10.5", ] [[package]] @@ -9406,7 +9562,7 @@ checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -9452,9 +9608,9 @@ checksum = "e8d0eef3571242013a0d5dc84861c3ae4a652e56e12adf8bdc26ff5f8cb34c94" [[package]] name = "plotters" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "716b4eeb6c4a1d3ecc956f75b43ec2e8e8ba80026413e70a3f41fd3313d3492b" +checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" dependencies = [ "chrono", "font-kit", @@ -9586,7 +9742,7 @@ name = "polkadot-cli" version = "0.9.27" source = "git+https://github.com/paritytech/polkadot?branch=release-v0.9.27#b017bad50d360a1c6e3cdf9652bdb85e5f479fea" dependencies = [ - "clap 3.2.20", + "clap 3.2.22", "frame-benchmarking-cli", "futures 0.3.24", "log 0.4.17", @@ -10688,7 +10844,7 @@ version = "0.1.0" dependencies = [ "binance", "chrono", - "clap 3.2.20", + "clap 3.2.22", "custom_derive", "enum_derive", "env_logger", @@ -10797,7 +10953,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", "version_check 0.9.4", ] @@ -10838,9 +10994,9 @@ dependencies = [ [[package]] name = "prometheus" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cface98dfa6d645ea4c789839f176e4b072265d085bfcc48eaa8d137f58d3c39" +checksum = "45c8babc29389186697fe5a2a4859d697825496b83db5d0b65271cdc0488e88c" dependencies = [ "cfg-if 1.0.0", "fnv", @@ -10870,7 +11026,7 @@ checksum = "e8e12d01b9d66ad9eb4529c57666b6263fc1993cb30261d83ead658fdd932652" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -10959,7 +11115,7 @@ dependencies = [ "itertools", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -11069,7 +11225,7 @@ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha 0.3.1", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -11099,7 +11255,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -11128,9 +11284,9 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom 0.2.7", ] @@ -11222,7 +11378,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" dependencies = [ - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -11240,7 +11396,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -11338,7 +11494,7 @@ checksum = "5234cd6063258a5e32903b53b1b6ac043a0541c8adc1f610f67b0326c7a578fa" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -11394,7 +11550,7 @@ dependencies = [ [[package]] name = "remote-externalities" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "env_logger", "jsonrpsee 0.14.0", @@ -11419,9 +11575,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.11" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" +checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc" dependencies = [ "base64 0.13.0", "bytes 1.2.1", @@ -11435,11 +11591,11 @@ dependencies = [ "hyper-tls", "ipnet", "js-sys", - "lazy_static", "log 0.4.17", "mime 0.3.16", "native-tls", - "percent-encoding 2.1.0", + "once_cell", + "percent-encoding 2.2.0", "pin-project-lite 0.2.9", "serde", "serde_json", @@ -11447,7 +11603,7 @@ dependencies = [ "tokio", "tokio-native-tls", "tower-service", - "url 2.3.0", + "url 2.3.1", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -11498,11 +11654,11 @@ dependencies = [ [[package]] name = "ripemd" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1facec54cb5e0dc08553501fa740091086d0259ad0067e0d4103448e4cb22ed3" +checksum = "74e2ee464e763f6527991a6d532142e3c2016eb9907cc081401c11862c26a840" dependencies = [ - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -11634,7 +11790,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a632a43487c1332be8e183588079f89b6820fab24e04db49521eacd536837372" dependencies = [ "micromath", - "sha2 0.10.5", + "sha2 0.10.6", ] [[package]] @@ -11704,7 +11860,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.13", + "semver 1.0.14", ] [[package]] @@ -11818,7 +11974,7 @@ version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "814c536dcd27acf03296c618dab7ad62d28e70abd7ba41d3f34a2ce707a2c666" dependencies = [ - "unicode-xid 0.2.3", + "unicode-xid 0.2.4", ] [[package]] @@ -11886,7 +12042,7 @@ dependencies = [ [[package]] name = "sc-allocator" version = "4.1.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "log 0.4.17", "sp-core", @@ -11897,7 +12053,7 @@ dependencies = [ [[package]] name = "sc-authority-discovery" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "futures 0.3.24", @@ -11924,7 +12080,7 @@ dependencies = [ [[package]] name = "sc-basic-authorship" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "futures-timer", @@ -11947,7 +12103,7 @@ dependencies = [ [[package]] name = "sc-block-builder" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "sc-client-api", @@ -11963,7 +12119,7 @@ dependencies = [ [[package]] name = "sc-chain-spec" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "impl-trait-for-tuples", "memmap2", @@ -11980,21 +12136,21 @@ dependencies = [ [[package]] name = "sc-chain-spec-derive" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "sc-cli" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "chrono", - "clap 3.2.20", + "clap 3.2.22", "fdlimit", "futures 0.3.24", "hex", @@ -12030,7 +12186,7 @@ dependencies = [ [[package]] name = "sc-client-api" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "fnv", "futures 0.3.24", @@ -12058,7 +12214,7 @@ dependencies = [ [[package]] name = "sc-client-db" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "hash-db", "kvdb", @@ -12083,7 +12239,7 @@ dependencies = [ [[package]] name = "sc-consensus" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "futures 0.3.24", @@ -12107,7 +12263,7 @@ dependencies = [ [[package]] name = "sc-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "futures 0.3.24", @@ -12136,7 +12292,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "fork-tree", @@ -12179,7 +12335,7 @@ dependencies = [ [[package]] name = "sc-consensus-babe-rpc" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "jsonrpsee 0.14.0", @@ -12201,7 +12357,7 @@ dependencies = [ [[package]] name = "sc-consensus-epochs" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "fork-tree", "parity-scale-codec", @@ -12214,7 +12370,7 @@ dependencies = [ [[package]] name = "sc-consensus-manual-seal" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "assert_matches", "async-trait", @@ -12248,7 +12404,7 @@ dependencies = [ [[package]] name = "sc-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "futures 0.3.24", @@ -12273,7 +12429,7 @@ dependencies = [ [[package]] name = "sc-consensus-uncles" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "sc-client-api", "sp-authorship", @@ -12284,7 +12440,7 @@ dependencies = [ [[package]] name = "sc-executor" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "lazy_static", "lru 0.7.8", @@ -12311,7 +12467,7 @@ dependencies = [ [[package]] name = "sc-executor-common" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "environmental", "parity-scale-codec", @@ -12328,7 +12484,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmi" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "log 0.4.17", "parity-scale-codec", @@ -12343,7 +12499,7 @@ dependencies = [ [[package]] name = "sc-executor-wasmtime" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "cfg-if 1.0.0", "libc", @@ -12363,7 +12519,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "ahash", "async-trait", @@ -12404,7 +12560,7 @@ dependencies = [ [[package]] name = "sc-finality-grandpa-rpc" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "finality-grandpa", "futures 0.3.24", @@ -12425,7 +12581,7 @@ dependencies = [ [[package]] name = "sc-informant" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "ansi_term", "futures 0.3.24", @@ -12442,7 +12598,7 @@ dependencies = [ [[package]] name = "sc-keystore" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "hex", @@ -12457,7 +12613,7 @@ dependencies = [ [[package]] name = "sc-network" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "asynchronous-codec", @@ -12506,7 +12662,7 @@ dependencies = [ [[package]] name = "sc-network-common" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "bitflags", "futures 0.3.24", @@ -12524,7 +12680,7 @@ dependencies = [ [[package]] name = "sc-network-gossip" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "ahash", "futures 0.3.24", @@ -12541,7 +12697,7 @@ dependencies = [ [[package]] name = "sc-network-light" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "libp2p", @@ -12561,7 +12717,7 @@ dependencies = [ [[package]] name = "sc-network-sync" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "fork-tree", "futures 0.3.24", @@ -12588,7 +12744,7 @@ dependencies = [ [[package]] name = "sc-offchain" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "bytes 1.2.1", "fnv", @@ -12616,7 +12772,7 @@ dependencies = [ [[package]] name = "sc-peerset" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "libp2p", @@ -12629,7 +12785,7 @@ dependencies = [ [[package]] name = "sc-proposer-metrics" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "log 0.4.17", "substrate-prometheus-endpoint", @@ -12638,7 +12794,7 @@ dependencies = [ [[package]] name = "sc-rpc" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "hash-db", @@ -12668,7 +12824,7 @@ dependencies = [ [[package]] name = "sc-rpc-api" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "jsonrpsee 0.14.0", @@ -12691,7 +12847,7 @@ dependencies = [ [[package]] name = "sc-rpc-server" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "jsonrpsee 0.14.0", @@ -12704,7 +12860,7 @@ dependencies = [ [[package]] name = "sc-service" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "directories", @@ -12771,7 +12927,7 @@ dependencies = [ [[package]] name = "sc-state-db" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "log 0.4.17", "parity-scale-codec", @@ -12785,7 +12941,7 @@ dependencies = [ [[package]] name = "sc-sync-state-rpc" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "jsonrpsee 0.14.0", "parity-scale-codec", @@ -12804,7 +12960,7 @@ dependencies = [ [[package]] name = "sc-sysinfo" version = "6.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "libc", @@ -12823,7 +12979,7 @@ dependencies = [ [[package]] name = "sc-telemetry" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "chrono", "futures 0.3.24", @@ -12841,7 +12997,7 @@ dependencies = [ [[package]] name = "sc-tracing" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "ansi_term", "atty", @@ -12872,18 +13028,18 @@ dependencies = [ [[package]] name = "sc-tracing-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "sc-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "futures-timer", @@ -12910,7 +13066,7 @@ dependencies = [ [[package]] name = "sc-transaction-pool-api" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "log 0.4.17", @@ -12923,7 +13079,7 @@ dependencies = [ [[package]] name = "sc-utils" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "futures-timer", @@ -12935,9 +13091,9 @@ dependencies = [ [[package]] name = "scale-info" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c46be926081c9f4dd5dd9b6f1d3e3229f2360bc6502dd8836f84a93b7c75e99a" +checksum = "333af15b02563b8182cd863f925bd31ef8fa86a0e095d30c091956057d436153" dependencies = [ "bitvec", "cfg-if 1.0.0", @@ -12949,14 +13105,14 @@ dependencies = [ [[package]] name = "scale-info-derive" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e334bb10a245e28e5fd755cabcafd96cfcd167c99ae63a46924ca8d8703a3c" +checksum = "53f56acbd0743d29ffa08f911ab5397def774ad01bab3786804cf6ee057fb5e1" dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -12990,7 +13146,7 @@ dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", "serde_derive_internals", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -13125,9 +13281,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" dependencies = [ "serde", ] @@ -13156,6 +13312,14 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-json-wasm" +version = "0.4.1" +source = "git+https://github.com/hussein-aitlahcen/serde-json-wasm?rev=1608a13d2a2ba90605d9626a51ff6667aca5a2d6#1608a13d2a2ba90605d9626a51ff6667aca5a2d6" +dependencies = [ + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.7" @@ -13173,7 +13337,7 @@ checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -13184,7 +13348,7 @@ checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -13222,7 +13386,7 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" dependencies = [ - "percent-encoding 2.1.0", + "percent-encoding 2.2.0", "serde", "thiserror", ] @@ -13235,7 +13399,7 @@ checksum = "1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -13263,17 +13427,6 @@ dependencies = [ "opaque-debug 0.3.0", ] -[[package]] -name = "sha-1" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" -dependencies = [ - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.10.3", -] - [[package]] name = "sha1" version = "0.6.1" @@ -13285,13 +13438,13 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "006769ba83e921b3085caa8334186b00cf92b4cb1a6cf4632fbccc8eff5c7549" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -13327,13 +13480,13 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9db03534dff993187064c4e0c05a5708d2a9728ace9a8959b77bedf415dac5" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if 1.0.0", "cpufeatures", - "digest 0.10.3", + "digest 0.10.5", ] [[package]] @@ -13350,11 +13503,11 @@ dependencies = [ [[package]] name = "sha3" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaedf34ed289ea47c2b741bb72e5357a209512d67bcd4bda44359e5bf0470f56" +checksum = "e2904bea16a1ae962b483322a1c7b81d976029203aea1f461e51cd7705db7ba9" dependencies = [ - "digest 0.10.3", + "digest 0.10.5", "keccak", ] @@ -13411,7 +13564,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02658e48d89f2bec991f9a78e69cfa4c316f8d6a6c4ec12fae1aeb263d486788" dependencies = [ "digest 0.9.0", - "rand_core 0.6.3", + "rand_core 0.6.4", ] [[package]] @@ -13511,7 +13664,7 @@ source = "git+https://github.com/ComposableFi/simple-avl?rev=452a1126bfb8a861354 dependencies = [ "bytes 1.2.1", "ics23", - "sha2 0.10.5", + "sha2 0.10.6", "tendermint", ] @@ -13609,10 +13762,10 @@ dependencies = [ "blake2", "chacha20poly1305", "curve25519-dalek 4.0.0-pre.1", - "rand_core 0.6.3", + "rand_core 0.6.4", "ring", "rustc_version 0.4.0", - "sha2 0.10.5", + "sha2 0.10.6", "subtle", ] @@ -13639,13 +13792,13 @@ dependencies = [ "httparse", "log 0.4.17", "rand 0.8.5", - "sha-1 0.9.8", + "sha-1", ] [[package]] name = "sp-api" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "hash-db", "log 0.4.17", @@ -13662,19 +13815,19 @@ dependencies = [ [[package]] name = "sp-api-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "blake2", "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "sp-application-crypto" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "scale-info", @@ -13687,7 +13840,7 @@ dependencies = [ [[package]] name = "sp-arithmetic" version = "5.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "integer-sqrt", "num-traits", @@ -13702,7 +13855,7 @@ dependencies = [ [[package]] name = "sp-authority-discovery" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "scale-info", @@ -13715,7 +13868,7 @@ dependencies = [ [[package]] name = "sp-authorship" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "parity-scale-codec", @@ -13727,7 +13880,7 @@ dependencies = [ [[package]] name = "sp-block-builder" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "sp-api", @@ -13739,7 +13892,7 @@ dependencies = [ [[package]] name = "sp-blockchain" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "log 0.4.17", @@ -13757,7 +13910,7 @@ dependencies = [ [[package]] name = "sp-consensus" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "futures 0.3.24", @@ -13776,7 +13929,7 @@ dependencies = [ [[package]] name = "sp-consensus-aura" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "parity-scale-codec", @@ -13794,7 +13947,7 @@ dependencies = [ [[package]] name = "sp-consensus-babe" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "merlin", @@ -13817,7 +13970,7 @@ dependencies = [ [[package]] name = "sp-consensus-slots" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "scale-info", @@ -13831,7 +13984,7 @@ dependencies = [ [[package]] name = "sp-consensus-vrf" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "scale-info", @@ -13844,7 +13997,7 @@ dependencies = [ [[package]] name = "sp-core" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "base58", "bitflags", @@ -13890,13 +14043,13 @@ dependencies = [ [[package]] name = "sp-core-hashing" version = "4.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "blake2", "byteorder", - "digest 0.10.3", - "sha2 0.10.5", - "sha3 0.10.4", + "digest 0.10.5", + "sha2 0.10.6", + "sha3 0.10.5", "sp-std", "twox-hash", ] @@ -13904,18 +14057,18 @@ dependencies = [ [[package]] name = "sp-core-hashing-proc-macro" version = "5.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", "sp-core-hashing", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "sp-database" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "kvdb", "parking_lot 0.12.1", @@ -13924,17 +14077,17 @@ dependencies = [ [[package]] name = "sp-debug-derive" version = "4.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "sp-externalities" version = "0.12.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "environmental", "parity-scale-codec", @@ -13945,7 +14098,7 @@ dependencies = [ [[package]] name = "sp-finality-grandpa" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "finality-grandpa", "log 0.4.17", @@ -13963,7 +14116,7 @@ dependencies = [ [[package]] name = "sp-inherents" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "impl-trait-for-tuples", @@ -13977,7 +14130,7 @@ dependencies = [ [[package]] name = "sp-io" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures 0.3.24", "hash-db", @@ -14002,7 +14155,7 @@ dependencies = [ [[package]] name = "sp-keyring" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "lazy_static", "sp-core", @@ -14013,7 +14166,7 @@ dependencies = [ [[package]] name = "sp-keystore" version = "0.12.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "futures 0.3.24", @@ -14030,7 +14183,7 @@ dependencies = [ [[package]] name = "sp-maybe-compressed-blob" version = "4.1.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "thiserror", "zstd", @@ -14039,7 +14192,7 @@ dependencies = [ [[package]] name = "sp-mmr-primitives" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "log 0.4.17", "parity-scale-codec", @@ -14054,7 +14207,7 @@ dependencies = [ [[package]] name = "sp-npos-elections" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "scale-info", @@ -14068,7 +14221,7 @@ dependencies = [ [[package]] name = "sp-offchain" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "sp-api", "sp-core", @@ -14078,7 +14231,7 @@ dependencies = [ [[package]] name = "sp-panic-handler" version = "4.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "backtrace", "lazy_static", @@ -14088,7 +14241,7 @@ dependencies = [ [[package]] name = "sp-rpc" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "rustc-hash", "serde", @@ -14098,7 +14251,7 @@ dependencies = [ [[package]] name = "sp-runtime" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "either", "hash256-std-hasher", @@ -14120,7 +14273,7 @@ dependencies = [ [[package]] name = "sp-runtime-interface" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "impl-trait-for-tuples", "parity-scale-codec", @@ -14137,19 +14290,19 @@ dependencies = [ [[package]] name = "sp-runtime-interface-proc-macro" version = "5.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "Inflector", "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "sp-sandbox" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "log 0.4.17", "parity-scale-codec", @@ -14163,7 +14316,7 @@ dependencies = [ [[package]] name = "sp-serializer" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "serde", "serde_json", @@ -14172,7 +14325,7 @@ dependencies = [ [[package]] name = "sp-session" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "scale-info", @@ -14186,7 +14339,7 @@ dependencies = [ [[package]] name = "sp-staking" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "scale-info", @@ -14197,7 +14350,7 @@ dependencies = [ [[package]] name = "sp-state-machine" version = "0.12.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "hash-db", "log 0.4.17", @@ -14219,12 +14372,12 @@ dependencies = [ [[package]] name = "sp-std" version = "4.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" [[package]] name = "sp-storage" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "impl-serde", "parity-scale-codec", @@ -14237,7 +14390,7 @@ dependencies = [ [[package]] name = "sp-tasks" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "log 0.4.17", "sp-core", @@ -14250,7 +14403,7 @@ dependencies = [ [[package]] name = "sp-timestamp" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "futures-timer", @@ -14266,7 +14419,7 @@ dependencies = [ [[package]] name = "sp-tracing" version = "5.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "sp-std", @@ -14278,7 +14431,7 @@ dependencies = [ [[package]] name = "sp-transaction-pool" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "sp-api", "sp-runtime", @@ -14287,7 +14440,7 @@ dependencies = [ [[package]] name = "sp-transaction-storage-proof" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "async-trait", "log 0.4.17", @@ -14303,7 +14456,7 @@ dependencies = [ [[package]] name = "sp-trie" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "hash-db", "memory-db", @@ -14319,7 +14472,7 @@ dependencies = [ [[package]] name = "sp-version" version = "5.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "impl-serde", "parity-scale-codec", @@ -14336,18 +14489,18 @@ dependencies = [ [[package]] name = "sp-version-proc-macro" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "parity-scale-codec", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] name = "sp-wasm-interface" version = "6.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "impl-trait-for-tuples", "log 0.4.17", @@ -14375,9 +14528,9 @@ dependencies = [ [[package]] name = "ss58-registry" -version = "1.28.0" +version = "1.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c8a1e645fa0bd3e81a90e592a677f7ada3182ac338c4a71cd9ec0ba911f6abb" +checksum = "b0837b5d62f42082c9d56cd946495ae273a3c68083b637b9153341d5e465146d" dependencies = [ "Inflector", "num-format", @@ -14385,7 +14538,7 @@ dependencies = [ "quote 1.0.21", "serde", "serde_json", - "unicode-xid 0.2.3", + "unicode-xid 0.2.4", ] [[package]] @@ -14497,7 +14650,7 @@ dependencies = [ "memchr", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14537,7 +14690,7 @@ dependencies = [ "quote 1.0.21", "serde", "serde_derive", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14553,7 +14706,7 @@ dependencies = [ "serde_derive", "serde_json", "sha1 0.6.1", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14595,7 +14748,7 @@ dependencies = [ "proc-macro-error", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14617,7 +14770,7 @@ dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", "rustversion", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14636,7 +14789,7 @@ dependencies = [ [[package]] name = "substrate-build-script-utils" version = "3.0.0" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "platforms", ] @@ -14644,7 +14797,7 @@ dependencies = [ [[package]] name = "substrate-frame-rpc-system" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "frame-system-rpc-runtime-api", "futures 0.3.24", @@ -14665,7 +14818,7 @@ dependencies = [ [[package]] name = "substrate-prometheus-endpoint" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "futures-util", "hyper 0.14.20", @@ -14681,7 +14834,7 @@ version = "0.1.0" source = "git+https://github.com/polytope-labs/substrate-simnode?branch=polkadot-v0.9.27#a7bae3e69784a81d29ccc47afe6d367adc2b3936" dependencies = [ "anyhow", - "clap 3.2.20", + "clap 3.2.22", "cumulus-pallet-parachain-system", "cumulus-primitives-parachain-inherent", "cumulus-test-relay-sproof-builder", @@ -14736,7 +14889,7 @@ dependencies = [ [[package]] name = "substrate-state-trie-migration-rpc" version = "4.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "jsonrpsee 0.14.0", "log 0.4.17", @@ -14757,7 +14910,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" version = "5.0.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ "ansi_term", "build-helper", @@ -14855,7 +15008,7 @@ dependencies = [ "quote 1.0.21", "scale-info", "subxt-metadata 0.21.0", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14873,7 +15026,7 @@ dependencies = [ "quote 1.0.21", "scale-info", "subxt-metadata 0.22.0", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14890,7 +15043,7 @@ dependencies = [ "quote 1.0.21", "scale-info", "subxt-metadata 0.23.0", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14901,7 +15054,7 @@ dependencies = [ "darling", "proc-macro-error", "subxt-codegen 0.21.0", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14913,7 +15066,7 @@ dependencies = [ "darling", "proc-macro-error", "subxt-codegen 0.22.0", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -14972,9 +15125,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" +checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", @@ -14989,8 +15142,8 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", - "unicode-xid 0.2.3", + "syn 1.0.100", + "unicode-xid 0.2.4", ] [[package]] @@ -15059,7 +15212,7 @@ dependencies = [ "serde_bytes", "serde_json", "serde_repr", - "sha2 0.10.5", + "sha2 0.10.6", "signature", "subtle", "subtle-encoding", @@ -15078,7 +15231,7 @@ dependencies = [ "serde_json", "tendermint", "toml", - "url 2.3.0", + "url 2.3.1", ] [[package]] @@ -15130,7 +15283,7 @@ dependencies = [ "tendermint-proto", "thiserror", "time 0.3.14", - "url 2.3.0", + "url 2.3.1", "uuid", "walkdir", ] @@ -15170,28 +15323,28 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" +checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" [[package]] name = "thiserror" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1b05ca9d106ba7d2e31a9dab4a64e7be2cce415321966ea3132c49a656e252" +checksum = "c53f98874615aea268107765aa1ed8f6116782501d18e53d08b471733bea6c85" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8f2591983642de85c921015f3f070c665a197ed69e417af436115e3a1407487" +checksum = "f8b463991b4eab2d801e724172285ec4195c650e8ec79b149e6c2a8e6dd3f783" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -15328,7 +15481,7 @@ dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", "standback", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -15367,9 +15520,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.21.0" +version = "1.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89797afd69d206ccd11fb0ea560a44bbb87731d020670e79416d442919257d42" +checksum = "0020c875007ad96677dcc890298f4b942882c5d4eb7cc8f439fc3bf813dc9c95" dependencies = [ "autocfg 1.1.0", "bytes 1.2.1", @@ -15426,7 +15579,7 @@ checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -15471,9 +15624,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" +checksum = "f6edf2d6bc038a43d31353570e27270603f4648d18f5ed10c0e179abe43255af" dependencies = [ "futures-core", "pin-project-lite 0.2.9", @@ -15544,9 +15697,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" dependencies = [ "bytes 1.2.1", "futures-core", @@ -15593,7 +15746,7 @@ checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -15646,7 +15799,7 @@ dependencies = [ "proc-macro-crate 1.2.1", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -15753,7 +15906,7 @@ dependencies = [ "smallvec 1.9.0", "thiserror", "tinyvec", - "url 2.3.0", + "url 2.3.1", ] [[package]] @@ -15784,9 +15937,9 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" [[package]] name = "try-runtime-cli" version = "0.10.0-dev" -source = "git+https://github.com/ComposableFi/substrate?rev=f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5#f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" +source = "git+https://github.com/ComposableFi/substrate?rev=fd75550a935d69b6a4ee4f8a48767557b4c9e801#fd75550a935d69b6a4ee4f8a48767557b4c9e801" dependencies = [ - "clap 3.2.20", + "clap 3.2.22", "jsonrpsee 0.14.0", "log 0.4.17", "parity-scale-codec", @@ -15831,9 +15984,9 @@ dependencies = [ "httparse", "log 0.4.17", "rand 0.8.5", - "sha-1 0.9.8", + "sha-1", "thiserror", - "url 2.3.0", + "url 2.3.1", "utf-8", ] @@ -15851,9 +16004,9 @@ dependencies = [ "log 0.4.17", "native-tls", "rand 0.8.5", - "sha-1 0.9.8", + "sha-1", "thiserror", - "url 2.3.0", + "url 2.3.1", "utf-8", ] @@ -15873,7 +16026,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if 1.0.0", - "digest 0.10.3", + "digest 0.10.5", "rand 0.8.5", "static_assertions", ] @@ -15898,9 +16051,9 @@ checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" [[package]] name = "uint" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f03af7ccf01dd611cc450a0d10dbc9b745770d096473e2faf0ca6e2d66d1e0" +checksum = "a45526d29728d135c2900b0d30573fe3ee79fceb12ef534c7bb30e810a91b601" dependencies = [ "byteorder", "crunchy", @@ -15934,30 +16087,30 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" +checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" [[package]] name = "unicode-normalization" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" [[package]] name = "unicode-width" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "unicode-xid" @@ -15967,9 +16120,9 @@ checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" [[package]] name = "unicode-xid" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "universal-hash" @@ -16012,13 +16165,13 @@ dependencies = [ [[package]] name = "url" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fe195a4f217c25b25cb5058ced57059824a678474874038dc88d211bf508d3" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" dependencies = [ "form_urlencoded", - "idna 0.2.3", - "percent-encoding 2.1.0", + "idna 0.3.0", + "percent-encoding 2.2.0", "serde", ] @@ -16150,7 +16303,7 @@ dependencies = [ "mime 0.3.16", "mime_guess", "multipart", - "percent-encoding 2.1.0", + "percent-encoding 2.2.0", "pin-project", "scoped-tls", "serde", @@ -16184,9 +16337,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" dependencies = [ "cfg-if 1.0.0", "serde", @@ -16196,24 +16349,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" dependencies = [ "bumpalo", "log 0.4.17", "once_cell", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dad" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -16223,9 +16376,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" dependencies = [ "quote 1.0.21", "wasm-bindgen-macro-support", @@ -16233,22 +16386,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.82" +version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" [[package]] name = "wasm-gc-api" @@ -16283,7 +16436,7 @@ dependencies = [ name = "wasm-optimizer" version = "0.1.0" dependencies = [ - "clap 3.2.20", + "clap 3.2.22", "sp-maybe-compressed-blob", "wasm-gc-api", ] @@ -16537,9 +16690,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.59" +version = "0.3.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" dependencies = [ "js-sys", "wasm-bindgen", @@ -17009,7 +17162,7 @@ dependencies = [ "Inflector", "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", ] [[package]] @@ -17017,7 +17170,7 @@ name = "xcmp" version = "0.1.0" dependencies = [ "base58", - "clap 3.2.20", + "clap 3.2.22", "env_logger", "hex", "parity-scale-codec", @@ -17031,6 +17184,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "xcvm-asset-registry" +version = "0.1.0" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus", + "schemars", + "serde", + "thiserror", +] + [[package]] name = "xcvm-core" version = "0.1.0" @@ -17043,6 +17208,42 @@ dependencies = [ "serde", ] +[[package]] +name = "xcvm-interpreter" +version = "0.1.0" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus", + "cw20", + "num", + "schemars", + "serde", + "serde-json-wasm", + "serde_json", + "thiserror", + "xcvm-asset-registry", + "xcvm-core", +] + +[[package]] +name = "xcvm-router" +version = "0.1.0" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus", + "cw20", + "hex", + "schemars", + "serde", + "serde-json-wasm", + "thiserror", + "xcvm-asset-registry", + "xcvm-core", + "xcvm-interpreter", +] + [[package]] name = "yamux" version = "0.10.2" @@ -17086,7 +17287,7 @@ checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" dependencies = [ "proc-macro2 1.0.43", "quote 1.0.21", - "syn 1.0.99", + "syn 1.0.100", "synstructure", ] diff --git a/code/Cargo.toml b/code/Cargo.toml index c879fb367e4..95103d2bc7b 100644 --- a/code/Cargo.toml +++ b/code/Cargo.toml @@ -48,6 +48,7 @@ members = [ "utils/xcmp", "utils/wasm-optimizer", "xcvm/lib/*", + "xcvm/cosmwasm/contracts/*", ] [profile.release] @@ -59,14 +60,24 @@ panic = "unwind" inherits = "release" lto = true +[profile.cosmwasm-contracts] +debug = false +debug-assertions = false +inherits = "production" +opt-level = "s" +overflow-checks = true +panic = "abort" +rpath = false + [patch.crates-io] -sp-application-crypto = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-arithmetic = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-core = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-debug-derive = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-externalities = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-io = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-runtime = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } +serde-json-wasm = { git = "https://github.com/hussein-aitlahcen/serde-json-wasm", rev = "1608a13d2a2ba90605d9626a51ff6667aca5a2d6" } +sp-application-crypto = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-arithmetic = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-core = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-debug-derive = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-externalities = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-io = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-runtime = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } wasmi-validation = { git = "https://github.com/ComposableFi/wasmi", rev = "cd8c0c775a1d197a35ff3d5c7d6cded3d476411b" } [patch."https://github.com/paritytech/subxt"] @@ -117,171 +128,171 @@ xcm-builder = { git = "https://github.com/ComposableFi/polkadot", branch = "rele xcm-executor = { git = "https://github.com/ComposableFi/polkadot", branch = "release-v0.9.27" } [patch."https://github.com/paritytech/substrate"] -beefy-gadget = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -beefy-gadget-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -beefy-merkle-tree = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -beefy-primitives = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -fork-tree = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-benchmarking-cli = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-election-provider-support = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-executive = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-support = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-support-procedural = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-support-procedural-tools = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-support-procedural-tools-derive = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-system = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-system-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-system-rpc-runtime-api = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -frame-try-runtime = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-asset-tx-payment = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-assets = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-aura = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-authority-discovery = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-authorship = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-babe = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-bags-list = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-balances = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-beefy = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-beefy-mmr = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-bounties = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-child-bounties = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-collective = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-democracy = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-election-provider-multi-phase = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-election-provider-support-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-elections-phragmen = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-gilt = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-grandpa = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-identity = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-im-online = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-indices = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-membership = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-mmr = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-mmr-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-multisig = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-nomination-pools = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-nomination-pools-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-nomination-pools-runtime-api = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-offences = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-offences-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-preimage = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-proxy = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-randomness-collective-flip = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-recovery = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-scheduler = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-session = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-session-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-society = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-staking = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-staking-reward-curve = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-staking-reward-fn = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-sudo = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-timestamp = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-tips = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-transaction-payment = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-transaction-payment-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-treasury = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-uniques = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-utility = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -pallet-vesting = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -remote-externalities = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-allocator = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-authority-discovery = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-basic-authorship = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-block-builder = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-chain-spec = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-chain-spec-derive = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-cli = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-client-api = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-client-db = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-consensus = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-consensus-aura = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-consensus-babe = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-consensus-babe-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-consensus-epochs = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-consensus-manual-seal = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-consensus-slots = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-consensus-uncles = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-executor = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-executor-common = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-executor-wasmi = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-executor-wasmtime = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-finality-grandpa = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-finality-grandpa-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-informant = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-keystore = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-network = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-network-gossip = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-offchain = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-peerset = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-proposer-metrics = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-rpc-api = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-rpc-server = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-service = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-state-db = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-sync-state-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-sysinfo = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-telemetry = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-tracing = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-tracing-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-transaction-pool = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-transaction-pool-api = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sc-utils = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-api = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-api-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-application-crypto = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-arithmetic = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-authority-discovery = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-authorship = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-block-builder = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-blockchain = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-consensus = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-consensus-aura = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-consensus-babe = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-consensus-slots = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-consensus-vrf = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-core = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-core-hashing = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-core-hashing-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-database = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-debug-derive = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-externalities = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-finality-grandpa = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-inherents = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-io = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-keyring = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-keystore = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-maybe-compressed-blob = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-mmr-primitives = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-npos-elections = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-offchain = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-panic-handler = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-runtime = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-runtime-interface = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-runtime-interface-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-sandbox = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-serializer = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-session = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-staking = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-state-machine = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-std = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-storage = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-tasks = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-timestamp = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-tracing = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-transaction-pool = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-transaction-storage-proof = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-trie = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-version = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-version-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -sp-wasm-interface = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -substrate-build-script-utils = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -substrate-frame-rpc-system = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -substrate-prometheus-endpoint = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -substrate-state-trie-migration-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -substrate-wasm-builder = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } -try-runtime-cli = { git = "https://github.com/ComposableFi/substrate", rev = "f709a3d3b8f116f8b7e92ec56bc1ca5a0409eaa5" } +beefy-gadget = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +beefy-gadget-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +beefy-merkle-tree = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +beefy-primitives = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +fork-tree = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-benchmarking-cli = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-election-provider-support = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-executive = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-support = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-support-procedural = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-support-procedural-tools = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-support-procedural-tools-derive = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-system = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-system-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-system-rpc-runtime-api = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +frame-try-runtime = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-asset-tx-payment = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-assets = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-aura = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-authority-discovery = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-authorship = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-babe = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-bags-list = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-balances = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-beefy = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-beefy-mmr = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-bounties = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-child-bounties = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-collective = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-democracy = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-election-provider-multi-phase = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-election-provider-support-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-elections-phragmen = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-gilt = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-grandpa = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-identity = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-im-online = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-indices = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-membership = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-mmr = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-mmr-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-multisig = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-nomination-pools = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-nomination-pools-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-nomination-pools-runtime-api = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-offences = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-offences-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-preimage = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-proxy = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-randomness-collective-flip = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-recovery = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-scheduler = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-session = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-session-benchmarking = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-society = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-staking = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-staking-reward-curve = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-staking-reward-fn = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-sudo = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-timestamp = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-tips = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-transaction-payment = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-transaction-payment-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-transaction-payment-rpc-runtime-api = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-treasury = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-uniques = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-utility = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +pallet-vesting = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +remote-externalities = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-allocator = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-authority-discovery = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-basic-authorship = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-block-builder = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-chain-spec = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-chain-spec-derive = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-cli = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-client-api = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-client-db = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-consensus = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-consensus-aura = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-consensus-babe = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-consensus-babe-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-consensus-epochs = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-consensus-manual-seal = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-consensus-slots = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-consensus-uncles = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-executor = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-executor-common = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-executor-wasmi = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-executor-wasmtime = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-finality-grandpa = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-finality-grandpa-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-informant = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-keystore = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-network = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-network-gossip = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-offchain = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-peerset = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-proposer-metrics = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-rpc-api = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-rpc-server = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-service = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-state-db = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-sync-state-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-sysinfo = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-telemetry = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-tracing = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-tracing-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-transaction-pool = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-transaction-pool-api = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sc-utils = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-api = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-api-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-application-crypto = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-arithmetic = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-authority-discovery = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-authorship = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-block-builder = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-blockchain = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-consensus = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-consensus-aura = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-consensus-babe = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-consensus-slots = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-consensus-vrf = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-core = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-core-hashing = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-core-hashing-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-database = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-debug-derive = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-externalities = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-finality-grandpa = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-inherents = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-io = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-keyring = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-keystore = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-maybe-compressed-blob = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-mmr-primitives = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-npos-elections = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-offchain = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-panic-handler = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-runtime = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-runtime-interface = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-runtime-interface-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-sandbox = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-serializer = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-session = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-staking = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-state-machine = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-std = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-storage = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-tasks = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-timestamp = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-tracing = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-transaction-pool = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-transaction-storage-proof = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-trie = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-version = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-version-proc-macro = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +sp-wasm-interface = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +substrate-build-script-utils = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +substrate-frame-rpc-system = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +substrate-prometheus-endpoint = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +substrate-state-trie-migration-rpc = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +substrate-wasm-builder = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } +try-runtime-cli = { git = "https://github.com/ComposableFi/substrate", rev = "fd75550a935d69b6a4ee4f8a48767557b4c9e801" } diff --git a/code/parachain/frame/cosmwasm/rpc/Cargo.toml b/code/parachain/frame/cosmwasm/rpc/Cargo.toml new file mode 100644 index 00000000000..0529a2084be --- /dev/null +++ b/code/parachain/frame/cosmwasm/rpc/Cargo.toml @@ -0,0 +1,31 @@ +[package] +authors = ["Composable Developers"] +edition = "2021" +homepage = "https://composable.finance" +name = "cosmwasm-rpc" +rust-version = "1.56" +version = "0.0.1" + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] + +[dependencies] +# substrate primitives +sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" } +sp-blockchain = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" } +sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" } +sp-std = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" } + +# local +cosmwasm-runtime-api = { path = "../runtime-api" } + +# SCALE +codec = { default-features = false, features = [ + "derive", +], package = "parity-scale-codec", version = "3.0.0" } +scale-info = { version = "2.1.1", default-features = false, features = [ + "derive", +] } + +# rpc +jsonrpsee = { version = "0.14.0", features = ["server", "macros"] } diff --git a/code/parachain/frame/cosmwasm/rpc/src/lib.rs b/code/parachain/frame/cosmwasm/rpc/src/lib.rs new file mode 100644 index 00000000000..3216a329117 --- /dev/null +++ b/code/parachain/frame/cosmwasm/rpc/src/lib.rs @@ -0,0 +1,120 @@ +use codec::Codec; +use core::{fmt::Display, str::FromStr}; +use cosmwasm_runtime_api::CosmwasmRuntimeApi; +use jsonrpsee::{ + core::{Error as RpcError, RpcResult}, + proc_macros::rpc, + types::{error::CallError, ErrorObject}, +}; +use sp_api::ProvideRuntimeApi; +use sp_blockchain::HeaderBackend; +use sp_runtime::{generic::BlockId, traits::Block as BlockT}; +use sp_std::{cmp::Ord, collections::btree_map::BTreeMap, sync::Arc}; + +#[allow(clippy::too_many_arguments)] +mod cosmwasm_api { + use super::*; + #[rpc(client, server)] + pub trait CosmwasmApi + where + AccountId: FromStr + Display, + AssetId: FromStr + Display + Ord, + Balance: FromStr + Display, + { + #[method(name = "cosmwasm_query")] + fn query( + &self, + contract: AccountId, + gas: u64, + query_request: Vec, + at: Option, + ) -> RpcResult>; + + #[method(name = "cosmwasm_instantiate")] + fn instantiate( + &self, + instantiator: AccountId, + code_id: u64, + salt: Vec, + admin: Option, + label: Vec, + funds: BTreeMap, + gas: u64, + message: Vec, + at: Option, + ) -> RpcResult; + } +} + +pub use cosmwasm_api::*; + +pub struct Cosmwasm { + client: Arc, + _marker: sp_std::marker::PhantomData, +} + +impl Cosmwasm { + pub fn new(client: Arc) -> Self { + Self { client, _marker: Default::default() } + } +} + +fn runtime_error_into_rpc_error(e: impl Display) -> RpcError { + RpcError::Call(CallError::Custom(ErrorObject::owned( + 9876, // no real reason for this value + format!("{}", e), + None::<()>, + ))) +} + +impl + CosmwasmApiServer<::Hash, AccountId, AssetId, Balance, Error> + for Cosmwasm +where + Block: BlockT, + AccountId: Send + Sync + 'static + Codec + FromStr + Display, + AssetId: Send + Sync + 'static + Codec + FromStr + Display + Ord, + Balance: Send + Sync + 'static + Codec + FromStr + Display, + Error: Send + Sync + 'static + Codec + AsRef<[u8]>, + C: Send + Sync + 'static, + C: ProvideRuntimeApi, + C: HeaderBackend, + C::Api: CosmwasmRuntimeApi, +{ + fn query( + &self, + contract: AccountId, + gas: u64, + query_request: Vec, + at: Option<::Hash>, + ) -> RpcResult> { + let api = self.client.runtime_api(); + let at = BlockId::hash(at.unwrap_or_else(|| self.client.info().best_hash)); + let runtime_api_result = api + .query(&at, contract, gas, query_request) + .map_err(runtime_error_into_rpc_error)?; + runtime_api_result + .map_err(|e| runtime_error_into_rpc_error(String::from_utf8_lossy(e.as_ref()))) + } + + fn instantiate( + &self, + instantiator: AccountId, + code_id: u64, + salt: Vec, + admin: Option, + label: Vec, + funds: BTreeMap, + gas: u64, + message: Vec, + at: Option<::Hash>, + ) -> RpcResult { + let api = self.client.runtime_api(); + let at = BlockId::hash(at.unwrap_or_else(|| self.client.info().best_hash)); + let runtime_api_result = api + .instantiate(&at, instantiator, code_id, salt, admin, label, funds, gas, message) + .map_err(runtime_error_into_rpc_error)?; + runtime_api_result + .map_err(|e| runtime_error_into_rpc_error(String::from_utf8_lossy(e.as_ref()))) + } +} diff --git a/code/parachain/frame/cosmwasm/runtime-api/Cargo.toml b/code/parachain/frame/cosmwasm/runtime-api/Cargo.toml new file mode 100644 index 00000000000..139230b81a1 --- /dev/null +++ b/code/parachain/frame/cosmwasm/runtime-api/Cargo.toml @@ -0,0 +1,21 @@ +[package] +authors = ["Composable Developers"] +edition = "2021" +homepage = "https://composable.finance" +name = "cosmwasm-runtime-api" +rust-version = "1.56" +version = "0.0.1" + +[package.metadata.docs.rs] +targets = ["x86_64-unknown-linux-gnu"] + +[dependencies] +codec = { default-features = false, features = [ + "derive", +], package = "parity-scale-codec", version = "3.0.0" } +sp-api = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" } +sp-std = { default-features = false, git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" } + +[features] +default = ["std"] +std = ["sp-api/std"] diff --git a/code/parachain/frame/cosmwasm/runtime-api/src/lib.rs b/code/parachain/frame/cosmwasm/runtime-api/src/lib.rs new file mode 100644 index 00000000000..42794028ab6 --- /dev/null +++ b/code/parachain/frame/cosmwasm/runtime-api/src/lib.rs @@ -0,0 +1,36 @@ +#![cfg_attr(not(feature = "std"), no_std)] +#![allow(clippy::too_many_arguments)] +#![allow(clippy::unnecessary_mut_passed)] + +use codec::Codec; +use sp_std::collections::btree_map::BTreeMap; +#[cfg(not(feature = "std"))] +use sp_std::vec::Vec; + +// Cosmwasm Runtime API declaration. +sp_api::decl_runtime_apis! { + pub trait CosmwasmRuntimeApi + where + AccountId: Codec, + AssetId: Codec, + Balance: Codec, + Error: Codec + { + fn query( + contract: AccountId, + gas: u64, + query_request: Vec, + ) -> Result, Error>; + + fn instantiate( + instantiator: AccountId, + code_id: u64, + salt: Vec, + admin: Option, + label: Vec, + funds: BTreeMap, + gas: u64, + message: Vec, + ) -> Result; + } +} diff --git a/code/parachain/frame/cosmwasm/src/lib.rs b/code/parachain/frame/cosmwasm/src/lib.rs index efb7a0fd79e..2e44e95010b 100644 --- a/code/parachain/frame/cosmwasm/src/lib.rs +++ b/code/parachain/frame/cosmwasm/src/lib.rs @@ -62,6 +62,7 @@ pub mod pallet { }; use alloc::{ collections::{btree_map::Entry, BTreeMap}, + format, string::String, }; use composable_support::abstractions::{ @@ -77,13 +78,14 @@ pub mod pallet { ContractInfo as CosmwasmContractInfo, Env, Event as CosmwasmEvent, MessageInfo, Timestamp, TransactionInfo, }; + pub use cosmwasm_minimal_std::{QueryRequest, QueryResponse}; use cosmwasm_vm::{ executor::{ AllocateInput, AsFunctionName, DeallocateInput, ExecuteInput, InstantiateInput, MigrateInput, QueryInput, ReplyInput, }, memory::PointerOf, - system::{cosmwasm_system_entrypoint, CosmwasmCodeId}, + system::{cosmwasm_system_entrypoint, cosmwasm_system_query, CosmwasmCodeId}, vm::VmMessageCustomOf, }; use cosmwasm_vm_wasmi::{host_functions, new_wasmi_vm, WasmiImportResolver, WasmiVM}; @@ -404,8 +406,8 @@ pub mod pallet { label, funds, message, - ); - log::debug!(target: "runtime::contracts", "Instantiate Result: {:?}", outcome); + ) + .map(|_| ()); Self::refund_gas(outcome, gas, shared.gas.remaining()) } @@ -535,7 +537,7 @@ pub mod pallet { label: ContractLabelOf, funds: FundsOf, message: ContractMessageOf, - ) -> Result<(), CosmwasmVMError> { + ) -> Result, CosmwasmVMError> { let (contract, info) = Self::do_instantiate_phase1( instantiator.clone(), code_id, @@ -548,11 +550,12 @@ pub mod pallet { shared, EntryPoint::Instantiate, instantiator, - contract, + contract.clone(), info, funds, |vm| cosmwasm_system_entrypoint::(vm, &message), - ) + )?; + Ok(contract) } pub(crate) fn do_extrinsic_execute( @@ -643,6 +646,7 @@ pub mod pallet { initial_gas: u64, remaining_gas: u64, ) -> DispatchResultWithPostInfo { + log::debug!(target: "runtime::contracts", "outcome: {:?}", outcome); let post_info = PostDispatchInfo { actual_weight: Some(initial_gas.saturating_sub(remaining_gas)), pays_fee: Pays::Yes, @@ -1223,6 +1227,82 @@ pub mod pallet { } } + /// Query cosmwasm contracts + /// + /// * `contract` the address of contract to query. + /// * `gas` the maximum gas to use, the remaining is refunded at the end of the transaction. + /// * `query_request` the binary query, which should be deserializable to `QueryRequest`. + pub fn query( + contract: AccountIdOf, + gas: u64, + query_request: Vec, + ) -> Result> { + let mut shared = Pallet::::do_create_vm_shared(gas, InitialStorageMutability::ReadOnly); + let info = Pallet::::contract_info(&contract)?; + let query_request: QueryRequest = serde_json::from_slice(&query_request) + .map_err(|e| CosmwasmVMError::Rpc(format!("{}", e)))?; + Pallet::::cosmwasm_call( + &mut shared, + contract.clone(), + contract, + info, + Default::default(), + |vm| { + cosmwasm_system_query(vm, query_request)? + .into_result() + .map_err(|e| CosmwasmVMError::Rpc(format!("{:?}", e)))? + .into_result() + .map_err(|e| CosmwasmVMError::Rpc(e)) + }, + ) + } + + pub fn instantiate( + instantiator: AccountIdOf, + code_id: CosmwasmCodeId, + salt: Vec, + admin: Option>, + label: Vec, + funds: BTreeMap, (BalanceOf, KeepAlive)>, + gas: u64, + message: Vec, + ) -> Result, CosmwasmVMError> { + let salt: ContractSaltOf = salt + .try_into() + .map_err(|_| CosmwasmVMError::Rpc(String::from("'salt' is too large")))?; + let label: ContractLabelOf = label + .try_into() + .map_err(|_| CosmwasmVMError::Rpc(String::from("'label' is too large")))?; + let funds: FundsOf = funds + .try_into() + .map_err(|_| CosmwasmVMError::Rpc(String::from("'funds' is too large")))?; + let message: ContractMessageOf = message + .try_into() + .map_err(|_| CosmwasmVMError::Rpc(String::from("'message' is too large")))?; + let mut shared = Pallet::::do_create_vm_shared(gas, InitialStorageMutability::ReadWrite); + Pallet::::do_extrinsic_instantiate( + &mut shared, + instantiator, + code_id, + &salt, + admin, + label, + funds, + message, + ) + } + + pub fn execute( + executor: AccountIdOf, + contract: AccountIdOf, + funds: FundsOf, + gas: u64, + message: ContractMessageOf, + ) -> Result<(), CosmwasmVMError> { + let mut shared = Pallet::::do_create_vm_shared(gas, InitialStorageMutability::ReadWrite); + Pallet::::do_extrinsic_execute(&mut shared, executor, contract, funds, message) + } + impl VMPallet for T { type VmError = CosmwasmVMError; } diff --git a/code/parachain/frame/cosmwasm/src/runtimes/wasmi.rs b/code/parachain/frame/cosmwasm/src/runtimes/wasmi.rs index 7e62a36f0ad..d0fbe21a38e 100644 --- a/code/parachain/frame/cosmwasm/src/runtimes/wasmi.rs +++ b/code/parachain/frame/cosmwasm/src/runtimes/wasmi.rs @@ -3,7 +3,9 @@ use crate::{runtimes::abstraction::GasOutcome, Config, ContractInfoOf, Pallet}; use alloc::string::String; use cosmwasm_minimal_std::{Coin, ContractInfoResponse, Empty, Env, MessageInfo}; use cosmwasm_vm::{ - executor::{cosmwasm_call, ExecutorError, InstantiateInput, MigrateInput, QueryInput}, + executor::{ + cosmwasm_call, ExecuteInput, ExecutorError, InstantiateInput, MigrateInput, QueryInput, + }, has::Has, memory::{ MemoryReadError, MemoryWriteError, Pointable, ReadWriteMemory, ReadableMemory, @@ -33,6 +35,7 @@ pub enum CosmwasmVMError { ReadOnlyViolation, OutOfGas, Unsupported, + Rpc(String), } impl core::fmt::Display for CosmwasmVMError { @@ -384,7 +387,7 @@ impl<'a, T: Config> VMBase for CosmwasmVM<'a, T> { let contract = address.into_inner(); let info = Pallet::::contract_info(&contract)?; Pallet::::cosmwasm_call(self.shared, sender, contract, info, funds, |vm| { - cosmwasm_system_run::(vm, message, event_handler) + cosmwasm_system_run::(vm, message, event_handler) }) } diff --git a/code/parachain/node/Cargo.toml b/code/parachain/node/Cargo.toml index b0254b75346..d8a18bbdf98 100644 --- a/code/parachain/node/Cargo.toml +++ b/code/parachain/node/Cargo.toml @@ -32,6 +32,8 @@ pallet-crowdloan-rewards = { path = "../frame/crowdloan-rewards" } assets-rpc = { path = "../frame/assets/rpc" } assets-runtime-api = { path = "../frame/assets/runtime-api" } +cosmwasm-rpc = { path = "../frame/cosmwasm/rpc" } +cosmwasm-runtime-api = { path = "../frame/cosmwasm/runtime-api" } crowdloan-rewards-rpc = { path = "../frame/crowdloan-rewards/rpc" } crowdloan-rewards-runtime-api = { path = "../frame/crowdloan-rewards/runtime-api" } lending-rpc = { path = "../frame/lending/rpc" } @@ -39,6 +41,7 @@ lending-runtime-api = { path = "../frame/lending/runtime-api" } pablo-rpc = { path = "../frame/pablo/rpc" } pablo-runtime-api = { path = "../frame/pablo/runtime-api" } + # FRAME Dependencies frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" } frame-benchmarking-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" } diff --git a/code/parachain/node/src/rpc.rs b/code/parachain/node/src/rpc.rs index 98d400841c3..f7da6933833 100644 --- a/code/parachain/node/src/rpc.rs +++ b/code/parachain/node/src/rpc.rs @@ -20,9 +20,9 @@ use sp_runtime::traits::BlakeTwo256; use crate::{ client::{FullBackend, FullClient}, runtime::{ - assets::ExtendWithAssetsApi, crowdloan_rewards::ExtendWithCrowdloanRewardsApi, - ibc::ExtendWithIbcApi, lending::ExtendWithLendingApi, pablo::ExtendWithPabloApi, - BaseHostRuntimeApis, + assets::ExtendWithAssetsApi, cosmwasm::ExtendWithCosmwasmApi, + crowdloan_rewards::ExtendWithCrowdloanRewardsApi, ibc::ExtendWithIbcApi, + lending::ExtendWithLendingApi, pablo::ExtendWithPabloApi, BaseHostRuntimeApis, }, }; @@ -66,7 +66,8 @@ where + ExtendWithCrowdloanRewardsApi + ExtendWithPabloApi + ExtendWithLendingApi - + ExtendWithIbcApi, + + ExtendWithIbcApi + + ExtendWithCosmwasmApi, { use pallet_transaction_payment_rpc::{TransactionPayment, TransactionPaymentApiServer}; use substrate_frame_rpc_system::{System, SystemApiServer}; @@ -98,6 +99,11 @@ where )?; as ProvideRuntimeApi>::Api::extend_with_ibc_api( + &mut io, + deps.clone(), + )?; + + as ProvideRuntimeApi>::Api::extend_with_cosmwasm_api( &mut io, deps, )?; diff --git a/code/parachain/node/src/runtime.rs b/code/parachain/node/src/runtime.rs index 56e3f78f6f3..1cc0f39754d 100644 --- a/code/parachain/node/src/runtime.rs +++ b/code/parachain/node/src/runtime.rs @@ -1,5 +1,6 @@ use assets_rpc::{Assets, AssetsApiServer}; use common::{AccountId, Balance, Index, OpaqueBlock}; +use cosmwasm_rpc::{Cosmwasm, CosmwasmApiServer}; use crowdloan_rewards_rpc::{CrowdloanRewards, CrowdloanRewardsApiServer}; use cumulus_primitives_core::CollectCollationInfo; use ibc_rpc::{IbcApiServer, IbcRpcHandler}; @@ -241,4 +242,22 @@ define_trait! { } } } + + mod cosmwasm { + pub trait ExtendWithCosmwasmApi { + fn extend_with_cosmwasm_api(io, deps) ; + } + + #[cfg(feature = "composable")] + impl for composable_runtime {} + + impl for picasso_runtime {} + + #[cfg(feature = "dali")] + impl for dali_runtime { + fn (io, deps) { + io.merge(Cosmwasm::new(deps.client).into_rpc()) + } + } + } } diff --git a/code/parachain/node/src/service.rs b/code/parachain/node/src/service.rs index 1e84cfeb5ca..04ebeb3122c 100644 --- a/code/parachain/node/src/service.rs +++ b/code/parachain/node/src/service.rs @@ -30,9 +30,9 @@ use crate::{ client::{Client, FullBackend, FullClient}, rpc, runtime::{ - assets::ExtendWithAssetsApi, crowdloan_rewards::ExtendWithCrowdloanRewardsApi, - ibc::ExtendWithIbcApi, lending::ExtendWithLendingApi, pablo::ExtendWithPabloApi, - BaseHostRuntimeApis, + assets::ExtendWithAssetsApi, cosmwasm::ExtendWithCosmwasmApi, + crowdloan_rewards::ExtendWithCrowdloanRewardsApi, ibc::ExtendWithIbcApi, + lending::ExtendWithLendingApi, pablo::ExtendWithPabloApi, BaseHostRuntimeApis, }, }; @@ -287,7 +287,8 @@ where + ExtendWithCrowdloanRewardsApi + ExtendWithPabloApi + ExtendWithLendingApi - + ExtendWithIbcApi, + + ExtendWithIbcApi + + ExtendWithCosmwasmApi, StateBackendFor: StateBackend, Executor: NativeExecutionDispatch + 'static, { diff --git a/code/parachain/runtime/dali/Cargo.toml b/code/parachain/runtime/dali/Cargo.toml index 3a30ddf0e10..72ed115990d 100644 --- a/code/parachain/runtime/dali/Cargo.toml +++ b/code/parachain/runtime/dali/Cargo.toml @@ -109,6 +109,7 @@ transaction-payment-rpc-runtime-api = { package = "pallet-transaction-payment-rp # local RPCs assets-runtime-api = { path = '../../frame/assets/runtime-api', default-features = false } +cosmwasm-runtime-api = { path = '../../frame/cosmwasm/runtime-api', default-features = false } crowdloan-rewards-runtime-api = { path = '../../frame/crowdloan-rewards/runtime-api', default-features = false } lending-runtime-api = { path = '../../frame/lending/runtime-api', default-features = false } pablo-runtime-api = { path = '../../frame/pablo/runtime-api', default-features = false } @@ -303,5 +304,6 @@ std = [ "xcm-executor/std", "xcm/std", "cosmwasm/std", + "cosmwasm-runtime-api/std", "asset-tx-payment/std", ] diff --git a/code/parachain/runtime/dali/src/lib.rs b/code/parachain/runtime/dali/src/lib.rs index 6d972fff823..0543dc9f31e 100644 --- a/code/parachain/runtime/dali/src/lib.rs +++ b/code/parachain/runtime/dali/src/lib.rs @@ -1544,6 +1544,45 @@ impl_runtime_apis! { } } + impl cosmwasm_runtime_api::CosmwasmRuntimeApi> for Runtime { + fn query( + contract: AccountId, + gas: u64, + query_request: Vec, + ) -> Result, Vec>{ + match cosmwasm::query::( + contract, + gas, + query_request, + ) { + Ok(response) => Ok(response.0), + Err(err) => Err(alloc::format!("{:?}", err).into_bytes()) + } + } + + fn instantiate( + instantiator: AccountId, + code_id: u64, + salt: Vec, + admin: Option, + label: Vec, + funds: BTreeMap, + gas: u64, + message: Vec, + ) -> Result> { + cosmwasm::instantiate::( + instantiator, + code_id, + salt, + admin, + label, + funds, + gas, + message + ).map_err(|err| alloc::format!("{:?}", err).into_bytes()) + } + } + impl sp_api::Core for Runtime { fn version() -> RuntimeVersion { VERSION diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/Cargo.toml b/code/xcvm/cosmwasm/contracts/asset-registry/Cargo.toml new file mode 100644 index 00000000000..d4299f8a319 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/Cargo.toml @@ -0,0 +1,28 @@ +[package] +authors = ["Composable Developers"] +edition = "2021" +name = "xcvm-asset-registry" +version = "0.1.0" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "xcvm-asset-registry.wasm", + "hash.txt", +] + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[dependencies] +cosmwasm-std = "1.0.0" +cw-storage-plus = "0.13.2" +schemars = "0.8.8" +serde = { version = "1.0.137", default-features = false, features = ["derive"] } +thiserror = { version = "1.0.31" } + +[dev-dependencies] +cosmwasm-schema = "1.0.0" diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/README.md b/code/xcvm/cosmwasm/contracts/asset-registry/README.md new file mode 100644 index 00000000000..128f50107a2 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/README.md @@ -0,0 +1,22 @@ +# Asset Registry Contract + +Asset registry is used by XCVM interpreter to get the contract address of a given asset. + +Asset mapping can be updated by using `SetAssets(BTreeMap)` execute message where keys are asset id's(which must be valid `u32` integers) and values are contract addresses. + +A contract address can be queried by using `GetAssetContract(u32)` where `u32` is an asset id. + +## Compile + +```sh +RUSTFLAGS='-C link-arg=-s' cargo b --package=xcvm-asset-registry --target=wasm32-unknown-unknown --profile="cosmwasm-contracts" +``` + +* `-C link-arg=-s` is used for stripping the binary which reduces the binary size drastically. +* `--profile="cosmwasm-contracts"` must be used for cosmwasm contracts. + +## Test + +```sh +cargo test --package="xcvm-asset-registry" +``` diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/examples/schema.rs b/code/xcvm/cosmwasm/contracts/asset-registry/examples/schema.rs new file mode 100644 index 00000000000..22dc89b488e --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/examples/schema.rs @@ -0,0 +1,16 @@ +use std::{env::current_dir, fs::create_dir_all}; + +use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; + +use xcvm_asset_registry::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; + +fn main() { + let mut out_dir = current_dir().unwrap(); + out_dir.push("schema"); + create_dir_all(&out_dir).unwrap(); + remove_schemas(&out_dir).unwrap(); + + export_schema(&schema_for!(InstantiateMsg), &out_dir); + export_schema(&schema_for!(ExecuteMsg), &out_dir); + export_schema(&schema_for!(QueryMsg), &out_dir); +} diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/schema/execute_msg.json b/code/xcvm/cosmwasm/contracts/asset-registry/schema/execute_msg.json new file mode 100644 index 00000000000..a67ba283836 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/schema/execute_msg.json @@ -0,0 +1,21 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "set_assets" + ], + "properties": { + "set_assets": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "additionalProperties": false + } + ] +} diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/schema/instantiate_msg.json b/code/xcvm/cosmwasm/contracts/asset-registry/schema/instantiate_msg.json new file mode 100644 index 00000000000..44588cf2267 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/schema/instantiate_msg.json @@ -0,0 +1,5 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "type": "object" +} diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/schema/query_msg.json b/code/xcvm/cosmwasm/contracts/asset-registry/schema/query_msg.json new file mode 100644 index 00000000000..2a08ff8f087 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/schema/query_msg.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "get_asset_contract" + ], + "properties": { + "get_asset_contract": { + "type": "integer", + "format": "uint128", + "minimum": 0.0 + } + }, + "additionalProperties": false + } + ] +} diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/src/contract.rs b/code/xcvm/cosmwasm/contracts/asset-registry/src/contract.rs new file mode 100644 index 00000000000..9f13507c8c9 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/src/contract.rs @@ -0,0 +1,163 @@ +use crate::{ + error::ContractError, + msg::{ExecuteMsg, GetAssetContractResponse, InstantiateMsg, QueryMsg}, + state::{XcvmAssetId, ASSETS}, +}; +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + to_binary, Binary, Deps, DepsMut, Env, Event, MessageInfo, Response, StdResult, +}; +use std::collections::BTreeMap; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + _deps: DepsMut, + _env: Env, + _info: MessageInfo, + _msg: InstantiateMsg, +) -> Result { + Ok(Response::default().add_event(Event::new("xcvm.registry.instantiated"))) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::SetAssets(asset) => handle_set_assets(deps, asset), + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { + match msg { + QueryMsg::GetAssetContract(token_id) => to_binary(&query_asset_contract(deps, token_id)?), + } +} + +pub fn handle_set_assets( + deps: DepsMut, + assets: BTreeMap, +) -> Result { + // Remove all keys + for key in ASSETS + .keys(deps.storage, None, None, cosmwasm_std::Order::Ascending) + .collect::, _>>()? + { + ASSETS.remove(deps.storage, key); + } + + for (asset_id, contract_addr) in assets { + let addr = deps.api.addr_validate(&contract_addr)?; + ASSETS.save(deps.storage, asset_id.parse::().unwrap(), &addr)?; + } + + Ok(Response::new().add_event(Event::new("xcvm.registry.updated"))) +} + +pub fn query_asset_contract( + deps: Deps, + token_id: XcvmAssetId, +) -> StdResult { + let contract_addr = ASSETS.load(deps.storage, token_id)?; + Ok(GetAssetContractResponse { addr: contract_addr }) +} + +#[cfg(test)] +mod tests { + use super::*; + use cosmwasm_std::{ + from_binary, + testing::{mock_dependencies, mock_env, mock_info}, + Addr, Order, Storage, + }; + + #[test] + fn proper_instantiation() { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg {}; + let info = mock_info("sender", &vec![]); + + let res = instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + assert_eq!(0, res.messages.len()); + + // Make sure that the storage is empty + assert_eq!(deps.storage.range(None, None, Order::Ascending).next(), None); + } + + #[test] + fn set_assets() { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg {}; + let info = mock_info("sender", &vec![]); + + let _ = instantiate(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); + + let mut assets = BTreeMap::new(); + assets.insert("1".into(), "addr1".into()); + assets.insert("2".into(), "addr2".into()); + + let res = + execute(deps.as_mut(), mock_env(), info.clone(), ExecuteMsg::SetAssets(assets.clone())) + .unwrap(); + assert_eq!(res.attributes.len(), 0); + + assert_eq!(ASSETS.load(&deps.storage, 1).unwrap(), Addr::unchecked("addr1")); + assert_eq!(ASSETS.load(&deps.storage, 2).unwrap(), Addr::unchecked("addr2")); + + let mut assets = BTreeMap::new(); + assets.insert("3".into(), "addr3".into()); + assets.insert("4".into(), "addr4".into()); + + let _ = execute(deps.as_mut(), mock_env(), info, ExecuteMsg::SetAssets(assets.clone())) + .unwrap(); + + // Make sure that set removes the previous elements + assert!(ASSETS.load(&deps.storage, 1).is_err()); + assert!(ASSETS.load(&deps.storage, 2).is_err()); + assert_eq!(ASSETS.load(&deps.storage, 3).unwrap(), Addr::unchecked("addr3")); + assert_eq!(ASSETS.load(&deps.storage, 4).unwrap(), Addr::unchecked("addr4")); + + // Finally make sure that there are two elements in the assets storage + assert_eq!( + ASSETS + .keys(&deps.storage, None, None, Order::Ascending) + .collect::>() + .len(), + 2 + ); + } + + #[test] + fn query_assets() { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg {}; + let info = mock_info("sender", &vec![]); + + let _ = instantiate(deps.as_mut(), mock_env(), info.clone(), msg).unwrap(); + + let mut assets = BTreeMap::new(); + assets.insert("1".into(), "addr1".into()); + + let _ = + execute(deps.as_mut(), mock_env(), info.clone(), ExecuteMsg::SetAssets(assets.clone())) + .unwrap(); + + let res: GetAssetContractResponse = + from_binary(&query(deps.as_ref(), mock_env(), QueryMsg::GetAssetContract(1)).unwrap()) + .unwrap(); + + // Query should return the corresponding address + assert_eq!(res, GetAssetContractResponse { addr: Addr::unchecked("addr1") }); + + // This should fail since there the asset doesn't exist + assert!(query(deps.as_ref(), mock_env(), QueryMsg::GetAssetContract(2)).is_err()); + } +} diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/src/error.rs b/code/xcvm/cosmwasm/contracts/asset-registry/src/error.rs new file mode 100644 index 00000000000..d32e4b26dc4 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/src/error.rs @@ -0,0 +1,8 @@ +use cosmwasm_std::StdError; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), +} diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/src/helpers.rs b/code/xcvm/cosmwasm/contracts/asset-registry/src/helpers.rs new file mode 100644 index 00000000000..84177f8099d --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/src/helpers.rs @@ -0,0 +1,22 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use cosmwasm_std::{to_binary, Addr, CosmosMsg, StdResult, WasmMsg}; + +use crate::msg::ExecuteMsg; + +/// AssetRegistryContract is a wrapper around Addr that provides helpers +/// for working with this as a library. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct AssetRegistryContract(pub Addr); + +impl AssetRegistryContract { + pub fn addr(&self) -> &Addr { + &self.0 + } + + pub fn call>(&self, msg: T) -> StdResult { + let msg = to_binary(&msg.into())?; + Ok(WasmMsg::Execute { contract_addr: self.addr().into(), msg, funds: vec![] }.into()) + } +} diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/src/lib.rs b/code/xcvm/cosmwasm/contracts/asset-registry/src/lib.rs new file mode 100644 index 00000000000..233dbf5572f --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/src/lib.rs @@ -0,0 +1,7 @@ +pub mod contract; +mod error; +pub mod helpers; +pub mod msg; +pub mod state; + +pub use crate::error::ContractError; diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/src/msg.rs b/code/xcvm/cosmwasm/contracts/asset-registry/src/msg.rs new file mode 100644 index 00000000000..61c9a37dc44 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/src/msg.rs @@ -0,0 +1,27 @@ +use std::collections::BTreeMap; + +use cosmwasm_std::Addr; +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use crate::state::XcvmAssetId; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct InstantiateMsg {} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + SetAssets(BTreeMap), +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum QueryMsg { + GetAssetContract(XcvmAssetId), +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct GetAssetContractResponse { + pub addr: Addr, +} diff --git a/code/xcvm/cosmwasm/contracts/asset-registry/src/state.rs b/code/xcvm/cosmwasm/contracts/asset-registry/src/state.rs new file mode 100644 index 00000000000..cd512a05684 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/asset-registry/src/state.rs @@ -0,0 +1,6 @@ +use cosmwasm_std::Addr; +use cw_storage_plus::Map; + +pub type XcvmAssetId = u128; + +pub const ASSETS: Map = Map::new("assets"); diff --git a/code/xcvm/cosmwasm/contracts/interpreter/Cargo.toml b/code/xcvm/cosmwasm/contracts/interpreter/Cargo.toml new file mode 100644 index 00000000000..7d683c719e4 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/Cargo.toml @@ -0,0 +1,37 @@ +[package] +authors = ["Composable Developers"] +description = "XCVM interpreter contract" +edition = "2021" +license = "Apache-2.0" +name = "xcvm-interpreter" +repository = "https://github.com/ComposableFi/composable" +version = "0.1.0" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "xcvm-interpreter.wasm", + "hash.txt", +] + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[dependencies] +cosmwasm-std = { version = "1.0.0" } +cw-storage-plus = "0.13.2" +cw20 = "0.13.2" +num = "0.4" +schemars = "0.8.8" +serde = { version = "1.0.137", default-features = false, features = ["derive"] } +serde-json-wasm = { git = "https://github.com/hussein-aitlahcen/serde-json-wasm", rev = "1608a13d2a2ba90605d9626a51ff6667aca5a2d6" } +serde_json = "1" +thiserror = { version = "1.0.31" } +xcvm-asset-registry = { path = "../asset-registry", features = ["library"] } +xcvm-core = { path = "../../../lib/core", features = ["std"] } + +[dev-dependencies] +cosmwasm-schema = "1.0.0" diff --git a/code/xcvm/cosmwasm/contracts/interpreter/README.md b/code/xcvm/cosmwasm/contracts/interpreter/README.md new file mode 100644 index 00000000000..395e5ca8b06 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/README.md @@ -0,0 +1,96 @@ +# XCVM Interpreter + +## Events + +Note that these events will be yield from the router in production. + +### Instantiate contract +```json +{ + "type": "wasm-xcvm.interpreter.instantiated", + "attributes": [ + { + "key": "data", + "value": "{BASE64_ENCODED_DATA}" + } + ] +} +``` + +- **BASE64_ENCODED_DATA**: base64 encoded `(network_id, user_id)` pair. + +### Execute contract +```json +{ + "type": "wasm-xcvm.interpreter.executed", + "attributes": [ + { + "key": "program", + "value": "{XCVM_PROGRAM_TAG}" + } + ] +} +``` + +- **XCVM_PROGRAM_TAG**: Tag of the executed XCVM program + +### Execute spawn instruction + +```json +{ + "type": "wasm-xcvm.interpreter.spawn", + "attributes": [ + { + "key": "origin_network_id", + "value": "{ORIGIN_NETWORK_ID}" + }, + { + "key": "origin_user_id", + "value": "{ORIGIN_USER_ID}" + }, + { + "key": "program", + "value": "{XCVM_PROGRAM}" + } + ] +} +``` + +- **ORIGIN_NETWORK_ID**: Network id of the origin. Eg. Picasso, Ethereum +- **ORIGIN_USER_ID**: Chain agnostic user identifier of the origin. Eg. contract_address in Juno +- **XCVM_PROGRAM**: Json-encoded xcvm program. Note that although it is json-encoded, it is put as a string because of the restrictions of cosmwasm. + +## Usage + +The XCVM interpreter contract interprets the XCVM programs. Available instructions are: + + +### Call +Which is used to call a contract. See that the encoded payload must be in a format: +``` +{ + "address": "contract-addr", + "payload": "json-encoded ExecuteMsg struct" +} +``` + +### Transfer +Queries `asset-registry`, gets the contract address and then executes that contract to do the transfer. + +### Spawn +Emits `spawn` event with the given parameters. + +## Compile + +```sh +RUSTFLAGS='-C link-arg=-s' cargo b --package=xcvm-interpreter --target=wasm32-unknown-unknown --profile="cosmwasm-contracts" +``` + +* `-C link-arg=-s` is used for stripping the binary which reduces the binary size drastically. +* `--profile="cosmwasm-contracts"` must be used for cosmwasm contracts. + +## Test + +```sh +cargo test --package="xcvm-interpreter" +``` diff --git a/code/xcvm/cosmwasm/contracts/interpreter/examples/schema.rs b/code/xcvm/cosmwasm/contracts/interpreter/examples/schema.rs new file mode 100644 index 00000000000..fcccb821525 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/examples/schema.rs @@ -0,0 +1,15 @@ +use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; +use std::{env::current_dir, fs::create_dir_all}; + +use xcvm_interpreter::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; + +fn main() { + let mut out_dir = current_dir().unwrap(); + out_dir.push("schema"); + create_dir_all(&out_dir).unwrap(); + remove_schemas(&out_dir).unwrap(); + + export_schema(&schema_for!(InstantiateMsg), &out_dir); + export_schema(&schema_for!(ExecuteMsg), &out_dir); + export_schema(&schema_for!(QueryMsg), &out_dir); +} diff --git a/code/xcvm/cosmwasm/contracts/interpreter/schema/execute_msg.json b/code/xcvm/cosmwasm/contracts/interpreter/schema/execute_msg.json new file mode 100644 index 00000000000..6789bb9ffda --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/schema/execute_msg.json @@ -0,0 +1,178 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "program" + ], + "properties": { + "program": { + "$ref": "#/definitions/Program_for_Array_of_Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount" + } + } + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Amount": { + "description": "See https://en.wikipedia.org/wiki/Linear_equation#Slope%E2%80%93intercept_form_or_Gradient-intercept_form", + "type": "object", + "required": [ + "intercept", + "slope" + ], + "properties": { + "intercept": { + "$ref": "#/definitions/Displayed_for_uint128" + }, + "slope": { + "$ref": "#/definitions/Displayed_for_uint128" + } + } + }, + "Displayed_for_uint128": { + "type": "integer", + "format": "uint128", + "minimum": 0.0 + }, + "Funds_for_Amount": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Amount" + } + }, + "Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount": { + "description": "Base XCVM instructions. This set will remain as small as possible, expressiveness must come on `top` of the base instructions.", + "oneOf": [ + { + "description": "Transfer some [`Assets`] from the current program to the [`to`] account.", + "type": "object", + "required": [ + "transfer" + ], + "properties": { + "transfer": { + "type": "object", + "required": [ + "assets", + "to" + ], + "properties": { + "assets": { + "$ref": "#/definitions/Funds_for_Amount" + }, + "to": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Arbitrary payload representing a raw call inside the current [`Network`].\n\nOn picasso, this will be a SCALE encoded dispatch call. On ethereum, an ethereum ABI encoded call. On cosmos, a raw json WasmMsg call.\n\nDepending on the network, the payload might be more structured than the base call. For most of the network in fact, we need to provide the target address along the payload, which can be encoded inside this single payload.", + "type": "object", + "required": [ + "call" + ], + "properties": { + "call": { + "type": "object", + "required": [ + "encoded" + ], + "properties": { + "encoded": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Spawn a sub-program on the target `network`.\n\nThe program will be spawned with the desired [`Assets`]. The salt is used to track the program when events are dispatched in the network.", + "type": "object", + "required": [ + "spawn" + ], + "properties": { + "spawn": { + "type": "object", + "required": [ + "assets", + "network", + "program", + "salt" + ], + "properties": { + "assets": { + "$ref": "#/definitions/Funds_for_Amount" + }, + "network": { + "$ref": "#/definitions/NetworkId" + }, + "program": { + "$ref": "#/definitions/Program_for_Array_of_Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount" + }, + "salt": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + } + }, + "additionalProperties": false + } + ] + }, + "NetworkId": { + "description": "Newtype for XCVM networks ID. Must be unique for each network and must never change. This ID is an opaque, arbitrary type from the XCVM protocol and no assumption must be made on how it is computed.", + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "Program_for_Array_of_Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount": { + "type": "object", + "required": [ + "instructions", + "tag" + ], + "properties": { + "instructions": { + "type": "array", + "items": { + "$ref": "#/definitions/Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount" + } + }, + "tag": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + } + } +} diff --git a/code/xcvm/cosmwasm/contracts/interpreter/schema/instantiate_msg.json b/code/xcvm/cosmwasm/contracts/interpreter/schema/instantiate_msg.json new file mode 100644 index 00000000000..1d8b6cabb7d --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/schema/instantiate_msg.json @@ -0,0 +1,34 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "type": "object", + "required": [ + "network_id", + "registry_address", + "user_id" + ], + "properties": { + "network_id": { + "$ref": "#/definitions/NetworkId" + }, + "registry_address": { + "type": "string" + }, + "user_id": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + }, + "definitions": { + "NetworkId": { + "description": "Newtype for XCVM networks ID. Must be unique for each network and must never change. This ID is an opaque, arbitrary type from the XCVM protocol and no assumption must be made on how it is computed.", + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } +} diff --git a/code/xcvm/cosmwasm/contracts/interpreter/schema/query_msg.json b/code/xcvm/cosmwasm/contracts/interpreter/schema/query_msg.json new file mode 100644 index 00000000000..0f592a1af0d --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/schema/query_msg.json @@ -0,0 +1,6 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "type": "string", + "enum": [] +} diff --git a/code/xcvm/cosmwasm/contracts/interpreter/src/contract.rs b/code/xcvm/cosmwasm/contracts/interpreter/src/contract.rs new file mode 100644 index 00000000000..91f6a785e77 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/src/contract.rs @@ -0,0 +1,428 @@ +use crate::{ + error::ContractError, + msg::{ExecuteMsg, InstantiateMsg, QueryMsg, XCVMInstruction, XCVMProgram}, + state::{Config, CONFIG}, +}; +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + to_binary, wasm_execute, Binary, CosmosMsg, Deps, DepsMut, Env, Event, MessageInfo, + QueryRequest, Response, StdError, StdResult, WasmQuery, +}; +use cw20::{BalanceResponse, Cw20Contract, Cw20ExecuteMsg, Cw20QueryMsg}; +use num::Zero; +use serde::Serialize; +use std::collections::VecDeque; +use xcvm_asset_registry::msg::{GetAssetContractResponse, QueryMsg as AssetRegistryQueryMsg}; +use xcvm_core::{Displayed, Funds, Instruction, NetworkId}; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + let registry_address = deps.api.addr_validate(&msg.registry_address)?; + let config = + Config { registry_address, network_id: msg.network_id, user_id: msg.user_id.clone() }; + CONFIG.save(deps.storage, &config)?; + + Ok(Response::new().add_event( + Event::new("xcvm.interpreter.instantiated").add_attribute( + "data", + to_binary(&(msg.network_id.0, msg.user_id))?.to_base64().as_str(), + ), + )) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::Execute { program } => interpret_program(deps, env, info, program), + } +} + +pub fn interpret_program( + mut deps: DepsMut, + env: Env, + _info: MessageInfo, + program: XCVMProgram, +) -> Result { + let mut response = Response::new(); + let instruction_len = program.instructions.len(); + let mut instruction_iter = program.instructions.into_iter().enumerate(); + while let Some((index, instruction)) = instruction_iter.next() { + response = match instruction { + Instruction::Call { encoded } => + if index >= instruction_len - 1 { + interpret_call(encoded, response)? + } else { + let response = interpret_call(encoded, response)?; + let instructions: VecDeque = + instruction_iter.map(|(_, instr)| instr).collect(); + let program = XCVMProgram { tag: program.tag, instructions }; + return Ok(response.add_message(wasm_execute( + env.contract.address, + &ExecuteMsg::Execute { program }, + vec![], + )?)) + }, + Instruction::Spawn { network, salt, assets, program } => + interpret_spawn(&deps, &env, network, salt, assets, program, response)?, + Instruction::Transfer { to, assets } => + interpret_transfer(&mut deps, &env, to, assets, response)?, + }; + } + + Ok(response.add_event(Event::new("xcvm.interpreter.executed").add_attribute( + "program", + core::str::from_utf8(&program.tag).map_err(|_| ContractError::InvalidProgramTag)?, + ))) +} + +pub fn interpret_call(encoded: Vec, response: Response) -> Result { + let cosmos_msg: CosmosMsg = + serde_json_wasm::from_slice(&encoded).map_err(|_| ContractError::InvalidCallPayload)?; + + Ok(response.add_message(cosmos_msg)) +} + +pub fn interpret_spawn( + deps: &DepsMut, + env: &Env, + network: NetworkId, + salt: Vec, + assets: Funds, + program: XCVMProgram, + mut response: Response, +) -> Result { + #[derive(Serialize)] + struct SpawnEvent { + network: NetworkId, + salt: Vec, + assets: Funds>, + program: XCVMProgram, + } + + let config = CONFIG.load(deps.storage)?; + let registry_addr = config.registry_address.into_string(); + let mut normalized_funds = Funds::>::empty(); + + for (asset_id, amount) in assets.0 { + if amount.is_zero() { + // We ignore zero amounts + continue + } + + let amount = if amount.slope.0 == 0 { + // No need to get balance from cw20 contract + amount.intercept + } else { + let query_msg = AssetRegistryQueryMsg::GetAssetContract(asset_id.into()); + + let cw20_address: GetAssetContractResponse = deps.querier.query( + &WasmQuery::Smart { + contract_addr: registry_addr.clone(), + msg: to_binary(&query_msg)?, + } + .into(), + )?; + let response = + deps.querier.query::(&QueryRequest::Wasm(WasmQuery::Smart { + contract_addr: cw20_address.addr.clone().into_string(), + msg: to_binary(&Cw20QueryMsg::Balance { + address: env.contract.address.clone().into_string(), + })?, + }))?; + amount.apply(response.balance.into()).into() + }; + + if amount.0 > 0 { + normalized_funds.0.insert(asset_id, amount.into()); + } + } + + // TODO(probably call the router via a Cw20 `send` to spawn the program and do w/e required with + // the funds) + for (asset_id, amount) in normalized_funds.clone().0 { + let query_msg = AssetRegistryQueryMsg::GetAssetContract(asset_id.into()); + let cw20_address: GetAssetContractResponse = deps.querier.query( + &WasmQuery::Smart { contract_addr: registry_addr.clone(), msg: to_binary(&query_msg)? } + .into(), + )?; + let contract = Cw20Contract(cw20_address.addr); + response = + response.add_message(contract.call(Cw20ExecuteMsg::Burn { amount: amount.0.into() })?); + } + + let data = SpawnEvent { network, salt, assets: normalized_funds, program }; + + Ok(response.add_event( + Event::new("xcvm.interpreter.spawn") + .add_attribute( + "origin_network_id", + serde_json_wasm::to_string(&config.network_id.0) + .map_err(|_| ContractError::DataSerializationError)?, + ) + .add_attribute( + "origin_user_id", + serde_json_wasm::to_string(&config.user_id) + .map_err(|_| ContractError::DataSerializationError)?, + ) + .add_attribute( + "program", + serde_json_wasm::to_string(&data) + .map_err(|_| ContractError::DataSerializationError)?, + ), + )) +} + +pub fn interpret_transfer( + deps: &mut DepsMut, + env: &Env, + to: String, + assets: Funds, + mut response: Response, +) -> Result { + let config = CONFIG.load(deps.storage)?; + let registry_addr = config.registry_address.into_string(); + + for (asset_id, amount) in assets.0 { + let query_msg = AssetRegistryQueryMsg::GetAssetContract(asset_id.into()); + + let cw20_address: GetAssetContractResponse = deps.querier.query( + &WasmQuery::Smart { contract_addr: registry_addr.clone(), msg: to_binary(&query_msg)? } + .into(), + )?; + let contract = Cw20Contract(cw20_address.addr.clone()); + + if amount.is_zero() { + continue + } + + let transfer_amount = { + let response = + deps.querier.query::(&QueryRequest::Wasm(WasmQuery::Smart { + contract_addr: cw20_address.addr.clone().into_string(), + msg: to_binary(&Cw20QueryMsg::Balance { + address: env.contract.address.clone().into_string(), + })?, + }))?; + amount.apply(response.balance.into()) + }; + + response = response.add_message(contract.call(Cw20ExecuteMsg::Transfer { + recipient: to.clone(), + amount: transfer_amount.into(), + })?); + } + + Ok(response) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(_deps: Deps, _env: Env, _msg: QueryMsg) -> StdResult { + Err(StdError::generic_err("not implemented")) +} + +#[cfg(test)] +mod tests { + use std::collections::BTreeMap; + + use crate::msg::XCVMInstruction; + + use super::*; + use cosmwasm_std::{ + testing::{mock_dependencies, mock_env, mock_info, MockQuerier}, + wasm_execute, Addr, ContractResult, QuerierResult, SystemResult, + }; + use xcvm_core::{Amount, AssetId, Picasso, ETH, PICA}; + + const CW20_ADDR: &str = "cw20addr"; + const REGISTRY_ADDR: &str = "registryaddr"; + + #[test] + fn proper_instantiation() { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg { + registry_address: "addr".to_string(), + network_id: Picasso.into(), + user_id: vec![], + }; + let info = mock_info("sender", &vec![]); + + let res = instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + assert_eq!(0, res.messages.len()); + + // Make sure that the storage is empty + assert_eq!( + CONFIG.load(&deps.storage).unwrap(), + Config { + registry_address: Addr::unchecked("addr"), + network_id: Picasso.into(), + user_id: vec![] + } + ); + } + + fn wasm_querier(query: &WasmQuery) -> QuerierResult { + match query { + WasmQuery::Smart { contract_addr, .. } if contract_addr.as_str() == CW20_ADDR => + SystemResult::Ok(ContractResult::Ok( + to_binary(&cw20::BalanceResponse { balance: 100000_u128.into() }).unwrap(), + )), + WasmQuery::Smart { contract_addr, .. } if contract_addr.as_str() == REGISTRY_ADDR => + SystemResult::Ok(ContractResult::Ok( + to_binary(&xcvm_asset_registry::msg::GetAssetContractResponse { + addr: Addr::unchecked(CW20_ADDR), + }) + .unwrap(), + )) + .into(), + _ => panic!("Unhandled query"), + } + } + + #[test] + fn execute_transfer() { + let mut deps = mock_dependencies(); + let mut querier = MockQuerier::default(); + querier.update_wasm(wasm_querier); + deps.querier = querier; + + let info = mock_info("sender", &vec![]); + let _ = instantiate( + deps.as_mut(), + mock_env(), + info.clone(), + InstantiateMsg { + registry_address: REGISTRY_ADDR.into(), + network_id: Picasso.into(), + user_id: vec![], + }, + ) + .unwrap(); + + let program = XCVMProgram { + tag: vec![], + instructions: vec![XCVMInstruction::Transfer { + to: "asset".into(), + assets: Funds::from([ + (Into::::into(PICA), Amount::absolute(1)), + (ETH.into(), Amount::absolute(2)), + ]), + }] + .into(), + }; + + let res = execute(deps.as_mut(), mock_env(), info.clone(), ExecuteMsg::Execute { program }) + .unwrap(); + let contract = Cw20Contract(Addr::unchecked(CW20_ADDR)); + let messages = vec![ + contract + .call(Cw20ExecuteMsg::Transfer { recipient: "asset".into(), amount: 1_u128.into() }) + .unwrap(), + contract + .call(Cw20ExecuteMsg::Transfer { recipient: "asset".into(), amount: 2_u128.into() }) + .unwrap(), + ]; + + assert_eq!(res.messages.iter().map(|msg| msg.msg.clone()).collect::>(), messages); + } + + #[test] + fn execute_call() { + let mut deps = mock_dependencies(); + + let info = mock_info("sender", &vec![]); + let _ = instantiate( + deps.as_mut(), + mock_env(), + info.clone(), + InstantiateMsg { + registry_address: "addr".into(), + network_id: Picasso.into(), + user_id: vec![], + }, + ) + .unwrap(); + + let out_msg_1: CosmosMsg = + wasm_execute("1234", &"hello world".to_string(), vec![]).unwrap().into(); + let msg = serde_json_wasm::to_string(&out_msg_1).unwrap(); + let instructions = vec![ + XCVMInstruction::Call { encoded: msg.as_bytes().into() }, + XCVMInstruction::Transfer { to: "1234".into(), assets: Funds::empty() }, + XCVMInstruction::Call { encoded: msg.as_bytes().into() }, + XCVMInstruction::Spawn { + network: Picasso.into(), + salt: vec![], + assets: Funds::empty(), + program: XCVMProgram { tag: vec![], instructions: vec![].into() }, + }, + ]; + + let program = XCVMProgram { tag: vec![], instructions: instructions.clone().into() }; + let out_msg_2: CosmosMsg = wasm_execute( + "cosmos2contract", + &ExecuteMsg::Execute { + program: XCVMProgram { + tag: vec![], + instructions: instructions[1..].to_owned().into(), + }, + }, + vec![], + ) + .unwrap() + .into(); + + let res = execute(deps.as_mut(), mock_env(), info.clone(), ExecuteMsg::Execute { program }) + .unwrap(); + assert_eq!(res.messages[0].msg, out_msg_1); + assert_eq!(res.messages[1].msg, out_msg_2); + assert_eq!(res.messages.len(), 2); + } + + #[test] + fn execute_spawn() { + let mut deps = mock_dependencies(); + + let info = mock_info("sender", &vec![]); + let _ = instantiate( + deps.as_mut(), + mock_env(), + info.clone(), + InstantiateMsg { + registry_address: "addr".into(), + network_id: Picasso.into(), + user_id: vec![], + }, + ) + .unwrap(); + + let program = XCVMProgram { + tag: vec![], + instructions: vec![XCVMInstruction::Spawn { + network: Picasso.into(), + salt: vec![], + assets: Funds(BTreeMap::new()), + program: XCVMProgram { + tag: vec![], + instructions: vec![XCVMInstruction::Call { encoded: vec![] }].into(), + }, + }] + .into(), + }; + + let res = execute(deps.as_mut(), mock_env(), info.clone(), ExecuteMsg::Execute { program }) + .unwrap(); + assert_eq!(res.events[0], Event::new("xcvm.interpreter.spawn").add_attribute("origin_network_id", "1").add_attribute("origin_user_id", "[]").add_attribute("program", r#"{"network":1,"salt":[],"assets":{},"program":{"tag":[],"instructions":[{"call":{"encoded":[]}}]}}"#.to_string())); + } +} diff --git a/code/xcvm/cosmwasm/contracts/interpreter/src/error.rs b/code/xcvm/cosmwasm/contracts/interpreter/src/error.rs new file mode 100644 index 00000000000..64f542a157a --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/src/error.rs @@ -0,0 +1,17 @@ +use cosmwasm_std::StdError; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("Invalid call payload")] + InvalidCallPayload, + + #[error("Data cannot be serialized")] + DataSerializationError, + + #[error("A program tag must be a correct utf8 encoded string")] + InvalidProgramTag, +} diff --git a/code/xcvm/cosmwasm/contracts/interpreter/src/lib.rs b/code/xcvm/cosmwasm/contracts/interpreter/src/lib.rs new file mode 100644 index 00000000000..dfedc9dc616 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/src/lib.rs @@ -0,0 +1,6 @@ +pub mod contract; +mod error; +pub mod msg; +pub mod state; + +pub use crate::error::ContractError; diff --git a/code/xcvm/cosmwasm/contracts/interpreter/src/msg.rs b/code/xcvm/cosmwasm/contracts/interpreter/src/msg.rs new file mode 100644 index 00000000000..a1669fa87af --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/src/msg.rs @@ -0,0 +1,24 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; +use std::collections::VecDeque; +use xcvm_core::{Funds, Instruction, NetworkId, Program}; + +pub type XCVMInstruction = Instruction, String, Funds>; +pub type XCVMProgram = Program>; +pub type UserId = Vec; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct InstantiateMsg { + pub registry_address: String, + pub network_id: NetworkId, + pub user_id: UserId, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + Execute { program: XCVMProgram }, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub enum QueryMsg {} diff --git a/code/xcvm/cosmwasm/contracts/interpreter/src/state.rs b/code/xcvm/cosmwasm/contracts/interpreter/src/state.rs new file mode 100644 index 00000000000..ea1e24a8edf --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/interpreter/src/state.rs @@ -0,0 +1,16 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use crate::msg::UserId; +use cosmwasm_std::Addr; +use cw_storage_plus::Item; +use xcvm_core::NetworkId; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct Config { + pub registry_address: Addr, + pub network_id: NetworkId, + pub user_id: UserId, +} + +pub const CONFIG: Item = Item::new("config"); diff --git a/code/xcvm/cosmwasm/contracts/router/Cargo.toml b/code/xcvm/cosmwasm/contracts/router/Cargo.toml new file mode 100644 index 00000000000..7412ff415ab --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/Cargo.toml @@ -0,0 +1,34 @@ +[package] +authors = ["Composable Developers"] +edition = "2021" +name = "xcvm-router" +version = "0.1.0" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "xcvm-router.wasm", + "hash.txt", +] + +[lib] +crate-type = ["cdylib", "rlib"] + +[features] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[dependencies] +cosmwasm-std = "1.0.0" +cw-storage-plus = "0.13.2" +cw20 = "0.13.2" +hex = "0.4" +schemars = "0.8.8" +serde = { version = "1.0.137", default-features = false, features = ["derive"] } +thiserror = { version = "1.0.31" } +xcvm-asset-registry = { path = "../asset-registry", features = ["library"] } +xcvm-core = { path = "../../../lib/core", features = ["std"] } +xcvm-interpreter = { path = "../interpreter", features = ["library"] } + +[dev-dependencies] +cosmwasm-schema = "1.0.0" +serde-json-wasm = { git = "https://github.com/hussein-aitlahcen/serde-json-wasm", rev = "1608a13d2a2ba90605d9626a51ff6667aca5a2d6" } diff --git a/code/xcvm/cosmwasm/contracts/router/README.md b/code/xcvm/cosmwasm/contracts/router/README.md new file mode 100644 index 00000000000..0bdc8af26eb --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/README.md @@ -0,0 +1,18 @@ +# Router Contract + +Router is used by gateway to pass funds to interpreter and execute them. + +## Compile + +```sh +RUSTFLAGS='-C link-arg=-s' cargo b --package=xcvm-router --target=wasm32-unknown-unknown --profile="cosmwasm-contracts" +``` + +* `-C link-arg=-s` is used for stripping the binary which reduces the binary size drastically. +* `--profile="cosmwasm-contracts"` must be used for cosmwasm contracts. + +## Test + +```sh +cargo test --package="xcvm-router" +``` diff --git a/code/xcvm/cosmwasm/contracts/router/examples/schema.rs b/code/xcvm/cosmwasm/contracts/router/examples/schema.rs new file mode 100644 index 00000000000..320fd1b63c6 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/examples/schema.rs @@ -0,0 +1,16 @@ +use std::{env::current_dir, fs::create_dir_all}; + +use cosmwasm_schema::{export_schema, remove_schemas, schema_for}; + +use xcvm_router::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; + +fn main() { + let mut out_dir = current_dir().unwrap(); + out_dir.push("schema"); + create_dir_all(&out_dir).unwrap(); + remove_schemas(&out_dir).unwrap(); + + export_schema(&schema_for!(InstantiateMsg), &out_dir); + export_schema(&schema_for!(ExecuteMsg), &out_dir); + export_schema(&schema_for!(QueryMsg), &out_dir); +} diff --git a/code/xcvm/cosmwasm/contracts/router/schema/execute_msg.json b/code/xcvm/cosmwasm/contracts/router/schema/execute_msg.json new file mode 100644 index 00000000000..df7514dbe05 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/schema/execute_msg.json @@ -0,0 +1,225 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "run" + ], + "properties": { + "run": { + "type": "object", + "required": [ + "funds", + "interpreter_execute_msg", + "network_id", + "user_id" + ], + "properties": { + "funds": { + "$ref": "#/definitions/Funds_for_Displayed_for_uint128" + }, + "interpreter_execute_msg": { + "$ref": "#/definitions/ExecuteMsg" + }, + "network_id": { + "$ref": "#/definitions/NetworkId" + }, + "user_id": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + } + }, + "additionalProperties": false + } + ], + "definitions": { + "Amount": { + "description": "See https://en.wikipedia.org/wiki/Linear_equation#Slope%E2%80%93intercept_form_or_Gradient-intercept_form", + "type": "object", + "required": [ + "intercept", + "slope" + ], + "properties": { + "intercept": { + "$ref": "#/definitions/Displayed_for_uint128" + }, + "slope": { + "$ref": "#/definitions/Displayed_for_uint128" + } + } + }, + "Displayed_for_uint128": { + "type": "integer", + "format": "uint128", + "minimum": 0.0 + }, + "ExecuteMsg": { + "oneOf": [ + { + "type": "object", + "required": [ + "execute" + ], + "properties": { + "execute": { + "type": "object", + "required": [ + "program" + ], + "properties": { + "program": { + "$ref": "#/definitions/Program_for_Array_of_Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount" + } + } + } + }, + "additionalProperties": false + } + ] + }, + "Funds_for_Amount": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Amount" + } + }, + "Funds_for_Displayed_for_uint128": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Displayed_for_uint128" + } + }, + "Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount": { + "description": "Base XCVM instructions. This set will remain as small as possible, expressiveness must come on `top` of the base instructions.", + "oneOf": [ + { + "description": "Transfer some [`Assets`] from the current program to the [`to`] account.", + "type": "object", + "required": [ + "transfer" + ], + "properties": { + "transfer": { + "type": "object", + "required": [ + "assets", + "to" + ], + "properties": { + "assets": { + "$ref": "#/definitions/Funds_for_Amount" + }, + "to": { + "type": "string" + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Arbitrary payload representing a raw call inside the current [`Network`].\n\nOn picasso, this will be a SCALE encoded dispatch call. On ethereum, an ethereum ABI encoded call. On cosmos, a raw json WasmMsg call.\n\nDepending on the network, the payload might be more structured than the base call. For most of the network in fact, we need to provide the target address along the payload, which can be encoded inside this single payload.", + "type": "object", + "required": [ + "call" + ], + "properties": { + "call": { + "type": "object", + "required": [ + "encoded" + ], + "properties": { + "encoded": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + } + }, + "additionalProperties": false + }, + { + "description": "Spawn a sub-program on the target `network`.\n\nThe program will be spawned with the desired [`Assets`]. The salt is used to track the program when events are dispatched in the network.", + "type": "object", + "required": [ + "spawn" + ], + "properties": { + "spawn": { + "type": "object", + "required": [ + "assets", + "network", + "program", + "salt" + ], + "properties": { + "assets": { + "$ref": "#/definitions/Funds_for_Amount" + }, + "network": { + "$ref": "#/definitions/NetworkId" + }, + "program": { + "$ref": "#/definitions/Program_for_Array_of_Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount" + }, + "salt": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + } + }, + "additionalProperties": false + } + ] + }, + "NetworkId": { + "description": "Newtype for XCVM networks ID. Must be unique for each network and must never change. This ID is an opaque, arbitrary type from the XCVM protocol and no assumption must be made on how it is computed.", + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "Program_for_Array_of_Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount": { + "type": "object", + "required": [ + "instructions", + "tag" + ], + "properties": { + "instructions": { + "type": "array", + "items": { + "$ref": "#/definitions/Instruction_for_NetworkId_and_Array_of_uint8_and_String_and_Funds_for_Amount" + } + }, + "tag": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + } + } + } + } + } +} diff --git a/code/xcvm/cosmwasm/contracts/router/schema/instantiate_msg.json b/code/xcvm/cosmwasm/contracts/router/schema/instantiate_msg.json new file mode 100644 index 00000000000..883a67ad66a --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/schema/instantiate_msg.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "type": "object", + "required": [ + "interpreter_code_id", + "registry_address" + ], + "properties": { + "interpreter_code_id": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + }, + "registry_address": { + "type": "string" + } + } +} diff --git a/code/xcvm/cosmwasm/contracts/router/schema/query_msg.json b/code/xcvm/cosmwasm/contracts/router/schema/query_msg.json new file mode 100644 index 00000000000..0f592a1af0d --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/schema/query_msg.json @@ -0,0 +1,6 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "type": "string", + "enum": [] +} diff --git a/code/xcvm/cosmwasm/contracts/router/src/contract.rs b/code/xcvm/cosmwasm/contracts/router/src/contract.rs new file mode 100644 index 00000000000..64124381b82 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/src/contract.rs @@ -0,0 +1,368 @@ +use crate::{ + error::ContractError, + msg::{ExecuteMsg, InstantiateMsg, QueryMsg}, + state::{Config, UserId, CONFIG, INTERPRETERS}, +}; +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{ + from_binary, to_binary, wasm_execute, Addr, Binary, CosmosMsg, Deps, DepsMut, Env, MessageInfo, + Reply, Response, StdError, StdResult, SubMsg, WasmMsg, WasmQuery, +}; +use cw20::{Cw20Contract, Cw20ExecuteMsg}; +use xcvm_asset_registry::msg::{GetAssetContractResponse, QueryMsg as AssetRegistryQueryMsg}; +use xcvm_core::{Displayed, Funds, NetworkId}; +use xcvm_interpreter::msg::{ + ExecuteMsg as InterpreterExecuteMsg, InstantiateMsg as InterpreterInstantiateMsg, +}; + +const INSTANTIATE_REPLY_ID: u64 = 1; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: InstantiateMsg, +) -> Result { + let addr = deps.api.addr_validate(&msg.registry_address)?; + CONFIG.save( + deps.storage, + &Config { registry_address: addr, interpreter_code_id: msg.interpreter_code_id }, + )?; + Ok(Response::default()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + _info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::Run { network_id, user_id, interpreter_execute_msg, funds } => + handle_run(deps, env, network_id, user_id, interpreter_execute_msg, funds), + } +} + +pub fn handle_run( + deps: DepsMut, + env: Env, + network_id: NetworkId, + user_id: UserId, + interpreter_execute_msg: InterpreterExecuteMsg, + funds: Funds>, +) -> Result { + match INTERPRETERS.load(deps.storage, (network_id.0, user_id.clone())) { + Ok(interpreter_address) => { + let response = + send_funds_to_interpreter(deps.as_ref(), interpreter_address.clone(), funds)?; + let wasm_msg = wasm_execute(interpreter_address, &interpreter_execute_msg, vec![])?; + Ok(response.add_message(wasm_msg)) + }, + Err(_) => { + let Config { registry_address, interpreter_code_id } = CONFIG.load(deps.storage)?; + let instantiate_msg: CosmosMsg = WasmMsg::Instantiate { + admin: Some(env.contract.address.clone().into_string()), + code_id: interpreter_code_id, + msg: to_binary(&InterpreterInstantiateMsg { + registry_address: registry_address.into_string(), + network_id, + user_id: user_id.clone(), + })?, + funds: vec![], + label: format!("xcvm-interpreter-{}-{}", network_id.0, hex::encode(&user_id)), + } + .into(); + + let submessage = SubMsg::reply_on_success(instantiate_msg, INSTANTIATE_REPLY_ID); + let wasm_msg: CosmosMsg = wasm_execute( + env.contract.address, + &ExecuteMsg::Run { network_id, user_id, interpreter_execute_msg, funds }, + vec![], + )? + .into(); + Ok(Response::new().add_submessage(submessage).add_message(wasm_msg)) + }, + } +} + +fn send_funds_to_interpreter( + deps: Deps, + interpreter_address: Addr, + funds: Funds>, +) -> StdResult { + let mut response = Response::new(); + let registry_address = CONFIG.load(deps.storage)?.registry_address.into_string(); + let interpreter_address = interpreter_address.into_string(); + for (asset_id, amount) in funds.0 { + let query_msg = AssetRegistryQueryMsg::GetAssetContract(asset_id.into()); + let cw20_address: GetAssetContractResponse = deps.querier.query( + &WasmQuery::Smart { + contract_addr: registry_address.clone(), + msg: to_binary(&query_msg)?, + } + .into(), + )?; + let contract = Cw20Contract(cw20_address.addr.clone()); + + if amount.0 == 0 { + continue + } + + response = response.add_message(contract.call(Cw20ExecuteMsg::Transfer { + recipient: interpreter_address.clone(), + amount: amount.0.into(), + })?); + } + Ok(response) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> StdResult { + match msg.id { + INSTANTIATE_REPLY_ID => handle_instantiate_reply(deps, msg), + id => Err(StdError::generic_err(format!("Unknown reply id: {}", id))), + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(_deps: Deps, _env: Env, _msg: QueryMsg) -> StdResult { + Err(StdError::generic_err("not implemented")) +} + +fn handle_instantiate_reply(deps: DepsMut, msg: Reply) -> StdResult { + let response = msg.result.into_result().map_err(StdError::generic_err)?; + let interpreter_address = { + let instantiate_event = response + .events + .iter() + .find(|event| event.ty == "instantiate") + .ok_or(StdError::not_found("instantiate event not found"))?; + deps.api.addr_validate( + &instantiate_event + .attributes + .iter() + .find(|attr| &attr.key == "_contract_address") + .ok_or(StdError::not_found("_contract_address attribute not found"))? + .value, + )? + }; + + let router_reply = { + let interpreter_event = response + .events + .iter() + .find(|event| event.ty == "wasm-xcvm.interpreter.instantiated") + .ok_or(StdError::not_found("interpreter event not found"))?; + + from_binary::<(u8, UserId)>(&Binary::from_base64( + interpreter_event + .attributes + .iter() + .find(|attr| &attr.key == "data") + .ok_or(StdError::not_found("no data is returned from 'xcvm_interpreter'"))? + .value + .as_str(), + )?)? + }; + + INTERPRETERS.save(deps.storage, (router_reply.0, router_reply.1), &interpreter_address)?; + + Ok(Response::new()) +} + +#[cfg(test)] +mod tests { + use super::*; + use cosmwasm_std::{ + testing::{mock_dependencies, mock_env, mock_info, MockQuerier, MOCK_CONTRACT_ADDR}, + wasm_execute, Addr, ContractResult, QuerierResult, SystemResult, + }; + use xcvm_core::{Amount, AssetId, Picasso, ETH, PICA}; + use xcvm_interpreter::msg::{XCVMInstruction, XCVMProgram}; + + const CW20_ADDR: &str = "cw20addr"; + const REGISTRY_ADDR: &str = "registryaddr"; + + #[test] + fn proper_instantiation() { + let mut deps = mock_dependencies(); + + let msg = InstantiateMsg { registry_address: "addr".to_string(), interpreter_code_id: 1 }; + let info = mock_info("sender", &vec![]); + + let res = instantiate(deps.as_mut(), mock_env(), info, msg).unwrap(); + assert_eq!(0, res.messages.len()); + + // Make sure that the storage is empty + assert_eq!( + CONFIG.load(&deps.storage).unwrap(), + Config { registry_address: Addr::unchecked("addr"), interpreter_code_id: 1 } + ); + } + + fn wasm_querier(query: &WasmQuery) -> QuerierResult { + match query { + WasmQuery::Smart { contract_addr, .. } if contract_addr.as_str() == CW20_ADDR => + SystemResult::Ok(ContractResult::Ok( + to_binary(&cw20::BalanceResponse { balance: 100000_u128.into() }).unwrap(), + )), + WasmQuery::Smart { contract_addr, .. } if contract_addr.as_str() == REGISTRY_ADDR => + SystemResult::Ok(ContractResult::Ok( + to_binary(&xcvm_asset_registry::msg::GetAssetContractResponse { + addr: Addr::unchecked(CW20_ADDR), + }) + .unwrap(), + )) + .into(), + _ => panic!("Unhandled query"), + } + } + + #[test] + fn execute_run_phase1() { + let mut deps = mock_dependencies(); + let mut querier = MockQuerier::default(); + querier.update_wasm(wasm_querier); + deps.querier = querier; + + let info = mock_info("sender", &vec![]); + let _ = instantiate( + deps.as_mut(), + mock_env(), + info.clone(), + InstantiateMsg { registry_address: REGISTRY_ADDR.into(), interpreter_code_id: 1 }, + ) + .unwrap(); + + let program = XCVMProgram { + tag: vec![], + instructions: vec![XCVMInstruction::Transfer { + to: "asset".into(), + assets: Funds::from([ + (Into::::into(PICA), Amount::absolute(1)), + (ETH.into(), Amount::absolute(2)), + ]), + }] + .into(), + }; + let interpreter_execute_msg = InterpreterExecuteMsg::Execute { program }; + + let funds = + Funds::>::from([(Into::::into(PICA), Displayed(1000_u128))]); + + let run_msg = ExecuteMsg::Run { + network_id: Picasso.into(), + user_id: vec![1], + interpreter_execute_msg, + funds: funds.clone(), + }; + + let res = execute(deps.as_mut(), mock_env(), info.clone(), run_msg.clone()).unwrap(); + + let instantiate_msg = WasmMsg::Instantiate { + admin: Some(MOCK_CONTRACT_ADDR.to_string()), + code_id: 1, + msg: to_binary(&InterpreterInstantiateMsg { + registry_address: REGISTRY_ADDR.to_string(), + network_id: Picasso.into(), + user_id: vec![1], + }) + .unwrap(), + funds: vec![], + label: "xcvm-interpreter-1-01".to_string(), + }; + + let execute_msg = WasmMsg::Execute { + contract_addr: MOCK_CONTRACT_ADDR.to_string(), + msg: to_binary(&run_msg).unwrap(), + funds: vec![], + }; + + assert_eq!(res.messages[0].msg, instantiate_msg.into()); + assert_eq!(res.messages[1].msg, execute_msg.into()); + } + + #[test] + fn execute_run_phase2() { + let mut deps = mock_dependencies(); + let mut querier = MockQuerier::default(); + querier.update_wasm(wasm_querier); + deps.querier = querier; + + let info = mock_info("sender", &vec![]); + let _ = instantiate( + deps.as_mut(), + mock_env(), + info.clone(), + InstantiateMsg { registry_address: REGISTRY_ADDR.into(), interpreter_code_id: 1 }, + ) + .unwrap(); + + INTERPRETERS + .save( + &mut deps.storage, + (Into::::into(Picasso).0, vec![]), + &Addr::unchecked("interpreter"), + ) + .unwrap(); + + let program = XCVMProgram { + tag: vec![], + instructions: vec![XCVMInstruction::Transfer { + to: "asset".into(), + assets: Funds::from([ + (Into::::into(PICA), Amount::absolute(1)), + (ETH.into(), Amount::absolute(2)), + ]), + }] + .into(), + }; + let interpreter_execute_msg = InterpreterExecuteMsg::Execute { program }; + + let funds = Funds::>::from([ + (Into::::into(PICA), Displayed(1000_u128)), + (Into::::into(ETH), Displayed(2000_u128)), + ]); + + let run_msg = ExecuteMsg::Run { + network_id: Picasso.into(), + user_id: vec![], + interpreter_execute_msg: interpreter_execute_msg.clone(), + funds: funds.clone(), + }; + + let res = execute(deps.as_mut(), mock_env(), info.clone(), run_msg.clone()).unwrap(); + + let cw20_contract = Cw20Contract(Addr::unchecked(CW20_ADDR)); + let messages = vec![ + cw20_contract + .call(Cw20ExecuteMsg::Transfer { + recipient: "interpreter".into(), + amount: 1000_u128.into(), + }) + .unwrap(), + cw20_contract + .call(Cw20ExecuteMsg::Transfer { + recipient: "interpreter".into(), + amount: 2000_u128.into(), + }) + .unwrap(), + wasm_execute("interpreter", &interpreter_execute_msg, vec![]).unwrap().into(), + ]; + + messages.into_iter().enumerate().for_each(|(i, msg)| { + assert_eq!(res.messages[i].msg, msg); + }) + + /* + let execute_msg = WasmMsg::Execute { + contract_addr: MOCK_CONTRACT_ADDR.to_string(), + msg: to_binary(&run_msg).unwrap(), + funds: vec![], + }; + */ + } +} diff --git a/code/xcvm/cosmwasm/contracts/router/src/error.rs b/code/xcvm/cosmwasm/contracts/router/src/error.rs new file mode 100644 index 00000000000..d32e4b26dc4 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/src/error.rs @@ -0,0 +1,8 @@ +use cosmwasm_std::StdError; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), +} diff --git a/code/xcvm/cosmwasm/contracts/router/src/helpers.rs b/code/xcvm/cosmwasm/contracts/router/src/helpers.rs new file mode 100644 index 00000000000..84177f8099d --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/src/helpers.rs @@ -0,0 +1,22 @@ +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +use cosmwasm_std::{to_binary, Addr, CosmosMsg, StdResult, WasmMsg}; + +use crate::msg::ExecuteMsg; + +/// AssetRegistryContract is a wrapper around Addr that provides helpers +/// for working with this as a library. +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct AssetRegistryContract(pub Addr); + +impl AssetRegistryContract { + pub fn addr(&self) -> &Addr { + &self.0 + } + + pub fn call>(&self, msg: T) -> StdResult { + let msg = to_binary(&msg.into())?; + Ok(WasmMsg::Execute { contract_addr: self.addr().into(), msg, funds: vec![] }.into()) + } +} diff --git a/code/xcvm/cosmwasm/contracts/router/src/lib.rs b/code/xcvm/cosmwasm/contracts/router/src/lib.rs new file mode 100644 index 00000000000..233dbf5572f --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/src/lib.rs @@ -0,0 +1,7 @@ +pub mod contract; +mod error; +pub mod helpers; +pub mod msg; +pub mod state; + +pub use crate::error::ContractError; diff --git a/code/xcvm/cosmwasm/contracts/router/src/msg.rs b/code/xcvm/cosmwasm/contracts/router/src/msg.rs new file mode 100644 index 00000000000..2e855fcce33 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/src/msg.rs @@ -0,0 +1,25 @@ +use crate::state::UserId; +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; +use xcvm_core::{Displayed, Funds, NetworkId}; +use xcvm_interpreter::msg::ExecuteMsg as InterpreterExecuteMsg; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct InstantiateMsg { + pub registry_address: String, + pub interpreter_code_id: u64, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + Run { + network_id: NetworkId, + user_id: UserId, + interpreter_execute_msg: InterpreterExecuteMsg, + funds: Funds>, + }, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub enum QueryMsg {} diff --git a/code/xcvm/cosmwasm/contracts/router/src/state.rs b/code/xcvm/cosmwasm/contracts/router/src/state.rs new file mode 100644 index 00000000000..659a6a12139 --- /dev/null +++ b/code/xcvm/cosmwasm/contracts/router/src/state.rs @@ -0,0 +1,15 @@ +use cosmwasm_std::Addr; +use cw_storage_plus::{Item, Map}; +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct Config { + pub registry_address: Addr, + pub interpreter_code_id: u64, +} + +pub type UserId = Vec; + +pub const INTERPRETERS: Map<(u8, UserId), Addr> = Map::new("interpreters"); +pub const CONFIG: Item = Item::new("config"); diff --git a/code/xcvm/lib/core/src/asset.rs b/code/xcvm/lib/core/src/asset.rs index 7424c1e58b1..bd04d398933 100644 --- a/code/xcvm/lib/core/src/asset.rs +++ b/code/xcvm/lib/core/src/asset.rs @@ -128,6 +128,8 @@ impl From for Displayed { } } +pub const MAX_PARTS: u128 = 1000000000000000000; + #[cfg_attr(feature = "std", derive(schemars::JsonSchema))] #[derive( Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Encode, Decode, TypeInfo, Serialize, Deserialize, @@ -136,19 +138,19 @@ impl From for Displayed { /// See https://en.wikipedia.org/wiki/Linear_equation#Slope%E2%80%93intercept_form_or_Gradient-intercept_form pub struct Amount { pub intercept: Displayed, - pub slope: u128, + pub slope: Displayed, } impl Amount { /// An absolute amount #[inline] pub fn absolute(value: u128) -> Self { - Self { intercept: Displayed(value), slope: 0 } + Self { intercept: Displayed(value), slope: Displayed(0) } } /// A ratio amount, expressed in u128 parts (x / u128::MAX) #[inline] pub fn ratio(parts: u128) -> Self { - Self { intercept: Displayed(0), slope: parts } + Self { intercept: Displayed(0), slope: Displayed(parts) } } } @@ -156,16 +158,19 @@ impl Add for Amount { type Output = Self; #[inline] - fn add(self, Self { intercept: Displayed(i_1), slope: s_1 }: Self) -> Self::Output { - let Self { intercept: Displayed(i_0), slope: s_0 } = self; - Self { intercept: Displayed(i_0.saturating_add(i_1)), slope: s_0.saturating_add(s_1) } + fn add(self, Self { intercept: Displayed(i_1), slope: Displayed(s_1) }: Self) -> Self::Output { + let Self { intercept: Displayed(i_0), slope: Displayed(s_0) } = self; + Self { + intercept: Displayed(i_0.saturating_add(i_1)), + slope: Displayed(s_0.saturating_add(s_1)), + } } } impl Zero for Amount { #[inline] fn zero() -> Self { - Self { intercept: Displayed(0), slope: 0 } + Self { intercept: Displayed(0), slope: Displayed(0) } } #[inline] @@ -177,20 +182,25 @@ impl Zero for Amount { impl From for Amount { #[inline] fn from(x: u128) -> Self { - Self { intercept: Displayed(x), slope: 0 } + Self { intercept: Displayed(x), slope: Displayed(0) } } } impl Amount { #[inline] pub fn apply(&self, value: u128) -> u128 { - let amount = FixedU128::::from_num(value) - .saturating_mul( - FixedU128::::from_num(self.slope) - .saturating_div(FixedU128::::from_num(u128::MAX)), - ) - .to_num::() - .saturating_add(self.intercept.0); + let amount = if self.slope.0 == 0 { + self.intercept.0 + } else { + FixedU128::::wrapping_from_num(value) + .saturating_sub(FixedU128::::wrapping_from_num(self.intercept.0)) + .saturating_mul( + FixedU128::::wrapping_from_num(self.slope.0) + .saturating_div(FixedU128::::wrapping_from_num(MAX_PARTS)), + ) + .wrapping_to_num::() + .saturating_add(self.intercept.0) + }; u128::min(value, amount) } } @@ -202,17 +212,17 @@ impl Amount { #[repr(transparent)] pub struct Funds(pub BTreeMap); -impl Funds { +impl Funds { #[inline] pub fn empty() -> Self { Funds(BTreeMap::new()) } } -impl From> for Funds +impl From> for Funds where U: Into, - V: Into, + V: Into, { #[inline] fn from(assets: BTreeMap) -> Self { @@ -225,10 +235,10 @@ where } } -impl From<[(U, V); K]> for Funds +impl From<[(U, V); K]> for Funds where U: Into, - V: Into, + V: Into, { #[inline] fn from(x: [(U, V); K]) -> Self { @@ -236,9 +246,9 @@ where } } -impl From for BTreeMap { +impl From> for BTreeMap { #[inline] - fn from(Funds(assets): Funds) -> Self { + fn from(Funds(assets): Funds) -> Self { assets.into_iter().map(|(AssetId(asset), amount)| (asset, amount)).collect() } } diff --git a/code/xcvm/lib/core/src/lib.rs b/code/xcvm/lib/core/src/lib.rs index c809948391d..1c919c78225 100644 --- a/code/xcvm/lib/core/src/lib.rs +++ b/code/xcvm/lib/core/src/lib.rs @@ -13,6 +13,7 @@ pub use crate::{asset::*, instruction::*, network::*, program::*, protocol::*}; use alloc::{collections::VecDeque, vec::Vec}; use core::marker::PhantomData; +/// Strongly typed network builder originating on `CurrentNetwork` network. #[derive(Clone)] pub struct ProgramBuilder { pub tag: Vec, diff --git a/flake.nix b/flake.nix index 59fd66f51e0..8685c5d8dc2 100644 --- a/flake.nix +++ b/flake.nix @@ -47,6 +47,27 @@ gce-input = gce-to-nix service-account-credential-key-file-input; + mkDevnetProgram = { pkgs }: + name: spec: + pkgs.writeShellApplication { + inherit name; + runtimeInputs = [ pkgs.arion pkgs.docker pkgs.coreutils pkgs.bash ]; + text = '' + arion --prebuilt-file ${ + pkgs.arion.build spec + } up --build --force-recreate -V --always-recreate-deps --remove-orphans + ''; + }; + + composableOverlay = nixpkgs.lib.composeManyExtensions [ + arion-src.overlay + (final: prev: { + composable = { + mkDevnetProgram = final.callPackage mkDevnetProgram { }; + }; + }) + ]; + mk-devnet = { pkgs, lib, writeTextFile, writeShellApplication , polkadot-launch, composable-node, polkadot-node, chain-spec }: let @@ -86,8 +107,8 @@ pkgs = import nixpkgs { inherit system; overlays = [ + composableOverlay rust-overlay.overlays.default - arion-src.overlay npm-buildpackage.overlays.default ]; allowUnsupportedSystem = true; # we do not trigger this on mac @@ -403,6 +424,14 @@ --execution=wasm ''; + mk-xcvm-contract = name: + crane-nightly.buildPackage (common-attrs // { + pnameSuffix = name; + cargoBuildCommand = + "cargo build --target wasm32-unknown-unknown --profile cosmwasm-contracts -p ${name}"; + RUSTFLAGS = "-C link-arg=-s"; + }); + subwasm = let src = fetchFromGitHub { owner = "chevdor"; @@ -445,7 +474,6 @@ ``` ''; }; - in rec { packages = rec { inherit wasm-optimizer; @@ -465,6 +493,11 @@ inherit subwasm; inherit subwasm-release-body; + xcvm-contract-asset-registry = + mk-xcvm-contract "xcvm-asset-registry"; + xcvm-contract-router = mk-xcvm-contract "xcvm-router"; + xcvm-contract-interpreter = mk-xcvm-contract "xcvm-interpreter"; + subsquid-processor = let processor = pkgs.buildNpmPackage { extraNodeModulesArgs = { @@ -935,7 +968,6 @@ wasmswap = pkgs.callPackage ./code/xcvm/cosmos/wasmswap.nix { crane = crane-nightly; }; - default = packages.composable-node; }; @@ -1018,42 +1050,33 @@ default = developers; }; - apps = let - arion-pure = import ./.nix/arion-pure.nix { + devnet-specs = { + default = import ./.nix/devnet-specs/default.nix { inherit pkgs; inherit packages; }; - arion-up-program = pkgs.writeShellApplication { - name = "devnet-up"; - runtimeInputs = - [ pkgs.arion pkgs.docker pkgs.coreutils pkgs.bash ]; - text = '' - arion --prebuilt-file ${arion-pure} up --build --force-recreate -V --always-recreate-deps --remove-orphans - ''; - }; - devnet-xcvm = import ./.nix/arion-xcvm.nix { + xcvm = import ./.nix/devnet-specs/xcvm.nix { inherit pkgs; inherit packages; }; - devnet-xcvm-up-program = pkgs.writeShellApplication { - name = "devnet-xcvm-up"; - runtimeInputs = - [ pkgs.arion pkgs.docker pkgs.coreutils pkgs.bash ]; - text = '' - arion --prebuilt-file ${devnet-xcvm} up --build --force-recreate -V --always-recreate-deps --remove-orphans - ''; - }; + }; + apps = let + devnet-default-program = + pkgs.composable.mkDevnetProgram "devnet-default" + devnet-specs.default; + devnet-xcvm-program = + pkgs.composable.mkDevnetProgram "devnet-xcvm" devnet-specs.xcvm; in rec { - devnet-up = { + devnet = { type = "app"; - program = "${arion-up-program}/bin/devnet-up"; + program = "${devnet-default-program}/bin/devnet-default"; }; - devnet-xcvm-up = { + devnet-xcvm = { type = "app"; - program = "${devnet-xcvm-up-program}/bin/devnet-xcvm-up"; + program = "${devnet-xcvm-program}/bin/devnet-xcvm"; }; devnet-dali = { @@ -1124,6 +1147,8 @@ }; }); in eachSystemOutputs // { + + overlays.default = composableOverlay; nixopsConfigurations = { default = let pkgs = nixpkgs.legacyPackages.x86_64-linux; in import ./.nix/devnet.nix { diff --git a/scripts/polkadot-launch/rococo-local-dali-dev.nix b/scripts/polkadot-launch/rococo-local-dali-dev.nix index d0e65424500..f3e47f2127a 100644 --- a/scripts/polkadot-launch/rococo-local-dali-dev.nix +++ b/scripts/polkadot-launch/rococo-local-dali-dev.nix @@ -39,6 +39,7 @@ in { "--rpc-methods=Unsafe" "--execution=wasm" "--wasmtime-instantiation-strategy=recreate-instance-copy-on-write" + "--log=runtime::contracts=debug" ]; }]; };