datahaven/operator/node/Cargo.toml

175 lines
6.9 KiB
TOML
Raw Permalink Normal View History

[package]
authors = { workspace = true }
description = "A solochain node template built with Substrate, part of Polkadot Sdk."
edition = { workspace = true }
homepage = { workspace = true }
license = "Unlicense"
name = "datahaven-node"
publish = false
repository = { workspace = true }
version = { workspace = true }
build = "build.rs"
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
# Local
datahaven-mainnet-runtime = { workspace = true }
datahaven-runtime-common = { workspace = true }
datahaven-stagenet-runtime = { workspace = true }
datahaven-testnet-runtime = { workspace = true }
# Crates.io
clap = { features = ["derive"], workspace = true }
codec = { workspace = true }
flume = { workspace = true }
futures = { features = ["thread-pool"], workspace = true }
hex-literal = { workspace = true }
jsonrpsee = { features = ["server"], workspace = true }
log = { workspace = true }
openssl-sys = { workspace = true }
serde_json = { workspace = true, default-features = true }
url = { workspace = true }
async-channel = { workspace = true }
#MMR
mmr-rpc = { workspace = true, default-features = true }
pallet-beefy-mmr = { workspace = true, default-features = true }
pallet-mmr = { workspace = true, default-features = true }
# Polkadot SDK
frame-benchmarking-cli = { workspace = true, default-features = true }
frame-metadata-hash-extension = { workspace = true, default-features = true }
frame-system = { workspace = true, default-features = true }
frame-system-rpc-runtime-api = { workspace = true }
pallet-im-online = { workspace = true }
pallet-transaction-payment = { workspace = true, default-features = true }
pallet-transaction-payment-rpc = { workspace = true, default-features = true }
pallet-transaction-payment-rpc-runtime-api = { workspace = true, features = [
"std",
] }
sc-basic-authorship = { workspace = true, default-features = true }
sc-cli = { workspace = true, default-features = true }
sc-client-api = { workspace = true, default-features = true }
sc-consensus = { workspace = true, default-features = true }
sc-consensus-babe = { workspace = true, default-features = true }
sc-consensus-beefy = { workspace = true, default-features = true }
sc-consensus-beefy-rpc = { workspace = true, default-features = true }
sc-consensus-grandpa = { workspace = true, default-features = true }
sc-consensus-manual-seal = { workspace = true, default-features = true }
sc-executor = { workspace = true, default-features = true }
sc-network = { workspace = true, default-features = true }
sc-network-sync = { workspace = true }
sc-offchain = { workspace = true, default-features = true }
sc-rpc = { workspace = true, default-features = true }
sc-service = { workspace = true, default-features = true }
sc-telemetry = { workspace = true, default-features = true }
sc-transaction-pool = { workspace = true, default-features = true }
sc-transaction-pool-api = { workspace = true, default-features = true }
sp-api = { workspace = true, default-features = true }
sp-block-builder = { workspace = true, default-features = true }
sp-blockchain = { workspace = true, default-features = true }
sp-consensus-babe = { workspace = true, default-features = true }
sp-consensus-beefy = { workspace = true, default-features = true }
sp-consensus-grandpa = { workspace = true, default-features = true }
sp-core = { workspace = true, default-features = true }
sp-genesis-builder = { workspace = true, default-features = true }
sp-inherents = { workspace = true, default-features = true }
sp-io = { workspace = true, default-features = true }
sp-keyring = { workspace = true, default-features = true }
sp-offchain = { workspace = true, default-features = true }
sp-runtime = { workspace = true, default-features = true }
sp-session = { workspace = true, default-features = true }
sp-timestamp = { workspace = true, default-features = true }
sp-transaction-pool = { workspace = true, default-features = true }
substrate-frame-rpc-system = { workspace = true, default-features = true }
# Frontier
fc-api = { workspace = true }
fc-cli = { workspace = true }
fc-consensus = { workspace = true }
fc-db = { workspace = true }
fc-mapping-sync = { workspace = true, features = ["sql"] }
fc-rpc = { workspace = true, features = ["txpool"] }
fc-rpc-core = { workspace = true, features = ["txpool"] }
fc-storage = { workspace = true }
fp-account = { workspace = true }
fp-evm = { workspace = true }
fp-rpc = { workspace = true }
pallet-ethereum = { workspace = true }
# StorageHub
pallet-file-system = { workspace = true }
pallet-file-system-runtime-api = { workspace = true }
pallet-payment-streams = { workspace = true }
pallet-payment-streams-runtime-api = { workspace = true }
pallet-proofs-dealer = { workspace = true }
pallet-proofs-dealer-runtime-api = { workspace = true }
pallet-storage-providers = { workspace = true }
pallet-storage-providers-runtime-api = { workspace = true }
shc-actors-framework = { workspace = true }
shc-actors-derive = { workspace = true }
shc-blockchain-service = { workspace = true }
shc-file-transfer-service = { workspace = true }
shc-common = { workspace = true }
shc-file-manager = { workspace = true }
shc-fisherman-service = { workspace = true }
shc-forest-manager = { workspace = true }
shc-indexer-db = { workspace = true }
shc-indexer-service = { workspace = true }
shc-rpc = { workspace = true }
shc-client = { workspace = true }
shp-constants = { workspace = true }
shp-file-key-verifier = { workspace = true }
shp-file-metadata = { workspace = true }
shp-opaque = { workspace = true }
shp-traits = { workspace = true }
shp-types = { workspace = true }
sp-keystore = { workspace = true }
serde = { workspace = true, default-features = true }
cumulus-client-service = { workspace = true }
toml = { workspace = true }
[build-dependencies]
substrate-build-script-utils = { workspace = true, default-features = true }
[features]
default = ["std"]
std = [
"datahaven-runtime-common/std",
"datahaven-stagenet-runtime/std",
"datahaven-mainnet-runtime/std",
"datahaven-testnet-runtime/std",
"shp-opaque/std"
]
# Dependencies that are only required if runtime benchmarking should be build.
runtime-benchmarks = [
"frame-benchmarking-cli/runtime-benchmarks",
"frame-system/runtime-benchmarks",
"sc-service/runtime-benchmarks",
"datahaven-runtime-common/runtime-benchmarks",
"datahaven-stagenet-runtime/runtime-benchmarks",
"datahaven-mainnet-runtime/runtime-benchmarks",
"datahaven-testnet-runtime/runtime-benchmarks",
"sp-runtime/runtime-benchmarks",
]
# Enable features that allow the runtime to be tried and debugged. Name might be subject to change
# in the near future.
try-runtime = [
"frame-system/try-runtime",
"pallet-transaction-payment/try-runtime",
"datahaven-stagenet-runtime/try-runtime",
"datahaven-mainnet-runtime/try-runtime",
"datahaven-testnet-runtime/try-runtime",
"sp-runtime/try-runtime",
]
fix: resolve srtool metadata hash build error (#219) ## Summary - Fixes srtool build failure with `UnknownOpcode(252)` error during metadata hash generation - Removes hardcoded `WASM_BUILD_STD=0` to allow srtool to auto-detect correct settings based on Rust version - Adds `metadata-hash` feature to node Cargo.toml for CheckMetadataHash extension ## Root Cause The `WASM_BUILD_STD=0` setting forced srtool to use pre-built standard library crates that were compiled with incompatible WASM features. During metadata hash generation, the runtime builder encountered opcode 252 (likely from bulk memory operations) which the deserializer couldn't recognize, causing the build to fail with: ``` thread 'main' panicked at metadata_hash.rs:73:10: `Metadata::metadata_at_version` should exist.: RuntimeConstruction(Other("cannot deserialize module: UnknownOpcode(252)")) ``` ## Changes 1. **operator/scripts/build-runtime-srtool.sh**: Removed hardcoded `-e WASM_BUILD_STD=0` line - Allows srtool to determine appropriate setting based on Rust version - For Rust < 1.84: defaults to WASM_BUILD_STD=1 (enabled) - For Rust >= 1.84: defaults to WASM_BUILD_STD=0 (disabled) 2. **operator/node/Cargo.toml**: Added `metadata-hash` feature propagation - Enables metadata-hash feature for all runtime variants (stagenet, mainnet, testnet) - Required for CheckMetadataHash extension support ## Test Plan - [x] Successfully built stagenet runtime with srtool 1.88.0 - [x] Build completed in ~14 minutes without metadata hash errors - [x] Verified WASM artifacts generated correctly ## Testing Command ```bash GH_WORKFLOW_MATRIX_CHAIN=stagenet \ RUNTIME_BUILD_OPTS="--features=on-chain-release-build" \ RUNTIME_BUILD_PROFILE="production" \ GH_WORKFLOW_MATRIX_SRTOOL_IMAGE="paritytech/srtool" \ GH_WORKFLOW_MATRIX_SRTOOL_IMAGE_TAG="1.88.0" \ WASM_BUILD_STD=1 \ ./operator/scripts/build-runtime-srtool.sh ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
2025-10-10 13:04:03 +00:00
metadata-hash = [
"datahaven-stagenet-runtime/metadata-hash",
"datahaven-mainnet-runtime/metadata-hash",
"datahaven-testnet-runtime/metadata-hash",
]