feat(node): Origin Chain produce su primer bloque — el bloqueo arquitectural era un diagnostico falso
El node nunca habia producido un bloque: service.rs y rpc.rs estaban fuera del build desde v0.0.49 por un «bloqueo arquitectural» que afirmaba que las crates publicadas sc-consensus-aura 0.52.0 y sp-consensus-aura 0.45.0 no tenian standalone::slot_duration_at ni from_timestamp_and_slot_duration. Las dos estan ahi, en crates.io. La nota guio la decision durante meses. Causa real, medida con cargo check (362 errores) y cargo tree: el workspace mezclaba dos releases de polkadot-sdk. Las sc-* del cliente arrastraban sp-runtime 43 y las frame-* del runtime sp-runtime 44: 36 crates del nucleo duplicadas y errores de la forma «Block no satisface Block». Cura: alinear diez versiones del Cargo.toml (sc-cli 0.55, sc-service 0.54, sc-network 0.53, sc-consensus 0.52, sc-consensus-aura 0.53, sc-consensus-grandpa 0.38, sc-offchain 48, sp-blockchain 42, substrate-frame-rpc-system 47, sc-telemetry 30.0.1). El lock solo PIERDE la generacion vieja (1210 -> 1123 entradas); ninguna crate que use el runtime cambia de version. rpc.rs: el client pasa a ser el FullClient concreto. Nuestro node trabaja sobre el Block completo del runtime, que lleva dentro ChainAccountId, una proyeccion (<<MultiSignature as Verify>::Signer as IdentifyAccount>::AccountId) que rustc no normaliza dentro de un where-clause generico: 6 errores de «un bound declarado en la firma no se satisface». Con el generico fallaba, con el concreto compila. main.rs: subcomando run (sc_cli::RunCmd), que arranca new_full con litep2p o libp2p. chain_spec.rs: node_chain_spec construye un GenericChainSpec con el WASM real del runtime (build-spec sigue con su JSON). run --chain mainnet se RECHAZA: sus validadores son placeholder sin llave (gate L-3) y un node con ese genesis no produciria nunca, en silencio. Test con contrafactual: sin el brazo mainnet el id cae en la rama de ruta y falla como «fichero no encontrado»; el test exige la razon, y en rojo lo dijo asi. Medido (build con --features wasm-build, run --dev --tmp): - bloque #1 importado 2026-09-23 20:04:30, uno cada ~6 s (Aura); - GRANDPA finaliza: #7 finalizado con best #9 a los 60 s; - RPC: chain_getHeader, chain_getFinalizedHead, system_accountNextIndex (Alice = 0) y system_properties (OGC, 18 decimales, ss58 42) responden; - «Essential task txpool-background failed» aparece SOLO al SIGINT (0 ocurrencias a los 50 s con RPC servido; 1 al segundo del SIGINT). - cargo test --workspace: 318 passed, 0 failed (igual que RV14) + 1 nuevo. macOS 27: el build necesita DEVELOPER_DIR=/Library/Developer/CommandLineTools mientras la licencia de Xcode 27 no este aceptada (exit 69 en cc y git). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
defd3fa580
commit
63918f365b
6 files changed
+681
-1696
No files matched your search
+10
-10
@@ -74,7 +74,7 @@ sp-consensus-aura = { version = "0.45.0", default-features = false, features = [
|
||||
sp-consensus-grandpa = { version = "26.0.0", default-features = false, features = ["serde"] }
|
||||
# Slice 4 v0.0.49 — node sc-service deps (stable2509-3)
|
||||
sp-timestamp = { version = "39.0.0", default-features = false }
|
||||
sp-blockchain = { version = "41.0.0" }
|
||||
sp-blockchain = { version = "42.0.0" }
|
||||
|
||||
# FRAME canonical — runtime composition framework (stable2509-3)
|
||||
frame-system = { version = "43.0.1", default-features = false }
|
||||
@@ -154,25 +154,25 @@ serde_json = { version = "1", default-features = false, features = ["alloc"] }
|
||||
substrate-wasm-builder = { version = "29.0.0" }
|
||||
|
||||
# Substrate client canonical (Phase 1.6+ node binary service builder, stable2509-3)
|
||||
sc-cli = { version = "0.54.0" }
|
||||
sc-service = { version = "0.53.0" }
|
||||
sc-cli = { version = "0.55.0" }
|
||||
sc-service = { version = "0.54.0" }
|
||||
# Slice 3 (v0.0.13) canonical — `sc_chain_spec::GenericChainSpec` builder canonical
|
||||
# para Phase 1.6+ ChainSpec serialization. Pattern canonical mock-WASM fallback.
|
||||
sc-executor = { version = "0.45.0" }
|
||||
sc-network = { version = "0.52.0" }
|
||||
sc-consensus = { version = "0.51.0" }
|
||||
sc-consensus-aura = { version = "0.52.0" }
|
||||
sc-consensus-grandpa = { version = "0.37.0" }
|
||||
sc-network = { version = "0.53.0" }
|
||||
sc-consensus = { version = "0.52.0" }
|
||||
sc-consensus-aura = { version = "0.53.0" }
|
||||
sc-consensus-grandpa = { version = "0.38.0" }
|
||||
sc-transaction-pool = { version = "42.0.0" }
|
||||
sc-transaction-pool-api = { version = "42.0.0" }
|
||||
sc-client-api = { version = "42.0.0" }
|
||||
sc-basic-authorship = { version = "0.52.0" }
|
||||
sc-telemetry = { version = "31.0.0" }
|
||||
sc-offchain = { version = "47.0.0" }
|
||||
sc-telemetry = { version = "30.0.1" }
|
||||
sc-offchain = { version = "48.0.0" }
|
||||
|
||||
# RPC server canonical (jsonrpsee, stable2509-3)
|
||||
jsonrpsee = { version = "0.24.9", features = ["server"] }
|
||||
substrate-frame-rpc-system = { version = "46.0.0" }
|
||||
substrate-frame-rpc-system = { version = "47.0.0" }
|
||||
pallet-transaction-payment-rpc = { version = "46.0.0" }
|
||||
|
||||
# CLI + async canonical
|
||||
|
||||
Reference in new issue
Block a user