Commit Graph
2 Commits
Author SHA1 Message Date
CharonandClaude Opus 5.5 63918f365b 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>
2026-09-23 20:09:25 -05:00
davidherranandClaude Opus 4.7 a2925f67b9 feat(node): Phase 1.6+ Slice 3 — ChainSpec builder canonical mock-WASM fallback v0.0.13
Real ChainSpec JSON builder canonical via mock-WASM fallback pattern. Avanza
Origin Chain sin esperar Slice 2c WASM_BINARY resolution canonical (Larihana
pending). Own minimal JSON builder canonical via serde_json puro vs sc-chain-spec
dep canonical (43/44.0.0 trae sc-network mismatch + cid 0.9.0 yanked core2).

Deliverables canonical:
- crates/origin-chain-node/src/chain_spec.rs NEW (240 LOC) — 3 builder fns
  (development/local_testnet/mainnet) + load_spec alias resolver + serialize_chain_spec
- crates/origin-chain-node/src/main.rs — new BuildSpec subcommand + build_spec fn
- crates/origin-chain-node/Cargo.toml — Slice 3 dep block canonical doc
- Cargo.toml workspace — sc-chain-spec investigation findings registered

Output JSON canonical compatible con Substrate-canonical sc_chain_spec::GenericChainSpec
schema (12-field structure). Mock WASM hex = "0x" placeholder canonical mientras
Slice 2c land canonical real WASM_BINARY via substrate-wasm-builder.

Verification canonical end-to-end:
- cargo check workspace verde 0.60s
- 10/10 chain_spec tests canonical pass + 75+ workspace tests canonical no regression
- cargo build --release origin-chain-node 2.28s clean
- build-spec --chain dev|local|mainnet|--raw all functional canonical
- BM V2 mainnet allocation verified: 400M+250M+150M+150M+50M = 1B OGC canonical
- Existing subcommands (version, list-presets, print-preset, info) NO REGRESSION

Phase 1.6+ progress: Slices 1+2+2b+3 ✅, Slice 2c WASM pending Larihana,
Slice 4 full sc-service requires Slice 2c canonical resolution.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 07:54:57 -05:00