Merge branch 'main' into fix/dont-pop-slash-on-failure

This commit is contained in:
Gonza Montiel 2026-01-30 10:42:01 -03:00 committed by GitHub
commit 9b0c334096
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 701 additions and 174 deletions

287
operator/Cargo.lock generated
View file

@ -1521,7 +1521,7 @@ dependencies = [
"pallet-message-queue",
"parity-scale-codec",
"scale-info",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"sp-core",
"sp-runtime",
"sp-std",
@ -2607,7 +2607,7 @@ dependencies = [
[[package]]
name = "datahaven-mainnet-runtime"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"alloy-core",
"bridge-hub-common 0.13.1",
@ -2684,6 +2684,7 @@ dependencies = [
"pallet-proofs-dealer",
"pallet-proofs-dealer-runtime-api",
"pallet-proxy",
"pallet-proxy-genesis-companion",
"pallet-randomness",
"pallet-referenda",
"pallet-safe-mode",
@ -2705,6 +2706,7 @@ dependencies = [
"polkadot-runtime-common",
"precompile-utils",
"scale-info",
"serde",
"serde_json",
"shc-common",
"shp-constants",
@ -2716,8 +2718,8 @@ dependencies = [
"shp-treasury-funding",
"shp-tx-implicits-runtime-api",
"smallvec",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-core 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"snowbridge-core 0.21.0",
"snowbridge-inbound-queue-primitives",
"snowbridge-merkle-tree",
"snowbridge-outbound-queue-primitives",
@ -2760,7 +2762,7 @@ dependencies = [
[[package]]
name = "datahaven-node"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"async-channel 1.9.0",
"clap",
@ -2871,7 +2873,7 @@ dependencies = [
[[package]]
name = "datahaven-runtime-common"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"alloy-core",
"fp-account",
@ -2905,7 +2907,7 @@ dependencies = [
[[package]]
name = "datahaven-stagenet-runtime"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"alloy-core",
"bridge-hub-common 0.13.1",
@ -2982,6 +2984,7 @@ dependencies = [
"pallet-proofs-dealer",
"pallet-proofs-dealer-runtime-api",
"pallet-proxy",
"pallet-proxy-genesis-companion",
"pallet-randomness",
"pallet-referenda",
"pallet-safe-mode",
@ -3003,6 +3006,7 @@ dependencies = [
"polkadot-runtime-common",
"precompile-utils",
"scale-info",
"serde",
"serde_json",
"shc-common",
"shp-constants",
@ -3014,8 +3018,8 @@ dependencies = [
"shp-treasury-funding",
"shp-tx-implicits-runtime-api",
"smallvec",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-core 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"snowbridge-core 0.21.0",
"snowbridge-inbound-queue-primitives",
"snowbridge-merkle-tree",
"snowbridge-outbound-queue-primitives",
@ -3058,7 +3062,7 @@ dependencies = [
[[package]]
name = "datahaven-testnet-runtime"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"alloy-core",
"bridge-hub-common 0.13.1",
@ -3135,6 +3139,7 @@ dependencies = [
"pallet-proofs-dealer",
"pallet-proofs-dealer-runtime-api",
"pallet-proxy",
"pallet-proxy-genesis-companion",
"pallet-randomness",
"pallet-referenda",
"pallet-safe-mode",
@ -3156,6 +3161,7 @@ dependencies = [
"polkadot-runtime-common",
"precompile-utils",
"scale-info",
"serde",
"serde_json",
"shc-common",
"shp-constants",
@ -3167,8 +3173,8 @@ dependencies = [
"shp-treasury-funding",
"shp-tx-implicits-runtime-api",
"smallvec",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-core 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"snowbridge-core 0.21.0",
"snowbridge-inbound-queue-primitives",
"snowbridge-merkle-tree",
"snowbridge-outbound-queue-primitives",
@ -3360,7 +3366,7 @@ dependencies = [
[[package]]
name = "dhp-bridge"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-support",
"frame-system",
@ -3368,7 +3374,7 @@ dependencies = [
"pallet-datahaven-native-transfer",
"pallet-external-validators",
"parity-scale-codec",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"snowbridge-inbound-queue-primitives",
"sp-core",
"sp-std",
@ -8618,8 +8624,8 @@ dependencies = [
[[package]]
name = "pallet-bucket-nfts"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -8675,8 +8681,8 @@ dependencies = [
[[package]]
name = "pallet-cr-randomness"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-support",
"frame-system",
@ -8695,7 +8701,7 @@ dependencies = [
[[package]]
name = "pallet-datahaven-native-transfer"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -8703,7 +8709,7 @@ dependencies = [
"pallet-balances",
"parity-scale-codec",
"scale-info",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"snowbridge-outbound-queue-primitives",
"sp-core",
"sp-io",
@ -8807,7 +8813,7 @@ dependencies = [
[[package]]
name = "pallet-evm-precompile-balances-erc20"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"fp-evm",
"frame-support",
@ -8830,7 +8836,7 @@ dependencies = [
[[package]]
name = "pallet-evm-precompile-batch"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"evm",
"fp-evm",
@ -8869,7 +8875,7 @@ dependencies = [
[[package]]
name = "pallet-evm-precompile-call-permit"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"evm",
"fp-evm",
@ -8935,7 +8941,7 @@ dependencies = [
[[package]]
name = "pallet-evm-precompile-datahaven-native-transfer"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"evm",
"fp-evm",
@ -8949,7 +8955,7 @@ dependencies = [
"parity-scale-codec",
"precompile-utils",
"scale-info",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"snowbridge-outbound-queue-primitives",
"sp-core",
"sp-io",
@ -8959,8 +8965,8 @@ dependencies = [
[[package]]
name = "pallet-evm-precompile-file-system"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"fp-account",
"fp-evm",
@ -9028,7 +9034,7 @@ dependencies = [
[[package]]
name = "pallet-evm-precompile-proxy"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"evm",
"fp-evm",
@ -9072,7 +9078,7 @@ dependencies = [
[[package]]
name = "pallet-evm-precompile-registry"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"fp-evm",
"frame-support",
@ -9123,7 +9129,7 @@ dependencies = [
"parity-scale-codec",
"scale-info",
"serde",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"snowbridge-outbound-queue-primitives",
"sp-core",
"sp-io",
@ -9133,7 +9139,7 @@ dependencies = [
[[package]]
name = "pallet-external-validators"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -9157,7 +9163,7 @@ dependencies = [
[[package]]
name = "pallet-external-validators-rewards"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -9170,7 +9176,7 @@ dependencies = [
"pallet-timestamp",
"parity-scale-codec",
"scale-info",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"snowbridge-outbound-queue-primitives",
"sp-core",
"sp-io",
@ -9199,8 +9205,8 @@ dependencies = [
[[package]]
name = "pallet-file-system"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -9226,8 +9232,8 @@ dependencies = [
[[package]]
name = "pallet-file-system-runtime-api"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"parity-scale-codec",
"scale-info",
@ -9394,7 +9400,7 @@ dependencies = [
[[package]]
name = "pallet-outbound-commitment-store"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-support",
"frame-system",
@ -9422,8 +9428,8 @@ dependencies = [
[[package]]
name = "pallet-payment-streams"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -9442,8 +9448,8 @@ dependencies = [
[[package]]
name = "pallet-payment-streams-runtime-api"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"parity-scale-codec",
"scale-info",
@ -9470,8 +9476,8 @@ dependencies = [
[[package]]
name = "pallet-proofs-dealer"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -9492,8 +9498,8 @@ dependencies = [
[[package]]
name = "pallet-proofs-dealer-runtime-api"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"parity-scale-codec",
"scale-info",
@ -9512,10 +9518,27 @@ dependencies = [
"scale-info",
]
[[package]]
name = "pallet-proxy-genesis-companion"
version = "0.21.0"
dependencies = [
"frame-support",
"frame-system",
"pallet-balances",
"pallet-proxy",
"parity-scale-codec",
"scale-info",
"serde",
"sp-core",
"sp-io",
"sp-runtime",
"sp-std",
]
[[package]]
name = "pallet-randomness"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -9655,8 +9678,8 @@ dependencies = [
[[package]]
name = "pallet-storage-providers"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -9677,8 +9700,8 @@ dependencies = [
[[package]]
name = "pallet-storage-providers-runtime-api"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"parity-scale-codec",
"scale-info",
@ -13840,8 +13863,8 @@ dependencies = [
[[package]]
name = "shc-actors-derive"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"once_cell",
"proc-macro2",
@ -13853,8 +13876,8 @@ dependencies = [
[[package]]
name = "shc-actors-framework"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"anyhow",
"bincode",
@ -13872,8 +13895,8 @@ dependencies = [
[[package]]
name = "shc-blockchain-service"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"anyhow",
"array-bytes",
@ -13928,8 +13951,8 @@ dependencies = [
[[package]]
name = "shc-blockchain-service-db"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"chrono",
"diesel",
@ -13952,8 +13975,8 @@ dependencies = [
[[package]]
name = "shc-client"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"anyhow",
"array-bytes",
@ -14026,8 +14049,8 @@ dependencies = [
[[package]]
name = "shc-common"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"anyhow",
"bigdecimal",
@ -14090,8 +14113,8 @@ dependencies = [
[[package]]
name = "shc-file-manager"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"bincode",
"hash-db",
@ -14114,8 +14137,8 @@ dependencies = [
[[package]]
name = "shc-file-transfer-service"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"anyhow",
"array-bytes",
@ -14143,8 +14166,8 @@ dependencies = [
[[package]]
name = "shc-fisherman-service"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"async-trait",
"diesel",
@ -14174,8 +14197,8 @@ dependencies = [
[[package]]
name = "shc-forest-manager"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"anyhow",
"async-trait",
@ -14200,8 +14223,8 @@ dependencies = [
[[package]]
name = "shc-indexer-db"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"bigdecimal",
"chrono",
@ -14228,8 +14251,8 @@ dependencies = [
[[package]]
name = "shc-indexer-service"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"anyhow",
"array-bytes",
@ -14279,8 +14302,8 @@ dependencies = [
[[package]]
name = "shc-rpc"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"array-bytes",
"async-trait",
@ -14325,8 +14348,8 @@ dependencies = [
[[package]]
name = "shc-telemetry"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"log",
"substrate-prometheus-endpoint",
@ -14342,8 +14365,8 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "shp-constants"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"sp-core",
"sp-runtime",
@ -14351,8 +14374,8 @@ dependencies = [
[[package]]
name = "shp-data-price-updater"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-support",
"parity-scale-codec",
@ -14366,8 +14389,8 @@ dependencies = [
[[package]]
name = "shp-file-key-verifier"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-support",
"parity-scale-codec",
@ -14384,8 +14407,8 @@ dependencies = [
[[package]]
name = "shp-file-metadata"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"hex",
"num-bigint",
@ -14400,8 +14423,8 @@ dependencies = [
[[package]]
name = "shp-forest-verifier"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-support",
"parity-scale-codec",
@ -14417,16 +14440,16 @@ dependencies = [
[[package]]
name = "shp-opaque"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"sp-runtime",
]
[[package]]
name = "shp-session-keys"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"async-trait",
"parity-scale-codec",
@ -14440,8 +14463,8 @@ dependencies = [
[[package]]
name = "shp-traits"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"frame-support",
"parity-scale-codec",
@ -14454,8 +14477,8 @@ dependencies = [
[[package]]
name = "shp-treasury-funding"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"log",
"shp-traits",
@ -14465,8 +14488,8 @@ dependencies = [
[[package]]
name = "shp-tx-implicits-runtime-api"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"parity-scale-codec",
"scale-info",
@ -14478,8 +14501,8 @@ dependencies = [
[[package]]
name = "shp-types"
version = "0.3.3"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.3#57d2a195d58d39e0d6e38a927ec312dd0f640522"
version = "0.3.5"
source = "git+https://github.com/Moonsong-Labs/storage-hub.git?tag=v0.3.5#e21f2316c07e9fc43fc67f20373e6c24a8f4d5ae"
dependencies = [
"sp-core",
"sp-runtime",
@ -14759,7 +14782,7 @@ dependencies = [
[[package]]
name = "snowbridge-beacon-primitives"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"byte-slice-cast",
"frame-support",
@ -14804,7 +14827,7 @@ dependencies = [
[[package]]
name = "snowbridge-core"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"bp-relayers",
"ethabi-decode",
@ -14881,8 +14904,8 @@ dependencies = [
"log",
"parity-scale-codec",
"scale-info",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-core 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"snowbridge-core 0.21.0",
"snowbridge-verification-primitives",
"sp-core",
"sp-io",
@ -14895,7 +14918,7 @@ dependencies = [
[[package]]
name = "snowbridge-merkle-tree"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"array-bytes",
"hex",
@ -14936,7 +14959,7 @@ dependencies = [
[[package]]
name = "snowbridge-outbound-queue-primitives"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"alloy-core",
"ethabi-decode",
@ -14948,7 +14971,7 @@ dependencies = [
"parity-scale-codec",
"polkadot-parachain-primitives",
"scale-info",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"snowbridge-verification-primitives",
"sp-arithmetic",
"sp-core",
@ -14962,12 +14985,12 @@ dependencies = [
[[package]]
name = "snowbridge-outbound-queue-v2-runtime-api"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-support",
"parity-scale-codec",
"scale-info",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"snowbridge-merkle-tree",
"snowbridge-outbound-queue-primitives",
"sp-api",
@ -14977,7 +15000,7 @@ dependencies = [
[[package]]
name = "snowbridge-pallet-ethereum-client"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -14990,8 +15013,8 @@ dependencies = [
"scale-info",
"serde",
"serde_json",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-core 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"snowbridge-core 0.21.0",
"snowbridge-ethereum 0.3.0",
"snowbridge-inbound-queue-primitives",
"snowbridge-pallet-ethereum-client-fixtures",
@ -15007,8 +15030,8 @@ name = "snowbridge-pallet-ethereum-client-fixtures"
version = "0.9.0"
dependencies = [
"hex-literal 0.3.4",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-core 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"snowbridge-core 0.21.0",
"snowbridge-inbound-queue-primitives",
"sp-core",
"sp-std",
@ -15016,7 +15039,7 @@ dependencies = [
[[package]]
name = "snowbridge-pallet-inbound-queue-v2"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"alloy-core",
"bp-relayers",
@ -15030,8 +15053,8 @@ dependencies = [
"parity-scale-codec",
"scale-info",
"serde",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-core 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"snowbridge-core 0.21.0",
"snowbridge-inbound-queue-primitives",
"snowbridge-pallet-ethereum-client",
"snowbridge-pallet-inbound-queue-v2-fixtures",
@ -15052,8 +15075,8 @@ name = "snowbridge-pallet-inbound-queue-v2-fixtures"
version = "0.10.0"
dependencies = [
"hex-literal 0.3.4",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-core 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"snowbridge-core 0.21.0",
"snowbridge-inbound-queue-primitives",
"sp-core",
"sp-std",
@ -15083,7 +15106,7 @@ dependencies = [
[[package]]
name = "snowbridge-pallet-outbound-queue-v2"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"alloy-core",
"bp-relayers",
@ -15097,8 +15120,8 @@ dependencies = [
"parity-scale-codec",
"scale-info",
"serde",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-core 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"snowbridge-core 0.21.0",
"snowbridge-inbound-queue-primitives",
"snowbridge-merkle-tree",
"snowbridge-outbound-queue-primitives",
@ -15129,7 +15152,7 @@ dependencies = [
"parity-scale-codec",
"polkadot-primitives",
"scale-info",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"snowbridge-outbound-queue-primitives",
"snowbridge-pallet-outbound-queue",
"sp-core",
@ -15142,7 +15165,7 @@ dependencies = [
[[package]]
name = "snowbridge-pallet-system-v2"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -15154,7 +15177,7 @@ dependencies = [
"parity-scale-codec",
"polkadot-primitives",
"scale-info",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"snowbridge-outbound-queue-primitives",
"snowbridge-pallet-outbound-queue-v2",
"snowbridge-pallet-system",
@ -15170,10 +15193,10 @@ dependencies = [
[[package]]
name = "snowbridge-system-v2-runtime-api"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"parity-scale-codec",
"snowbridge-core 0.20.0",
"snowbridge-core 0.21.0",
"sp-api",
"sp-std",
"staging-xcm",
@ -15181,7 +15204,7 @@ dependencies = [
[[package]]
name = "snowbridge-test-utils"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-benchmarking",
"frame-support",
@ -15201,12 +15224,12 @@ dependencies = [
[[package]]
name = "snowbridge-verification-primitives"
version = "0.20.0"
version = "0.21.0"
dependencies = [
"frame-support",
"parity-scale-codec",
"scale-info",
"snowbridge-beacon-primitives 0.20.0",
"snowbridge-beacon-primitives 0.21.0",
"sp-core",
"sp-std",
]

View file

@ -5,7 +5,7 @@ edition = "2021"
homepage = "https://datahaven.xyz/"
license = "GPL-3"
repository = "https://github.com/datahavenxyz/datahaven"
version = "0.20.0"
version = "0.21.0"
[workspace]
members = [
@ -43,6 +43,7 @@ pallet-external-validator-slashes = { path = "./pallets/external-validator-slash
pallet-external-validators = { path = "./pallets/external-validators", default-features = false }
pallet-external-validators-rewards = { path = "./pallets/external-validators-rewards", default-features = false }
pallet-outbound-commitment-store = { path = "./pallets/outbound-commitment-store", default-features = false }
pallet-proxy-genesis-companion = { path = "./pallets/proxy-genesis-companion", default-features = false }
# Crates.io (wasm)
alloy-core = { version = "0.8.15", default-features = false }
@ -265,42 +266,42 @@ 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.3.3", default-features = false }
pallet-cr-randomness = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-file-system = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-file-system-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-payment-streams = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-payment-streams-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-proofs-dealer = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-proofs-dealer-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-randomness = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-storage-providers = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-storage-providers-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-constants = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-data-price-updater = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-file-key-verifier = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-file-metadata = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-forest-verifier = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-traits = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-treasury-funding = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-bucket-nfts = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-cr-randomness = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-file-system = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-file-system-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-payment-streams = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-payment-streams-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-proofs-dealer = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-proofs-dealer-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-randomness = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-storage-providers = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
pallet-storage-providers-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-constants = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-data-price-updater = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-file-key-verifier = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-file-metadata = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-forest-verifier = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-traits = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-treasury-funding = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
## Client
shc-actors-derive = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-actors-framework = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-blockchain-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-client = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-common = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-file-manager = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-file-transfer-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-fisherman-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-forest-manager = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-indexer-db = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-indexer-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-rpc = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-opaque = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-tx-implicits-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shp-types = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
shc-actors-derive = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-actors-framework = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-blockchain-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-client = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-common = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-file-manager = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-file-transfer-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-fisherman-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-forest-manager = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-indexer-db = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-indexer-service = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shc-rpc = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-opaque = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-tx-implicits-runtime-api = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
shp-types = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
## Precompiles
pallet-evm-precompile-file-system = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.3", default-features = false }
pallet-evm-precompile-file-system = { git = "https://github.com/Moonsong-Labs/storage-hub.git", tag = "v0.3.5", default-features = false }
# Static linking

View file

@ -24,6 +24,7 @@ use shc_client::builder::{
BspUploadFileOptions, FishermanOptions, IndexerOptions, MspChargeFeesOptions,
MspMoveBucketOptions,
};
use shc_indexer_db::models::{FileFiltering, FileOrdering};
use shc_indexer_service::IndexerMode;
use shc_rpc::RpcConfig;
use shp_types::StorageDataUnit;
@ -300,6 +301,15 @@ pub struct ProviderConfigurations {
#[arg(long, value_name = "COUNT", default_value = "1024")]
pub internal_buffer_size: Option<u64>,
/// Maximum number of MSP respond storage requests to batch together (default: 20)
#[arg(
long,
value_name = "COUNT",
help_heading = "Blockchain Service Options",
default_value = "20"
)]
pub msp_respond_storage_batch_size: Option<u32>,
// ============== MSP Charge Fees task options ==============
/// Enable and configure MSP Charge Fees task.
#[arg(long)]
@ -383,6 +393,15 @@ pub struct ProviderConfigurations {
)]
pub bsp_upload_file_max_tip: Option<u128>,
/// Maximum number of BSP confirm storing requests to batch together (default: 20)
#[arg(
long,
value_name = "COUNT",
help_heading = "Blockchain Service Options",
default_value = "20"
)]
pub bsp_confirm_file_batch_size: Option<u32>,
// ============== BSP Move Bucket task options ==============
/// Enable and configure BSP Move Bucket task.
#[arg(long)]
@ -593,6 +612,16 @@ impl ProviderConfigurations {
bs_changed = true;
}
if let Some(bsp_confirm_file_batch_size) = self.bsp_confirm_file_batch_size {
bs_options.bsp_confirm_file_batch_size = Some(bsp_confirm_file_batch_size);
bs_changed = true;
}
if let Some(msp_respond_storage_batch_size) = self.msp_respond_storage_batch_size {
bs_options.msp_respond_storage_batch_size = Some(msp_respond_storage_batch_size);
bs_changed = true;
}
// Set MSP distribution flag if provided on CLI and role is MSP
if self.msp_distribute_files && provider_type == ProviderType::Msp {
bs_options.enable_msp_distribute_files = Some(true);
@ -674,6 +703,26 @@ impl IndexerConfigurations {
}
}
/// Filtering strategy for fisherman pending deletion queries.
#[derive(ValueEnum, Clone, Debug, Default)]
pub enum FishermanFiltering {
/// No filtering - process all pending deletions (default).
#[default]
None,
/// TTL-based filtering - skip deletions pending longer than threshold.
Ttl,
}
/// Ordering strategy for fisherman pending deletion queries.
#[derive(ValueEnum, Clone, Debug, Default)]
pub enum FishermanOrdering {
/// Chronological ordering - process oldest deletions first (FIFO, default).
#[default]
Chronological,
/// Randomized ordering - shuffle processing order.
Randomized,
}
#[derive(Debug, Parser, Clone)]
pub struct FishermanConfigurations {
/// Enable the fisherman service.
@ -698,11 +747,55 @@ pub struct FishermanConfigurations {
/// Maximum number of files to process per batch deletion cycle.
#[arg(long, default_value = "1000", value_parser = clap::value_parser!(u64).range(1..))]
pub fisherman_batch_deletion_limit: u64,
/// Filtering strategy for pending deletions.
#[arg(
long,
value_enum,
default_value = "none",
help_heading = "Fisherman Strategy Options"
)]
pub fisherman_filtering: FishermanFiltering,
/// Ordering strategy for pending deletions.
#[arg(
long,
value_enum,
default_value = "chronological",
help_heading = "Fisherman Strategy Options"
)]
pub fisherman_ordering: FishermanOrdering,
/// TTL threshold in seconds for pending deletions.
/// Files that have been pending deletion for longer than this threshold are skipped.
/// Required when --fisherman-filtering=ttl.
#[arg(
long,
value_parser = clap::value_parser!(u64).range(1..),
required_if_eq("fisherman_filtering", "ttl"),
help_heading = "Fisherman Strategy Options"
)]
pub fisherman_ttl_threshold_seconds: Option<u64>,
}
impl FishermanConfigurations {
pub fn fisherman_options(&self) -> Option<FishermanOptions> {
if self.fisherman {
// Convert CLI enums to indexer-db enums
let filtering = match self.fisherman_filtering {
FishermanFiltering::None => FileFiltering::None,
FishermanFiltering::Ttl => FileFiltering::Ttl {
threshold_seconds: self
.fisherman_ttl_threshold_seconds
.expect("Required when filtering=ttl"),
},
};
let ordering = match self.fisherman_ordering {
FishermanOrdering::Chronological => FileOrdering::Chronological,
FishermanOrdering::Randomized => FileOrdering::Randomized,
};
Some(FishermanOptions {
database_url: self
.fisherman_database_url
@ -711,6 +804,8 @@ impl FishermanConfigurations {
batch_interval_seconds: self.fisherman_batch_interval_seconds,
batch_deletion_limit: self.fisherman_batch_deletion_limit,
maintenance_mode: false, // Skipping maintenance mode for now
filtering,
ordering,
})
} else {
None

View file

@ -0,0 +1,40 @@
[package]
name = "pallet-proxy-genesis-companion"
authors = { workspace = true }
description = "A simple pallet that expands pallet-proxy with a genesis configuration"
edition = { workspace = true }
version = { workspace = true }
license = { workspace = true }
[dependencies]
codec = { workspace = true }
frame-support = { workspace = true }
frame-system = { workspace = true }
pallet-proxy = { workspace = true }
scale-info = { workspace = true, features = ["derive"] }
sp-runtime = { workspace = true }
sp-std = { workspace = true }
[dev-dependencies]
pallet-balances = { workspace = true, features = ["insecure_zero_ed", "std"] }
serde = { workspace = true, features = ["derive", "std"] }
sp-core = { workspace = true, features = ["std"] }
sp-io = { workspace = true, features = ["std"] }
[features]
default = ["std"]
std = [
"codec/std",
"frame-support/std",
"frame-system/std",
"pallet-proxy/std",
"scale-info/std",
"sp-runtime/std",
"sp-std/std",
]
try-runtime = [
"frame-support/try-runtime",
"frame-system/try-runtime",
"pallet-proxy/try-runtime",
"sp-runtime/try-runtime",
]

View file

@ -0,0 +1,85 @@
// Copyright 2019-2025 PureStake Inc.
// This file is part of Moonbeam.
// Moonbeam is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Moonbeam is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Moonbeam. If not, see <http://www.gnu.org/licenses/>.
//! A companion pallet to pallet-proxy
//!
//! This pallet allows you to specify proxy accounts that will exist from genesis. This
//! functionality could be moved upstream into pallet proxy eventually, but for now there are fewer
//! obstacles to including it here.
#![cfg_attr(not(feature = "std"), no_std)]
#[cfg(test)]
mod mock;
#[cfg(test)]
mod tests;
use frame_support::pallet;
pub use pallet::*;
#[pallet]
pub mod pallet {
use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::BlockNumberFor;
use sp_std::vec::Vec;
/// Pallet for configuring proxy at genesis
#[pallet::pallet]
#[pallet::without_storage_info]
pub struct Pallet<T>(PhantomData<T>);
/// This pallet requires pallet-proxy to be installed.
#[pallet::config]
pub trait Config:
frame_system::Config + pallet_proxy::Config<ProxyType = <Self as Config>::ProxyType>
{
/// This MUST be the same as in pallet_proxy or it won't compile
type ProxyType: MaybeSerializeDeserialize + Clone;
}
#[pallet::genesis_config]
pub struct GenesisConfig<T: Config> {
pub proxies: Vec<(
T::AccountId,
T::AccountId,
<T as Config>::ProxyType,
BlockNumberFor<T>,
)>,
}
impl<T: Config> Default for GenesisConfig<T> {
fn default() -> Self {
Self {
proxies: Vec::new(),
}
}
}
#[pallet::genesis_build]
impl<T: Config> BuildGenesisConfig for GenesisConfig<T> {
fn build(&self) {
for (delegator, delegatee, proxy_type, delay) in &self.proxies {
pallet_proxy::Pallet::<T>::add_proxy_delegate(
delegator,
delegatee.clone(),
proxy_type.clone(),
*delay,
)
.expect("Genesis proxy could not be added");
}
}
}
}

View file

@ -0,0 +1,172 @@
// Copyright 2019-2025 PureStake Inc.
// This file is part of Moonbeam.
// Moonbeam is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Moonbeam is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Moonbeam. If not, see <http://www.gnu.org/licenses/>.
//! A minimal runtime including the proxy-genesis-companion pallet
use super::*;
use crate as proxy_companion;
use codec::{Decode, Encode, MaxEncodedLen};
use frame_support::{
construct_runtime, derive_impl, parameter_types,
traits::{ConstU32, InstanceFilter},
};
use sp_runtime::{traits::BlakeTwo256, BuildStorage};
pub type AccountId = u64;
pub type Balance = u128;
type Block = frame_system::mocking::MockBlock<Test>;
// Configure a mock runtime to test the pallet.
construct_runtime!(
pub enum Test
{
System: frame_system,
Balances: pallet_balances,
Proxy: pallet_proxy,
ProxyGenesisCompanion: proxy_companion,
}
);
#[derive_impl(frame_system::config_preludes::TestDefaultConfig)]
impl frame_system::Config for Test {
type Block = Block;
type AccountData = pallet_balances::AccountData<Balance>;
}
parameter_types! {
pub const ExistentialDeposit: u128 = 0;
}
#[derive_impl(pallet_balances::config_preludes::TestDefaultConfig)]
impl pallet_balances::Config for Test {
type Balance = Balance;
type ExistentialDeposit = ExistentialDeposit;
type AccountStore = System;
}
parameter_types! {
pub const ProxyDepositBase: Balance = 1;
pub const ProxyDepositFactor: Balance = 1;
pub const MaxProxies: u16 = 32;
pub const AnnouncementDepositBase: Balance = 1;
pub const AnnouncementDepositFactor: Balance = 1;
pub const MaxPending: u16 = 32;
}
/// The type used to represent the kinds of proxying allowed.
#[derive(
Copy,
Clone,
Eq,
PartialEq,
Ord,
PartialOrd,
Encode,
Decode,
Debug,
MaxEncodedLen,
scale_info::TypeInfo,
serde::Serialize,
serde::Deserialize,
Default,
)]
pub struct ProxyType;
impl InstanceFilter<RuntimeCall> for ProxyType {
fn filter(&self, _c: &RuntimeCall) -> bool {
true
}
fn is_superset(&self, _o: &Self) -> bool {
true
}
}
impl pallet_proxy::Config for Test {
type RuntimeEvent = RuntimeEvent;
type RuntimeCall = RuntimeCall;
type Currency = Balances;
type ProxyType = ProxyType;
type ProxyDepositBase = ProxyDepositBase;
type ProxyDepositFactor = ProxyDepositFactor;
type MaxProxies = ConstU32<32>;
type WeightInfo = ();
type MaxPending = ConstU32<32>;
type CallHasher = BlakeTwo256;
type AnnouncementDepositBase = AnnouncementDepositBase;
type AnnouncementDepositFactor = AnnouncementDepositFactor;
}
impl Config for Test {
type ProxyType = ProxyType;
}
/// Externality builder for pallet proxy genesis companion's mock runtime
pub(crate) struct ExtBuilder {
proxies: Vec<(AccountId, AccountId)>,
balances: Vec<(AccountId, Balance)>,
}
impl Default for ExtBuilder {
fn default() -> ExtBuilder {
ExtBuilder {
proxies: Vec::new(),
balances: Vec::new(),
}
}
}
impl ExtBuilder {
pub(crate) fn with_balances(mut self, balances: Vec<(AccountId, Balance)>) -> Self {
self.balances = balances;
self
}
pub(crate) fn with_proxies(mut self, proxies: Vec<(AccountId, AccountId)>) -> Self {
self.proxies = proxies;
self
}
pub(crate) fn build(self) -> sp_io::TestExternalities {
let mut t = frame_system::GenesisConfig::<Test>::default()
.build_storage()
.expect("Frame system builds valid default genesis config");
pallet_balances::GenesisConfig::<Test> {
balances: self.balances,
..Default::default()
}
.assimilate_storage(&mut t)
.expect("Pallet balances storage can be assimilated");
let genesis_config = proxy_companion::GenesisConfig::<Test> {
// Here we add the trivial proxy type and default duration.
// This saves the test writer from having to always specify this.
proxies: self
.proxies
.into_iter()
.map(|(a, b)| (a, b, ProxyType, 100))
.collect(),
};
genesis_config
.assimilate_storage(&mut t)
.expect("Pallet proxy genesis companion storage can be assimilated");
let mut ext = sp_io::TestExternalities::new(t);
ext.execute_with(|| System::set_block_number(1));
ext
}
}

View file

@ -0,0 +1,63 @@
// Copyright 2019-2025 PureStake Inc.
// This file is part of Moonbeam.
// Moonbeam is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Moonbeam is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Moonbeam. If not, see <http://www.gnu.org/licenses/>.
//! Unit testing
use crate::mock::{ExtBuilder, Proxy, ProxyType, Test};
use pallet_proxy::ProxyDefinition;
#[test]
fn empty_genesis_works() {
ExtBuilder::default()
.build()
.execute_with(|| assert_eq!(pallet_proxy::Proxies::<Test>::iter().count(), 0))
}
#[test]
fn non_empty_genesis_works() {
ExtBuilder::default()
// Account 1 delegates to account 2
.with_proxies(vec![(1, 2)])
// Account 1 is funded to pay the proxy deposit
.with_balances(vec![(1, 10)])
.build()
.execute_with(|| {
// Lookup info that we expect to be stored from genesis
let (proxy_defs, deposit) = Proxy::proxies(1);
// Make sure that Account 1 delegates to Account 2 and nobody else
assert_eq!(proxy_defs.len(), 1);
assert_eq!(
proxy_defs[0],
ProxyDefinition {
delegate: 2,
proxy_type: ProxyType,
delay: 100
}
);
// Make sure that Account 1 has the proper deposit amount reserved
assert_eq!(deposit, 2);
})
}
#[test]
#[should_panic(expected = "Genesis proxy could not be added")]
fn genesis_fails_if_balance_insufficient() {
ExtBuilder::default()
.with_proxies(vec![(1, 2)])
.build()
.execute_with(|| ())
}

View file

@ -67,6 +67,7 @@ pallet-outbound-commitment-store = { workspace = true }
pallet-parameters = { workspace = true }
pallet-preimage = { workspace = true }
pallet-proxy = { workspace = true }
pallet-proxy-genesis-companion = { workspace = true }
pallet-referenda = { workspace = true }
pallet-safe-mode = { workspace = true }
pallet-scheduler = { workspace = true }
@ -84,6 +85,7 @@ polkadot-primitives = { workspace = true }
polkadot-runtime-common = { workspace = true }
precompile-utils = { workspace = true }
scale-info = { workspace = true, features = ["derive", "serde"] }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, default-features = false, features = [
"alloc",
] }
@ -235,6 +237,7 @@ std = [
"pallet-tx-pause/std",
"pallet-referenda/std",
"pallet-proxy/std",
"pallet-proxy-genesis-companion/std",
"pallet-scheduler/std",
"pallet-session/std",
"pallet-sudo/std",
@ -248,6 +251,7 @@ std = [
"polkadot-runtime-common/std",
"precompile-utils/std",
"scale-info/std",
"serde/std",
"serde_json/std",
"snowbridge-beacon-primitives/std",
"snowbridge-inbound-queue-primitives/std",
@ -390,6 +394,7 @@ try-runtime = [
"pallet-tx-pause/try-runtime",
"pallet-referenda/try-runtime",
"pallet-proxy/try-runtime",
"pallet-proxy-genesis-companion/try-runtime",
"pallet-scheduler/try-runtime",
"pallet-session/try-runtime",
"pallet-sudo/try-runtime",

View file

@ -49,6 +49,8 @@ use sp_runtime::{traits::AccountIdConversion, RuntimeDebug};
RuntimeDebug,
MaxEncodedLen,
TypeInfo,
serde::Serialize,
serde::Deserialize,
)]
pub enum ProxyType {
/// Allow any call to be made by the proxy account
@ -595,6 +597,8 @@ parameter_types! {
pub const MaxAdditionalFields: u32 = 100;
pub const MaxRegistrars: u32 = 20;
pub const PendingUsernameExpiration: u32 = 7 * DAYS;
pub const UsernameGracePeriod: u32 = 30 * DAYS;
pub const UsernameDeposit: Balance = deposit(0, MaxUsernameLength::get());
pub const MaxSuffixLength: u32 = 7;
pub const MaxUsernameLength: u32 = 32;
}
@ -626,8 +630,8 @@ impl pallet_identity::Config for Runtime {
type MaxSuffixLength = MaxSuffixLength;
type MaxUsernameLength = MaxUsernameLength;
type WeightInfo = pallet_identity::weights::SubstrateWeight<Runtime>;
type UsernameDeposit = ();
type UsernameGracePeriod = ();
type UsernameDeposit = UsernameDeposit;
type UsernameGracePeriod = UsernameGracePeriod;
// TODO: Re-enable after upgrade to Polkadot SDK stable2412-8
// see https://github.com/paritytech/polkadot-sdk/releases/tag/polkadot-stable2412-8
@ -827,6 +831,10 @@ impl pallet_proxy::Config for Runtime {
type AnnouncementDepositFactor = AnnouncementDepositFactor;
}
impl pallet_proxy_genesis_companion::Config for Runtime {
type ProxyType = ProxyType;
}
impl pallet_parameters::Config for Runtime {
type AdminOrigin = EnsureRoot<AccountId>;
type RuntimeEvent = RuntimeEvent;

View file

@ -500,6 +500,9 @@ mod runtime {
#[runtime::pallet_index(105)]
pub type ExternalValidatorsSlashes = pallet_external_validator_slashes;
#[runtime::pallet_index(106)]
pub type ProxyGenesisCompanion = pallet_proxy_genesis_companion;
// ╚═══════════════════ DataHaven-specific Pallets ══════════════════╝
}

View file

@ -67,6 +67,7 @@ pallet-outbound-commitment-store = { workspace = true }
pallet-parameters = { workspace = true }
pallet-preimage = { workspace = true }
pallet-proxy = { workspace = true }
pallet-proxy-genesis-companion = { workspace = true }
pallet-referenda = { workspace = true }
pallet-safe-mode = { workspace = true }
pallet-scheduler = { workspace = true }
@ -84,6 +85,7 @@ polkadot-primitives = { workspace = true }
polkadot-runtime-common = { workspace = true }
precompile-utils = { workspace = true }
scale-info = { workspace = true, features = ["derive", "serde"] }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, default-features = false, features = [
"alloc",
] }
@ -236,6 +238,7 @@ std = [
"pallet-tx-pause/std",
"pallet-referenda/std",
"pallet-proxy/std",
"pallet-proxy-genesis-companion/std",
"pallet-scheduler/std",
"pallet-session/std",
"pallet-sudo/std",
@ -249,6 +252,7 @@ std = [
"polkadot-runtime-common/std",
"precompile-utils/std",
"scale-info/std",
"serde/std",
"serde_json/std",
"snowbridge-beacon-primitives/std",
"snowbridge-inbound-queue-primitives/std",
@ -391,6 +395,7 @@ try-runtime = [
"pallet-tx-pause/try-runtime",
"pallet-referenda/try-runtime",
"pallet-proxy/try-runtime",
"pallet-proxy-genesis-companion/try-runtime",
"pallet-scheduler/try-runtime",
"pallet-session/try-runtime",
"pallet-sudo/try-runtime",

View file

@ -49,6 +49,8 @@ use sp_runtime::{traits::AccountIdConversion, RuntimeDebug};
RuntimeDebug,
MaxEncodedLen,
TypeInfo,
serde::Serialize,
serde::Deserialize,
)]
pub enum ProxyType {
/// Allow any call to be made by the proxy account
@ -592,6 +594,8 @@ parameter_types! {
pub const MaxAdditionalFields: u32 = 100;
pub const MaxRegistrars: u32 = 20;
pub const PendingUsernameExpiration: u32 = 7 * DAYS;
pub const UsernameGracePeriod: u32 = 30 * DAYS;
pub const UsernameDeposit: Balance = deposit(0, MaxUsernameLength::get());
pub const MaxSuffixLength: u32 = 7;
pub const MaxUsernameLength: u32 = 32;
}
@ -623,8 +627,8 @@ impl pallet_identity::Config for Runtime {
type MaxSuffixLength = MaxSuffixLength;
type MaxUsernameLength = MaxUsernameLength;
type WeightInfo = pallet_identity::weights::SubstrateWeight<Runtime>;
type UsernameDeposit = ();
type UsernameGracePeriod = ();
type UsernameDeposit = UsernameDeposit;
type UsernameGracePeriod = UsernameGracePeriod;
// TODO: Re-enable after upgrade to Polkadot SDK stable2412-8
// see https://github.com/paritytech/polkadot-sdk/releases/tag/polkadot-stable2412-8
@ -824,6 +828,10 @@ impl pallet_proxy::Config for Runtime {
type AnnouncementDepositFactor = AnnouncementDepositFactor;
}
impl pallet_proxy_genesis_companion::Config for Runtime {
type ProxyType = ProxyType;
}
impl pallet_parameters::Config for Runtime {
type AdminOrigin = EnsureRoot<AccountId>;
type RuntimeEvent = RuntimeEvent;

View file

@ -502,6 +502,9 @@ mod runtime {
#[runtime::pallet_index(105)]
pub type ExternalValidatorsSlashes = pallet_external_validator_slashes;
#[runtime::pallet_index(106)]
pub type ProxyGenesisCompanion = pallet_proxy_genesis_companion;
// ╚═══════════════════ DataHaven-specific Pallets ══════════════════╝
}

View file

@ -68,6 +68,7 @@ pallet-outbound-commitment-store = { workspace = true }
pallet-parameters = { workspace = true }
pallet-preimage = { workspace = true }
pallet-proxy = { workspace = true }
pallet-proxy-genesis-companion = { workspace = true }
pallet-referenda = { workspace = true }
pallet-safe-mode = { workspace = true }
pallet-scheduler = { workspace = true }
@ -85,6 +86,7 @@ polkadot-primitives = { workspace = true }
polkadot-runtime-common = { workspace = true }
precompile-utils = { workspace = true }
scale-info = { workspace = true, features = ["derive", "serde"] }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, default-features = false, features = [
"alloc",
] }
@ -234,6 +236,7 @@ std = [
"pallet-tx-pause/std",
"pallet-referenda/std",
"pallet-proxy/std",
"pallet-proxy-genesis-companion/std",
"pallet-scheduler/std",
"pallet-session/std",
"pallet-sudo/std",
@ -246,6 +249,7 @@ std = [
"polkadot-primitives/std",
"polkadot-runtime-common/std",
"scale-info/std",
"serde/std",
"serde_json/std",
"snowbridge-beacon-primitives/std",
"snowbridge-inbound-queue-primitives/std",
@ -387,6 +391,7 @@ try-runtime = [
"pallet-tx-pause/try-runtime",
"pallet-referenda/try-runtime",
"pallet-proxy/try-runtime",
"pallet-proxy-genesis-companion/try-runtime",
"pallet-scheduler/try-runtime",
"pallet-session/try-runtime",
"pallet-sudo/try-runtime",

View file

@ -49,6 +49,8 @@ use sp_runtime::{traits::AccountIdConversion, RuntimeDebug};
RuntimeDebug,
MaxEncodedLen,
TypeInfo,
serde::Serialize,
serde::Deserialize,
)]
pub enum ProxyType {
/// Allow any call to be made by the proxy account
@ -595,6 +597,8 @@ parameter_types! {
pub const MaxAdditionalFields: u32 = 100;
pub const MaxRegistrars: u32 = 20;
pub const PendingUsernameExpiration: u32 = 7 * DAYS;
pub const UsernameGracePeriod: u32 = 30 * DAYS;
pub const UsernameDeposit: Balance = deposit(0, MaxUsernameLength::get());
pub const MaxSuffixLength: u32 = 7;
pub const MaxUsernameLength: u32 = 32;
}
@ -626,8 +630,8 @@ impl pallet_identity::Config for Runtime {
type MaxSuffixLength = MaxSuffixLength;
type MaxUsernameLength = MaxUsernameLength;
type WeightInfo = pallet_identity::weights::SubstrateWeight<Runtime>;
type UsernameDeposit = ();
type UsernameGracePeriod = ();
type UsernameDeposit = UsernameDeposit;
type UsernameGracePeriod = UsernameGracePeriod;
// TODO: Re-enable after upgrade to Polkadot SDK stable2412-8
// see https://github.com/paritytech/polkadot-sdk/releases/tag/polkadot-stable2412-8
@ -827,6 +831,10 @@ impl pallet_proxy::Config for Runtime {
type AnnouncementDepositFactor = AnnouncementDepositFactor;
}
impl pallet_proxy_genesis_companion::Config for Runtime {
type ProxyType = ProxyType;
}
impl pallet_parameters::Config for Runtime {
type AdminOrigin = EnsureRoot<AccountId>;
type RuntimeEvent = RuntimeEvent;

View file

@ -500,6 +500,9 @@ mod runtime {
#[runtime::pallet_index(105)]
pub type ExternalValidatorsSlashes = pallet_external_validator_slashes;
#[runtime::pallet_index(106)]
pub type ProxyGenesisCompanion = pallet_proxy_genesis_companion;
// ╚═══════════════════ DataHaven-specific Pallets ══════════════════╝
}

View file

@ -1,5 +1,5 @@
{
"version": "0.1.0-autogenerated.18110841939960448741",
"version": "0.1.0-autogenerated.14314240478086326730",
"name": "@polkadot-api/descriptors",
"files": [
"dist"

Binary file not shown.