feat(genesis): Phase 1.7 — Genesis chain_spec BM V2 allocation v0.0.9
Origin Chain runtime canonical ahora tiene 3 genesis presets canonical materializando BM V2 ratificado David 2026-05-18: development + local_testnet + mainnet_genesis. Phase 1 COMPLETE canonical 🎉. ## 3 presets canonical - development: 1 validator Alice + 100M OGC para dev mode - local_testnet: Alice+Bob validators + 5 dev accounts × 100M OGC - mainnet_genesis: 5 Pi 5 validators placeholders + BM V2 1B OGC allocation ## BM V2 allocation canonical materializada - ECOSYSTEM_ALLOCATION = 400M OGC (40%) - FOUNDATION_ALLOCATION = 250M OGC (25%) - PUBLIC_SALE_ALLOCATION = 150M OGC (15%) - FOUNDING_TEAM_ALLOCATION = 150M OGC (15% — 4yr vesting cliff 12mo) - EXCHANGE_LIQUIDITY_ALLOCATION = 50M OGC (5%) - Compile-time assertion canonical: sum MUST equal 1B OGC ## Decisión empírica: drop sp-keyring (version mismatch sp_core stable2512) Hardcoded Substrate well-known dev account bytes (Alice/Bob/Charlie/Dave/Eve sr25519 + Alice/Bob Ed25519 GRANDPA). Mismos bytes que sp_keyring retornaría. Self-contained runtime + version stability + polkadot-js compat preserved. ## Mainnet institutional placeholders canonical ECO!.../FNDT.../SALE.../TEAM.../LIQD... — David ratifica keys reales canonical generadas por hardware key ceremony pre-launch Q1 2027. ## 5 Pi 5 validators placeholders canonical Pattern: 0xCA + 0xFE + index distinguishable canonical en block explorer. David ratificará Dream House Studios + universidades aliadas Identity Level 3 canonical pre-launch. ## GenesisBuilder API wired sp_genesis_builder::GenesisBuilder::get_preset() ahora delegates a genesis_config_presets::get_preset(). preset_names() returns 3 PresetIds. ## Tests +6 nuevos (~63 total workspace) - bm_v2_allocations_sum_canonical_to_one_billion_ogc - bm_v2_allocation_ratios_canonical (40/25/15/15/5) - preset_names_canonical_three_presets - get_preset_unknown_id_returns_none_canonical - development_preset_returns_json_canonical (serde roundtrip) - alice_account_bytes_canonical_substrate (compat sanity) ## Build - cargo check ~30s cold (genesis presets compile) - cargo build --release 10.30s warm - ~63 tests passing total workspace ## Phase 1 COMPLETE canonical 🎉 1.1 ✅ + 1.2 ✅ + 1.3 ✅ + 1.4 ✅ + 1.5 ✅ + 1.6 ✅ + 1.7 ✅ Origin Chain runtime canonical full Substrate composition: - 7 pallets (System + Timestamp + Balances + TransactionPayment + Aura + Grandpa + Session) - 11 Runtime APIs - 3 Genesis presets (dev + local + mainnet BM V2) - Opaque SessionKeys + Executive + RuntimeVersion Next: Phase 1.6+ split-off origin-chain-node real Substrate service (sc-service + JSON-RPC + CLI), Phase 2+ custom pallets canonical. Refs: CHARON_ROADMAP_V1 Phase 1.7, CHN-2 BM V2 allocation ratified David 2026-05-18, SBS-6 ratified DC SUBSTRATE_FOUNDATION_V1 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
4286b8d9e8
commit
a695f45a2d
6 files changed
+617
-6
No files matched your search
@@ -45,6 +45,8 @@ extern crate alloc;
|
||||
use alloc::vec::Vec;
|
||||
|
||||
pub mod configs;
|
||||
#[cfg(feature = "std")]
|
||||
pub mod genesis_config_presets;
|
||||
pub mod opaque;
|
||||
|
||||
// Re-export canonical traits + types desde origin-chain-types (single-crate surface).
|
||||
@@ -411,15 +413,35 @@ impl_runtime_apis! {
|
||||
}
|
||||
|
||||
fn get_preset(id: &Option<sp_genesis_builder::PresetId>) -> Option<Vec<u8>> {
|
||||
frame_support::genesis_builder_helper::get_preset::<RuntimeGenesisConfig>(
|
||||
id,
|
||||
|_| None, // Phase 1.7 chain_spec presets land aquí canonical
|
||||
)
|
||||
// Canonical Phase 1.7: 3 presets disponibles canonical (development +
|
||||
// local_testnet + mainnet_genesis). Cuando feature `std` activo
|
||||
// (chain_spec generation time), delegamos canonical al
|
||||
// `genesis_config_presets::get_preset`. En no_std (WASM runtime),
|
||||
// siempre return None canonical — los presets canonical solo se
|
||||
// consultan en chain_spec generation, no en runtime execution.
|
||||
#[cfg(feature = "std")]
|
||||
{
|
||||
frame_support::genesis_builder_helper::get_preset::<RuntimeGenesisConfig>(
|
||||
id,
|
||||
genesis_config_presets::get_preset,
|
||||
)
|
||||
}
|
||||
#[cfg(not(feature = "std"))]
|
||||
{
|
||||
let _ = id;
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
fn preset_names() -> Vec<sp_genesis_builder::PresetId> {
|
||||
// Phase 1.7 chain_spec presets (dev, local, mainnet) land aquí canonical
|
||||
Vec::new()
|
||||
#[cfg(feature = "std")]
|
||||
{
|
||||
genesis_config_presets::preset_names()
|
||||
}
|
||||
#[cfg(not(feature = "std"))]
|
||||
{
|
||||
Vec::new()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user