Slice 2e WASM structural blocker FULLY RESUELTO end-to-end. Real origin_chain_runtime.wasm (1,795,946 bytes ~1.8 MB) shipped post-brew LLVM install + 5 layers de blockers resolved. PHASE 3 + PHASE 4 Testnet Q3 2026 UNBLOCKED. 5-layer resolution: - Layer 1 alloc/exchange_malloc → WASM_BUILD_STD=0 - Layer 2a getrandom 0.2 wasm → custom feature - Layer 2b getrandom 0.3 backends → wasm_js feature - Layer 3 secp256k1-sys clang wasm32 → brew LLVM + CC env vars - Layer 4 sp-io std leak → default-features=false en path deps - Layer 5 Vec no_std impl_opaque_keys → alloc::vec::Vec import Changes: - Cargo.toml workspace: path deps default-features=false + getrandom_02 + getrandom_03 - runtime/Cargo.toml: substrate-wasm-builder feature-gated + getrandom deps - runtime/src/opaque.rs: extern crate alloc + use Vec import Verification: - WASM_BUILD_STD=0 + brew LLVM env vars + cargo build --features wasm-build → 3.36s clean - origin_chain_runtime.wasm 1.8 MB shipped - cargo test --workspace — 202 tests verde 0 failures NO regression 🎉 Slice 2e FULLY RESUELTO. La nave Origin Chain zarpando hacia Phase 3 + 4. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
39 lines
1.6 KiB
Rust
39 lines
1.6 KiB
Rust
//! # Opaque types canonical — pre-genesis identification para node binary
|
|
//!
|
|
//! `opaque` types canonical son aquellos que el **node** consume sin necesidad
|
|
//! de saber detalles del runtime composition. Pattern canonical Substrate: el
|
|
//! node binary identifica session keys + block headers sin importar qué pallets
|
|
//! exact se composen runtime-side.
|
|
//!
|
|
//! Esto permite **forkless runtime upgrades canonical**: el node ejecuta WASM
|
|
//! runtime mientras los opaque types canonical permanecen wire-compatible.
|
|
//!
|
|
//! ## Filosofía canonical
|
|
//!
|
|
//! David canon 2026-05-14 *"la libertad infinita acota solo donde empieza la
|
|
//! del otro"* — el opaque types son la frontera canonical entre node sovereignty
|
|
//! (puede correr cualquier runtime WASM compatible) + runtime sovereignty (puede
|
|
//! evolucionar pallets sin breakar node binaries).
|
|
|
|
use sp_runtime::impl_opaque_keys;
|
|
|
|
// Slice 2e Layer 5 fix: import Vec for no_std impl_opaque_keys macro expansion.
|
|
extern crate alloc;
|
|
use alloc::vec::Vec;
|
|
|
|
impl_opaque_keys! {
|
|
/// Canonical session keys para Origin Chain validators canonical.
|
|
///
|
|
/// Cada validator canonical posee:
|
|
/// - **`aura`**: `AuraId` (sr25519) para slot signing canonical block production
|
|
/// - **`grandpa`**: `GrandpaId` (Ed25519) para finality voting canonical
|
|
///
|
|
/// Estos keys canonical se rotan periódicamente per Phase 1.5 `pallet_session`
|
|
/// canonical (4-hour epochs per CHN-1). Pre-Phase 1.5 = static keys canonical
|
|
/// definidos en genesis chain_spec.
|
|
pub struct SessionKeys {
|
|
pub aura: crate::Aura,
|
|
pub grandpa: crate::Grandpa,
|
|
}
|
|
}
|