diff --git a/operator/Cargo.lock b/operator/Cargo.lock index 3705be6c..61d45ca2 100644 --- a/operator/Cargo.lock +++ b/operator/Cargo.lock @@ -2922,6 +2922,7 @@ dependencies = [ "frame-try-runtime", "hex", "hex-literal 0.3.4", + "itoa", "log", "num-bigint", "num_enum", @@ -3210,6 +3211,7 @@ dependencies = [ "frame-try-runtime", "hex", "hex-literal 0.3.4", + "itoa", "log", "num-bigint", "num_enum", @@ -3359,6 +3361,7 @@ dependencies = [ "frame-try-runtime", "hex", "hex-literal 0.3.4", + "itoa", "log", "num-bigint", "num_enum", @@ -8985,7 +8988,7 @@ dependencies = [ [[package]] name = "pallet-bucket-nfts" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9061,7 +9064,7 @@ dependencies = [ [[package]] name = "pallet-cr-randomness" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-support", "frame-system", @@ -9320,7 +9323,7 @@ dependencies = [ [[package]] name = "pallet-evm-precompile-file-system" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "fp-account", "fp-evm", @@ -9573,7 +9576,7 @@ dependencies = [ [[package]] name = "pallet-file-system" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9600,7 +9603,7 @@ dependencies = [ [[package]] name = "pallet-file-system-runtime-api" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "parity-scale-codec", "scale-info", @@ -9796,7 +9799,7 @@ dependencies = [ [[package]] name = "pallet-payment-streams" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9816,7 +9819,7 @@ dependencies = [ [[package]] name = "pallet-payment-streams-runtime-api" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "parity-scale-codec", "scale-info", @@ -9844,7 +9847,7 @@ dependencies = [ [[package]] name = "pallet-proofs-dealer" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-benchmarking", "frame-support", @@ -9866,7 +9869,7 @@ dependencies = [ [[package]] name = "pallet-proofs-dealer-runtime-api" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "parity-scale-codec", "scale-info", @@ -9888,7 +9891,7 @@ dependencies = [ [[package]] name = "pallet-randomness" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10029,7 +10032,7 @@ dependencies = [ [[package]] name = "pallet-storage-providers" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-benchmarking", "frame-support", @@ -10051,7 +10054,7 @@ dependencies = [ [[package]] name = "pallet-storage-providers-runtime-api" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "parity-scale-codec", "scale-info", @@ -15159,7 +15162,7 @@ dependencies = [ [[package]] name = "shc-actors-derive" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "once_cell", "proc-macro2", @@ -15172,7 +15175,7 @@ dependencies = [ [[package]] name = "shc-actors-framework" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "anyhow", "bincode", @@ -15190,7 +15193,7 @@ dependencies = [ [[package]] name = "shc-blockchain-service" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "anyhow", "array-bytes", @@ -15218,6 +15221,7 @@ dependencies = [ "sc-network-types", "sc-service", "sc-tracing", + "sc-transaction-pool-api", "sc-utils", "serde", "serde_json", @@ -15241,7 +15245,7 @@ dependencies = [ [[package]] name = "shc-client" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "anyhow", "array-bytes", @@ -15307,7 +15311,7 @@ dependencies = [ [[package]] name = "shc-common" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "anyhow", "bigdecimal", @@ -15371,7 +15375,7 @@ dependencies = [ [[package]] name = "shc-file-manager" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "bincode", "hash-db", @@ -15395,7 +15399,7 @@ dependencies = [ [[package]] name = "shc-file-transfer-service" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "anyhow", "array-bytes", @@ -15424,7 +15428,7 @@ dependencies = [ [[package]] name = "shc-fisherman-service" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "async-trait", "diesel", @@ -15454,7 +15458,7 @@ dependencies = [ [[package]] name = "shc-forest-manager" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "async-trait", "bincode", @@ -15479,7 +15483,7 @@ dependencies = [ [[package]] name = "shc-indexer-db" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "bigdecimal", "chrono", @@ -15507,7 +15511,7 @@ dependencies = [ [[package]] name = "shc-indexer-service" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "anyhow", "array-bytes", @@ -15558,7 +15562,7 @@ dependencies = [ [[package]] name = "shc-rpc" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "array-bytes", "async-trait", @@ -15609,7 +15613,7 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "shp-constants" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "sp-core", "sp-runtime", @@ -15618,7 +15622,7 @@ dependencies = [ [[package]] name = "shp-data-price-updater" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-support", "parity-scale-codec", @@ -15633,7 +15637,7 @@ dependencies = [ [[package]] name = "shp-file-key-verifier" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-support", "parity-scale-codec", @@ -15651,7 +15655,7 @@ dependencies = [ [[package]] name = "shp-file-metadata" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "hex", "num-bigint", @@ -15667,7 +15671,7 @@ dependencies = [ [[package]] name = "shp-forest-verifier" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-support", "parity-scale-codec", @@ -15684,7 +15688,7 @@ dependencies = [ [[package]] name = "shp-opaque" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "parachains-common", "sp-runtime", @@ -15693,7 +15697,7 @@ dependencies = [ [[package]] name = "shp-session-keys" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "async-trait", "parity-scale-codec", @@ -15708,7 +15712,7 @@ dependencies = [ [[package]] name = "shp-traits" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "frame-support", "parity-scale-codec", @@ -15722,7 +15726,7 @@ dependencies = [ [[package]] name = "shp-treasury-funding" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "log", "shp-traits", @@ -15733,7 +15737,7 @@ dependencies = [ [[package]] name = "shp-types" version = "0.1.0" -source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.0.6-alpha#05d269a26d11c1ed8a6d917b3e08ff3b5d3d4b22" +source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.1.1#73241088333295db001818864a518b8c25896b5a" dependencies = [ "sp-core", "sp-runtime", diff --git a/operator/Cargo.toml b/operator/Cargo.toml index 1b5f6551..21c61287 100644 --- a/operator/Cargo.toml +++ b/operator/Cargo.toml @@ -27,11 +27,6 @@ datahaven-runtime-common = { path = "./runtime/common", default-features = false datahaven-stagenet-runtime = { path = "./runtime/stagenet", default-features = false } datahaven-testnet-runtime = { path = "./runtime/testnet", default-features = false } dhp-bridge = { path = "./primitives/bridge", default-features = false } -pallet-external-validators = { path = "./pallets/external-validators", default-features = false } -pallet-external-validators-rewards = { path = "./pallets/external-validators-rewards", default-features = false } -pallet-external-validators-rewards-runtime-api = { path = "./pallets/external-validators-rewards/runtime-api", default-features = false } -pallet-external-validator-slashes = { path = "./pallets/external-validator-slashes", default-features = false } -pallet-outbound-commitment-store = { path = "./pallets/outbound-commitment-store", default-features = false } pallet-datahaven-native-transfer = { path = "./pallets/datahaven-native-transfer", default-features = false } pallet-evm-precompile-balances-erc20 = { path = "./precompiles/erc20-balances", default-features = false } pallet-evm-precompile-batch = { path = "./precompiles/batch", default-features = false } @@ -43,6 +38,11 @@ pallet-evm-precompile-preimage = { path = "./precompiles/preimage", default-feat pallet-evm-precompile-proxy = { path = "./precompiles/proxy", default-features = false } pallet-evm-precompile-referenda = { path = "./precompiles/referenda", default-features = false } pallet-evm-precompile-registry = { path = "./precompiles/precompile-registry", default-features = false } +pallet-external-validator-slashes = { path = "./pallets/external-validator-slashes", default-features = false } +pallet-external-validators = { path = "./pallets/external-validators", default-features = false } +pallet-external-validators-rewards = { path = "./pallets/external-validators-rewards", default-features = false } +pallet-external-validators-rewards-runtime-api = { path = "./pallets/external-validators-rewards/runtime-api", default-features = false } +pallet-outbound-commitment-store = { path = "./pallets/outbound-commitment-store", default-features = false } # Crates.io (wasm) alloy-core = { version = "0.8.15", default-features = false } @@ -64,6 +64,7 @@ hex = { version = "0.4.3", default-features = false } hex-literal = { version = "0.3.4" } impl-serde = { version = "0.5.0", default-features = false } impl-trait-for-tuples = { version = "0.2.2" } +itoa = { version = "1.0" } jsonrpsee = { version = "0.24.3" } libsecp256k1 = { version = "0.7", default-features = false } log = { version = "0.4.25" } @@ -264,43 +265,43 @@ fc-storage = { git = "https://github.com/polkadot-evm/frontier", branch = "stabl # StorageHub ## Runtime -pallet-bucket-nfts = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-cr-randomness = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-file-system = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-file-system-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-payment-streams = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-payment-streams-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-proofs-dealer = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-proofs-dealer-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-randomness = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-storage-providers = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -pallet-storage-providers-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shp-constants = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shp-data-price-updater = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shp-file-key-verifier = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shp-file-metadata = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shp-forest-verifier = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shp-traits = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shp-treasury-funding = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -storage-hub-runtime = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } +pallet-bucket-nfts = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-cr-randomness = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-file-system = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-file-system-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-payment-streams = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-payment-streams-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-proofs-dealer = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-proofs-dealer-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-randomness = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-storage-providers = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +pallet-storage-providers-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shp-constants = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shp-data-price-updater = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shp-file-key-verifier = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shp-file-metadata = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shp-forest-verifier = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shp-traits = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shp-treasury-funding = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +storage-hub-runtime = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } ## Client cumulus-client-service = { git = "https://github.com/paritytech/polkadot-sdk.git", tag = "polkadot-stable2412-6", default-features = false } -shc-actors-derive = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-actors-framework = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-blockchain-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-client = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-common = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-file-manager = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-file-transfer-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-fisherman-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-forest-manager = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-indexer-db = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-indexer-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shc-rpc = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shp-opaque = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } -shp-types = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } +shc-actors-derive = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-actors-framework = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-blockchain-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-client = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-common = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-file-manager = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-file-transfer-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-fisherman-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-forest-manager = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-indexer-db = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-indexer-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shc-rpc = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shp-opaque = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } +shp-types = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } ## Precompiles -pallet-evm-precompile-file-system = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.0.6-alpha", default-features = false } +pallet-evm-precompile-file-system = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.1.1", default-features = false } # The list of dependencies below (which can be both direct and indirect dependencies) are crates # that are suspected to be CPU-intensive, and that are unlikely to require debugging (as some of diff --git a/operator/node/src/cli.rs b/operator/node/src/cli.rs index 5cca9cde..cd7bf3fb 100644 --- a/operator/node/src/cli.rs +++ b/operator/node/src/cli.rs @@ -600,6 +600,19 @@ pub struct FishermanConfigurations { required_if_eq("fisherman", "true") )] pub fisherman_database_url: Option, + + /// Maximum number of incomplete storage requests to process after the first block processed coming out of syncing mode. + #[arg(long, value_name = "COUNT", default_value = "10000", value_parser = clap::value_parser!(u32).range(1..))] + pub fisherman_incomplete_sync_max: u32, + + /// Page size for incomplete storage request pagination. + /// Must be at least 1. + #[arg(long, value_name = "SIZE", default_value = "256", value_parser = clap::value_parser!(u32).range(1..))] + pub fisherman_incomplete_sync_page_size: u32, + + /// The minimum number of blocks between the last processed block and the current best block to consider the fisherman out of sync. + #[arg(long, default_value = "5")] + pub fisherman_sync_mode_min_blocks_behind: u32, } impl FishermanConfigurations { @@ -610,6 +623,9 @@ impl FishermanConfigurations { .fisherman_database_url .clone() .expect("Fisherman database URL is required"), + incomplete_sync_max: self.fisherman_incomplete_sync_max, + incomplete_sync_page_size: self.fisherman_incomplete_sync_page_size, + sync_mode_min_blocks_behind: self.fisherman_sync_mode_min_blocks_behind, maintenance_mode: false, // Skipping maintenance mode for now }) } else { diff --git a/operator/node/src/service.rs b/operator/node/src/service.rs index fe191f4f..7f3316a2 100644 --- a/operator/node/src/service.rs +++ b/operator/node/src/service.rs @@ -1246,7 +1246,9 @@ async fn configure_and_spawn_fisherman( fisherman_builder.with_indexer_db_pool(Some(db_pool.clone())); // Spawn the fisherman service - fisherman_builder.with_fisherman(client.clone()).await; + fisherman_builder + .with_fisherman(client.clone(), &fisherman_options) + .await; // All variables below are not needed for the fisherman service to operate but required by the StorageHubHandler // TODO: Refactor this once we have a proper setup to support role based StorageHubHandler builder diff --git a/operator/runtime/mainnet/Cargo.toml b/operator/runtime/mainnet/Cargo.toml index b65b736b..30c2d90a 100644 --- a/operator/runtime/mainnet/Cargo.toml +++ b/operator/runtime/mainnet/Cargo.toml @@ -27,11 +27,11 @@ frame-metadata-hash-extension = { workspace = true } frame-support = { workspace = true, features = ["experimental"] } frame-system = { workspace = true } frame-system-benchmarking = { workspace = true, optional = true } -pallet-session-benchmarking = { workspace = true, optional = true } frame-system-rpc-runtime-api = { workspace = true } frame-try-runtime = { workspace = true, optional = true } hex = { workspace = true } hex-literal = { workspace = true } +itoa = { workspace = true } log = { workspace = true } num-bigint = { workspace = true } num_enum = { workspace = true } @@ -42,6 +42,7 @@ pallet-beefy = { workspace = true } pallet-beefy-mmr = { workspace = true } pallet-collective = { workspace = true } pallet-conviction-voting = { workspace = true } +pallet-datahaven-native-transfer = { workspace = true } pallet-ethereum = { workspace = true, features = ["forbid-evm-reentrancy"] } pallet-evm = { workspace = true, features = ["forbid-evm-reentrancy"] } pallet-evm-chain-id = { workspace = true } @@ -50,10 +51,10 @@ pallet-evm-precompile-bn128 = { workspace = true } pallet-evm-precompile-modexp = { workspace = true } pallet-evm-precompile-sha3fips = { workspace = true } pallet-evm-precompile-simple = { workspace = true } +pallet-external-validator-slashes = { workspace = true } pallet-external-validators = { workspace = true } pallet-external-validators-rewards = { workspace = true } pallet-external-validators-rewards-runtime-api = { workspace = true } -pallet-external-validator-slashes = { workspace = true } pallet-grandpa = { workspace = true } pallet-identity = { workspace = true } pallet-im-online = { workspace = true } @@ -63,20 +64,20 @@ pallet-mmr = { workspace = true } pallet-multisig = { workspace = true } pallet-offences = { workspace = true } pallet-outbound-commitment-store = { workspace = true } -pallet-datahaven-native-transfer = { workspace = true } pallet-parameters = { workspace = true } pallet-preimage = { workspace = true } -pallet-safe-mode = { workspace = true } -pallet-tx-pause = { workspace = true } pallet-proxy = { workspace = true } pallet-referenda = { workspace = true } +pallet-safe-mode = { workspace = true } pallet-scheduler = { workspace = true } pallet-session = { workspace = true } +pallet-session-benchmarking = { workspace = true, optional = true } pallet-sudo = { workspace = true } pallet-timestamp = { workspace = true } pallet-transaction-payment = { workspace = true } pallet-transaction-payment-rpc-runtime-api = { workspace = true } pallet-treasury = { workspace = true } +pallet-tx-pause = { workspace = true } pallet-utility = { workspace = true } pallet-whitelist = { workspace = true } polkadot-primitives = { workspace = true } @@ -118,11 +119,11 @@ sp-std = { workspace = true } sp-storage = { workspace = true } sp-transaction-pool = { workspace = true } sp-version = { workspace = true, features = ["serde"] } +strum = { workspace = true } +strum_macros = { workspace = true } xcm = { workspace = true } xcm-builder = { workspace = true } xcm-executor = { workspace = true } -strum = { workspace = true } -strum_macros = { workspace = true } # DataHaven precompiles pallet-evm-precompile-balances-erc20 = { workspace = true } @@ -138,10 +139,11 @@ pallet-evm-precompile-registry = { workspace = true } # StorageHub pallet-bucket-nfts = { workspace = true } -pallet-nfts = { workspace = true } pallet-cr-randomness = { workspace = true } +pallet-evm-precompile-file-system = { workspace = true } pallet-file-system = { workspace = true } pallet-file-system-runtime-api = { workspace = true } +pallet-nfts = { workspace = true } pallet-payment-streams = { workspace = true } pallet-payment-streams-runtime-api = { workspace = true } pallet-proofs-dealer = { workspace = true } @@ -151,14 +153,13 @@ pallet-storage-providers = { workspace = true } pallet-storage-providers-runtime-api = { workspace = true } shc-common = { workspace = true, optional = true } shp-constants = { workspace = true } +shp-data-price-updater = { workspace = true } +shp-file-key-verifier = { workspace = true } shp-file-metadata = { workspace = true } +shp-forest-verifier = { workspace = true } shp-traits = { workspace = true } shp-treasury-funding = { workspace = true } -shp-forest-verifier = { workspace = true } -shp-file-key-verifier = { workspace = true } -shp-data-price-updater = { workspace = true } sp-trie = { workspace = true } -pallet-evm-precompile-file-system = { workspace = true } [build-dependencies] substrate-wasm-builder = { workspace = true, optional = true, default-features = true } @@ -173,9 +174,9 @@ precompile-utils = { workspace = true, features = ["std", "testing"] } # Snowbridge testing snowbridge-core = { workspace = true } +snowbridge-outbound-queue-primitives = { workspace = true } snowbridge-pallet-system = { workspace = true } snowbridge-pallet-system-v2 = { workspace = true } -snowbridge-outbound-queue-primitives = { workspace = true } [features] default = ["std"] diff --git a/operator/runtime/mainnet/src/configs/storagehub/mod.rs b/operator/runtime/mainnet/src/configs/storagehub/mod.rs index ff265f5d..72d42735 100644 --- a/operator/runtime/mainnet/src/configs/storagehub/mod.rs +++ b/operator/runtime/mainnet/src/configs/storagehub/mod.rs @@ -37,7 +37,7 @@ use sp_runtime::traits::Zero; use sp_runtime::SaturatedConversion; use sp_runtime::{traits::BlakeTwo256, Perbill}; use sp_std::convert::{From, Into}; -use sp_std::vec; +use sp_std::{vec, vec::Vec}; use sp_trie::{LayoutV1, TrieConfiguration, TrieLayout}; #[cfg(feature = "std")] @@ -450,6 +450,25 @@ parameter_types! { pub const FileSystemFileDeletionRequestHoldReason: RuntimeHoldReason = RuntimeHoldReason::FileSystem(pallet_file_system::HoldReason::FileDeletionRequestHold); } +// Converts a given signed message in a EIP-191 compliant message bytes to verify. +/// EIP-191: https://eips.ethereum.org/EIPS/eip-191 +/// "\x19Ethereum Signed Message:\n" + len(message) + message" +pub struct Eip191Adapter; +impl shp_traits::MessageAdapter for Eip191Adapter { + fn bytes_to_verify(message: &[u8]) -> Vec { + const PREFIX: &str = "\x19Ethereum Signed Message:\n"; + let len = message.len(); + let mut len_string_buffer = itoa::Buffer::new(); + let len_string = len_string_buffer.format(len); + + let mut eth_message = Vec::with_capacity(PREFIX.len() + len_string.len() + len); + eth_message.extend_from_slice(PREFIX.as_bytes()); + eth_message.extend_from_slice(len_string.as_bytes()); + eth_message.extend_from_slice(message); + eth_message + } +} + impl pallet_file_system::Config for Runtime { type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_file_system::weights::SubstrateWeight; @@ -501,6 +520,8 @@ impl pallet_file_system::Config for Runtime { type TickRangeToMaximumThreshold = runtime_config::TickRangeToMaximumThreshold; type OffchainSignature = Signature; type OffchainPublicKey = ::Signer; + type MaxFileDeletionsPerExtrinsic = ConstU32<100>; + type IntentionMsgAdapter = Eip191Adapter; } impl MostlyStablePriceIndexUpdaterConfig for Runtime { diff --git a/operator/runtime/mainnet/src/lib.rs b/operator/runtime/mainnet/src/lib.rs index 5dfb795d..ee307e30 100644 --- a/operator/runtime/mainnet/src/lib.rs +++ b/operator/runtime/mainnet/src/lib.rs @@ -1245,6 +1245,9 @@ impl_runtime_apis! { fn query_incomplete_storage_request_metadata(file_key: H256) -> Result, StorageDataUnit, H256, BackupStorageProviderId>, QueryIncompleteStorageRequestMetadataError> { FileSystem::query_incomplete_storage_request_metadata(file_key) } + fn list_incomplete_storage_request_keys(start_after: Option, limit: u32) -> Vec { + FileSystem::list_incomplete_storage_request_keys(start_after, limit) + } } impl pallet_payment_streams_runtime_api::PaymentStreamsApi, Balance, AccountId> for Runtime { diff --git a/operator/runtime/stagenet/Cargo.toml b/operator/runtime/stagenet/Cargo.toml index 9e31449c..9cee50bc 100644 --- a/operator/runtime/stagenet/Cargo.toml +++ b/operator/runtime/stagenet/Cargo.toml @@ -27,11 +27,11 @@ frame-metadata-hash-extension = { workspace = true } frame-support = { workspace = true, features = ["experimental"] } frame-system = { workspace = true } frame-system-benchmarking = { workspace = true, optional = true } -pallet-session-benchmarking = { workspace = true, optional = true } frame-system-rpc-runtime-api = { workspace = true } frame-try-runtime = { workspace = true, optional = true } hex = { workspace = true } hex-literal = { workspace = true } +itoa = { workspace = true } log = { workspace = true } num-bigint = { workspace = true } num_enum = { workspace = true } @@ -42,6 +42,7 @@ pallet-beefy = { workspace = true } pallet-beefy-mmr = { workspace = true } pallet-collective = { workspace = true } pallet-conviction-voting = { workspace = true } +pallet-datahaven-native-transfer = { workspace = true } pallet-ethereum = { workspace = true, features = ["forbid-evm-reentrancy"] } pallet-evm = { workspace = true, features = ["forbid-evm-reentrancy"] } pallet-evm-chain-id = { workspace = true } @@ -50,10 +51,10 @@ pallet-evm-precompile-bn128 = { workspace = true } pallet-evm-precompile-modexp = { workspace = true } pallet-evm-precompile-sha3fips = { workspace = true } pallet-evm-precompile-simple = { workspace = true } +pallet-external-validator-slashes = { workspace = true } pallet-external-validators = { workspace = true } pallet-external-validators-rewards = { workspace = true } pallet-external-validators-rewards-runtime-api = { workspace = true } -pallet-external-validator-slashes = { workspace = true } pallet-grandpa = { workspace = true } pallet-identity = { workspace = true } pallet-im-online = { workspace = true } @@ -63,20 +64,20 @@ pallet-mmr = { workspace = true } pallet-multisig = { workspace = true } pallet-offences = { workspace = true } pallet-outbound-commitment-store = { workspace = true } -pallet-datahaven-native-transfer = { workspace = true } pallet-parameters = { workspace = true } pallet-preimage = { workspace = true } -pallet-safe-mode = { workspace = true } -pallet-tx-pause = { workspace = true } pallet-proxy = { workspace = true } pallet-referenda = { workspace = true } +pallet-safe-mode = { workspace = true } pallet-scheduler = { workspace = true } pallet-session = { workspace = true } +pallet-session-benchmarking = { workspace = true, optional = true } pallet-sudo = { workspace = true } pallet-timestamp = { workspace = true } pallet-transaction-payment = { workspace = true } pallet-transaction-payment-rpc-runtime-api = { workspace = true } pallet-treasury = { workspace = true } +pallet-tx-pause = { workspace = true } pallet-utility = { workspace = true } pallet-whitelist = { workspace = true } polkadot-primitives = { workspace = true } @@ -128,20 +129,21 @@ xcm-executor = { workspace = true } pallet-evm-precompile-balances-erc20 = { workspace = true } pallet-evm-precompile-batch = { workspace = true } pallet-evm-precompile-call-permit = { workspace = true } -pallet-evm-precompile-preimage = { workspace = true } pallet-evm-precompile-collective = { workspace = true } pallet-evm-precompile-conviction-voting = { workspace = true } pallet-evm-precompile-identity = { workspace = true } +pallet-evm-precompile-preimage = { workspace = true } pallet-evm-precompile-proxy = { workspace = true } pallet-evm-precompile-referenda = { workspace = true } pallet-evm-precompile-registry = { workspace = true } # StorageHub pallet-bucket-nfts = { workspace = true } -pallet-nfts = { workspace = true } pallet-cr-randomness = { workspace = true } +pallet-evm-precompile-file-system = { workspace = true } pallet-file-system = { workspace = true } pallet-file-system-runtime-api = { workspace = true } +pallet-nfts = { workspace = true } pallet-payment-streams = { workspace = true } pallet-payment-streams-runtime-api = { workspace = true } pallet-proofs-dealer = { workspace = true } @@ -151,14 +153,13 @@ pallet-storage-providers = { workspace = true } pallet-storage-providers-runtime-api = { workspace = true } shc-common = { workspace = true, optional = true } shp-constants = { workspace = true } +shp-data-price-updater = { workspace = true } +shp-file-key-verifier = { workspace = true } shp-file-metadata = { workspace = true } +shp-forest-verifier = { workspace = true } shp-traits = { workspace = true } shp-treasury-funding = { workspace = true } -shp-forest-verifier = { workspace = true } -shp-file-key-verifier = { workspace = true } -shp-data-price-updater = { workspace = true } sp-trie = { workspace = true } -pallet-evm-precompile-file-system = { workspace = true } [build-dependencies] substrate-wasm-builder = { workspace = true, optional = true, default-features = true } @@ -173,9 +174,9 @@ precompile-utils = { workspace = true, features = ["std", "testing"] } # Snowbridge testing snowbridge-core = { workspace = true } +snowbridge-outbound-queue-primitives = { workspace = true } snowbridge-pallet-system = { workspace = true } snowbridge-pallet-system-v2 = { workspace = true } -snowbridge-outbound-queue-primitives = { workspace = true } [features] default = ["std"] diff --git a/operator/runtime/stagenet/src/configs/storagehub/mod.rs b/operator/runtime/stagenet/src/configs/storagehub/mod.rs index ff265f5d..72d42735 100644 --- a/operator/runtime/stagenet/src/configs/storagehub/mod.rs +++ b/operator/runtime/stagenet/src/configs/storagehub/mod.rs @@ -37,7 +37,7 @@ use sp_runtime::traits::Zero; use sp_runtime::SaturatedConversion; use sp_runtime::{traits::BlakeTwo256, Perbill}; use sp_std::convert::{From, Into}; -use sp_std::vec; +use sp_std::{vec, vec::Vec}; use sp_trie::{LayoutV1, TrieConfiguration, TrieLayout}; #[cfg(feature = "std")] @@ -450,6 +450,25 @@ parameter_types! { pub const FileSystemFileDeletionRequestHoldReason: RuntimeHoldReason = RuntimeHoldReason::FileSystem(pallet_file_system::HoldReason::FileDeletionRequestHold); } +// Converts a given signed message in a EIP-191 compliant message bytes to verify. +/// EIP-191: https://eips.ethereum.org/EIPS/eip-191 +/// "\x19Ethereum Signed Message:\n" + len(message) + message" +pub struct Eip191Adapter; +impl shp_traits::MessageAdapter for Eip191Adapter { + fn bytes_to_verify(message: &[u8]) -> Vec { + const PREFIX: &str = "\x19Ethereum Signed Message:\n"; + let len = message.len(); + let mut len_string_buffer = itoa::Buffer::new(); + let len_string = len_string_buffer.format(len); + + let mut eth_message = Vec::with_capacity(PREFIX.len() + len_string.len() + len); + eth_message.extend_from_slice(PREFIX.as_bytes()); + eth_message.extend_from_slice(len_string.as_bytes()); + eth_message.extend_from_slice(message); + eth_message + } +} + impl pallet_file_system::Config for Runtime { type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_file_system::weights::SubstrateWeight; @@ -501,6 +520,8 @@ impl pallet_file_system::Config for Runtime { type TickRangeToMaximumThreshold = runtime_config::TickRangeToMaximumThreshold; type OffchainSignature = Signature; type OffchainPublicKey = ::Signer; + type MaxFileDeletionsPerExtrinsic = ConstU32<100>; + type IntentionMsgAdapter = Eip191Adapter; } impl MostlyStablePriceIndexUpdaterConfig for Runtime { diff --git a/operator/runtime/stagenet/src/lib.rs b/operator/runtime/stagenet/src/lib.rs index 69878dd2..371b9c65 100644 --- a/operator/runtime/stagenet/src/lib.rs +++ b/operator/runtime/stagenet/src/lib.rs @@ -1248,6 +1248,9 @@ impl_runtime_apis! { fn query_incomplete_storage_request_metadata(file_key: H256) -> Result, StorageDataUnit, H256, BackupStorageProviderId>, QueryIncompleteStorageRequestMetadataError> { FileSystem::query_incomplete_storage_request_metadata(file_key) } + fn list_incomplete_storage_request_keys(start_after: Option, limit: u32) -> Vec { + FileSystem::list_incomplete_storage_request_keys(start_after, limit) + } } impl pallet_payment_streams_runtime_api::PaymentStreamsApi, Balance, AccountId> for Runtime { diff --git a/operator/runtime/testnet/Cargo.toml b/operator/runtime/testnet/Cargo.toml index f88dbd1b..9e08f53a 100644 --- a/operator/runtime/testnet/Cargo.toml +++ b/operator/runtime/testnet/Cargo.toml @@ -27,11 +27,11 @@ frame-metadata-hash-extension = { workspace = true } frame-support = { workspace = true, features = ["experimental"] } frame-system = { workspace = true } frame-system-benchmarking = { workspace = true, optional = true } -pallet-session-benchmarking = { workspace = true, optional = true } frame-system-rpc-runtime-api = { workspace = true } frame-try-runtime = { workspace = true, optional = true } hex = { workspace = true } hex-literal = { workspace = true } +itoa = { workspace = true } log = { workspace = true } num-bigint = { workspace = true } num_enum = { workspace = true } @@ -52,10 +52,10 @@ pallet-evm-precompile-conviction-voting = { workspace = true } pallet-evm-precompile-modexp = { workspace = true } pallet-evm-precompile-sha3fips = { workspace = true } pallet-evm-precompile-simple = { workspace = true } +pallet-external-validator-slashes = { workspace = true } pallet-external-validators = { workspace = true } pallet-external-validators-rewards = { workspace = true } pallet-external-validators-rewards-runtime-api = { workspace = true } -pallet-external-validator-slashes = { workspace = true } pallet-grandpa = { workspace = true } pallet-identity = { workspace = true } pallet-im-online = { workspace = true } @@ -67,17 +67,18 @@ pallet-offences = { workspace = true } pallet-outbound-commitment-store = { workspace = true } pallet-parameters = { workspace = true } pallet-preimage = { workspace = true } -pallet-safe-mode = { workspace = true } -pallet-tx-pause = { workspace = true } pallet-proxy = { workspace = true } pallet-referenda = { workspace = true } +pallet-safe-mode = { workspace = true } pallet-scheduler = { workspace = true } pallet-session = { workspace = true } +pallet-session-benchmarking = { workspace = true, optional = true } pallet-sudo = { workspace = true } pallet-timestamp = { workspace = true } pallet-transaction-payment = { workspace = true } pallet-transaction-payment-rpc-runtime-api = { workspace = true } pallet-treasury = { workspace = true } +pallet-tx-pause = { workspace = true } pallet-utility = { workspace = true } pallet-whitelist = { workspace = true } polkadot-primitives = { workspace = true } @@ -119,29 +120,30 @@ sp-std = { workspace = true } sp-storage = { workspace = true } sp-transaction-pool = { workspace = true } sp-version = { workspace = true, features = ["serde"] } +strum = { workspace = true } +strum_macros = { workspace = true } xcm = { workspace = true } xcm-builder = { workspace = true } xcm-executor = { workspace = true } -strum = { workspace = true } -strum_macros = { workspace = true } # DataHaven precompiles pallet-evm-precompile-balances-erc20 = { workspace = true } pallet-evm-precompile-batch = { workspace = true } pallet-evm-precompile-call-permit = { workspace = true } -pallet-evm-precompile-preimage = { workspace = true } pallet-evm-precompile-collective = { workspace = true } pallet-evm-precompile-identity = { workspace = true } +pallet-evm-precompile-preimage = { workspace = true } pallet-evm-precompile-proxy = { workspace = true } pallet-evm-precompile-referenda = { workspace = true } pallet-evm-precompile-registry = { workspace = true } # StorageHub pallet-bucket-nfts = { workspace = true } -pallet-nfts = { workspace = true } pallet-cr-randomness = { workspace = true } +pallet-evm-precompile-file-system = { workspace = true } pallet-file-system = { workspace = true } pallet-file-system-runtime-api = { workspace = true } +pallet-nfts = { workspace = true } pallet-payment-streams = { workspace = true } pallet-payment-streams-runtime-api = { workspace = true } pallet-proofs-dealer = { workspace = true } @@ -151,14 +153,13 @@ pallet-storage-providers = { workspace = true } pallet-storage-providers-runtime-api = { workspace = true } shc-common = { workspace = true, optional = true } shp-constants = { workspace = true } +shp-data-price-updater = { workspace = true } +shp-file-key-verifier = { workspace = true } shp-file-metadata = { workspace = true } +shp-forest-verifier = { workspace = true } shp-traits = { workspace = true } shp-treasury-funding = { workspace = true } -shp-forest-verifier = { workspace = true } -shp-file-key-verifier = { workspace = true } -shp-data-price-updater = { workspace = true } sp-trie = { workspace = true } -pallet-evm-precompile-file-system = { workspace = true } [build-dependencies] substrate-wasm-builder = { workspace = true, optional = true, default-features = true } diff --git a/operator/runtime/testnet/src/configs/storagehub/mod.rs b/operator/runtime/testnet/src/configs/storagehub/mod.rs index ff265f5d..72d42735 100644 --- a/operator/runtime/testnet/src/configs/storagehub/mod.rs +++ b/operator/runtime/testnet/src/configs/storagehub/mod.rs @@ -37,7 +37,7 @@ use sp_runtime::traits::Zero; use sp_runtime::SaturatedConversion; use sp_runtime::{traits::BlakeTwo256, Perbill}; use sp_std::convert::{From, Into}; -use sp_std::vec; +use sp_std::{vec, vec::Vec}; use sp_trie::{LayoutV1, TrieConfiguration, TrieLayout}; #[cfg(feature = "std")] @@ -450,6 +450,25 @@ parameter_types! { pub const FileSystemFileDeletionRequestHoldReason: RuntimeHoldReason = RuntimeHoldReason::FileSystem(pallet_file_system::HoldReason::FileDeletionRequestHold); } +// Converts a given signed message in a EIP-191 compliant message bytes to verify. +/// EIP-191: https://eips.ethereum.org/EIPS/eip-191 +/// "\x19Ethereum Signed Message:\n" + len(message) + message" +pub struct Eip191Adapter; +impl shp_traits::MessageAdapter for Eip191Adapter { + fn bytes_to_verify(message: &[u8]) -> Vec { + const PREFIX: &str = "\x19Ethereum Signed Message:\n"; + let len = message.len(); + let mut len_string_buffer = itoa::Buffer::new(); + let len_string = len_string_buffer.format(len); + + let mut eth_message = Vec::with_capacity(PREFIX.len() + len_string.len() + len); + eth_message.extend_from_slice(PREFIX.as_bytes()); + eth_message.extend_from_slice(len_string.as_bytes()); + eth_message.extend_from_slice(message); + eth_message + } +} + impl pallet_file_system::Config for Runtime { type RuntimeEvent = RuntimeEvent; type WeightInfo = pallet_file_system::weights::SubstrateWeight; @@ -501,6 +520,8 @@ impl pallet_file_system::Config for Runtime { type TickRangeToMaximumThreshold = runtime_config::TickRangeToMaximumThreshold; type OffchainSignature = Signature; type OffchainPublicKey = ::Signer; + type MaxFileDeletionsPerExtrinsic = ConstU32<100>; + type IntentionMsgAdapter = Eip191Adapter; } impl MostlyStablePriceIndexUpdaterConfig for Runtime { diff --git a/operator/runtime/testnet/src/lib.rs b/operator/runtime/testnet/src/lib.rs index c20bea53..6904b82d 100644 --- a/operator/runtime/testnet/src/lib.rs +++ b/operator/runtime/testnet/src/lib.rs @@ -1244,6 +1244,9 @@ impl_runtime_apis! { fn query_incomplete_storage_request_metadata(file_key: H256) -> Result, StorageDataUnit, H256, BackupStorageProviderId>, QueryIncompleteStorageRequestMetadataError> { FileSystem::query_incomplete_storage_request_metadata(file_key) } + fn list_incomplete_storage_request_keys(start_after: Option, limit: u32) -> Vec { + FileSystem::list_incomplete_storage_request_keys(start_after, limit) + } } impl pallet_payment_streams_runtime_api::PaymentStreamsApi, Balance, AccountId> for Runtime { diff --git a/test/.papi/descriptors/package.json b/test/.papi/descriptors/package.json index f91b756b..0e2e9888 100644 --- a/test/.papi/descriptors/package.json +++ b/test/.papi/descriptors/package.json @@ -1,5 +1,5 @@ { - "version": "0.1.0-autogenerated.2256885919410986602", + "version": "0.1.0-autogenerated.40127769317338577", "name": "@polkadot-api/descriptors", "files": [ "dist" diff --git a/test/.papi/metadata/datahaven.scale b/test/.papi/metadata/datahaven.scale index bbf4e26c..9668885d 100644 Binary files a/test/.papi/metadata/datahaven.scale and b/test/.papi/metadata/datahaven.scale differ