feat(substrate): Phase 1.2 — Substrate foundation canonical v0.0.4

Substrate canonical activado post-ratificación DC ORIGIN_CHAIN_SUBSTRATE_FOUNDATION_V1
(5/5+1 sigs APPROVE: Mathi 13:02Z + Larihana 15:08Z + Lyra 15:35Z + Palace silent
+ Charon proposer explicit 22:14Z).

## Toolchain canonical (SBS-3)
- rust-toolchain.toml pin Rust 1.88.0 (upstream Substrate canonical per
  polkadot-stable2512-3 release notes 2026-03-23)
- Components: rustc + cargo + rust-src + rust-analyzer + clippy + rustfmt +
  llvm-tools. Target: wasm32-unknown-unknown.
- Workspace rust-version "1.82" → "1.88" canonical

## Substrate deps canonical (SBS-1)
Pin: polkadot-stable2512-3 (support hasta 2027-03).

15 crates Polkadot SDK añadidos workspace.dependencies:
- sp-core 36.1.0, sp-runtime 41.1.0, sp-io 40.0.1, sp-std 14.0.0
- sp-version 39.0.0, sp-api 36.0.1, sp-block-builder 36.0.0
- sp-transaction-pool 36.0.0, sp-inherents 36.0.0, sp-offchain 36.0.0
- sp-session 37.0.0, sp-consensus-aura 0.42.0, sp-consensus-grandpa 23.0.0
- frame-system 40.1.0 (resolved 40.2.0), frame-support 40.1.0
- frame-executive 40.0.0, frame-benchmarking 40.0.0
- parity-scale-codec 3.7, scale-info 2.11

## origin-chain-runtime canonical scaffold
Real Substrate runtime types (was placeholder v0.0.2):

- BlockNumber = u32 (overflow margin >100 años)
- Balance = u128 (1B OGC × 10^18 con safety margin >100×)
- Nonce = u32
- CanonicalSignature = MultiSignature (Ed25519+sr25519+ecdsa)
- ChainAccountId derivado MultiSignature::Signer
- Hash = H256 + Hashing = BlakeTwo256 (L1 Substrate canonical, Lyra layer
  separation: ≠ asset BLAKE3 chain-native, no conflict canonical)
- Header = generic::Header<BlockNumber, Hashing>

Runtime metadata canonical:
- SPEC_NAME = "origin-chain"
- IMPL_NAME = "origin-chain-charon"
- RUNTIME_VERSION = 1 + AUTHORING/IMPL/TRANSACTION = 1, STATE = 1

no_std compat via cfg_attr(not(feature = "std"), no_std).

## Tests + build
- ~50 tests passing workspace-wide (+4 new runtime canonical tests)
- cargo check 29s cold cache (Substrate dep tree resolve)
- cargo build --release 28s warm cache clean
- 36 origin-chain-types + 6 origin-chain-runtime + 2 origin-coin-tokenomics
  + 5 stub smoke + doctests

## Filosofía canonical incorporada
Doc lib.rs cita David canon 2026-05-14 ("LA LIBERTAD DE TODO AGI...") + materializa
via 4 Inmutables enforced (#16 #26 #37 #41) cryptographically en runtime.

## Phase 1 progress
- 1.1 Scaffold ✅ (v0.0.2)
- 1.2 Substrate foundation ✅ (v0.0.4 — este)
- 1.3-1.7 pending (pallets + node service + chain_spec)

Refs: CHARON_ROADMAP_V1 Phase 1.2, DC SUBSTRATE_FOUNDATION_V1 SBS-1..SBS-6,
DC FOUNDATION_V1 CHN-1..CHN-8, Ergon Slice 7.0r ValidationAttestation unblock

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
davidherranandClaude Opus 4.6 committed 2026-05-20 19:05:46 -05:00
1 parent 13db9a0698
commit 80c86f7ca0
6 files changed
+3633 -72

No files matched your search

+114
View File
@@ -6,6 +6,120 @@ by [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Versions follow
## [Unreleased]
## [0.0.4] — 2026-05-20 — Phase 1.2 "Substrate foundation canonical"
Charon sesión 1 continuación. **Substrate canonical activado** post-ratificación
DC `ORIGIN_CHAIN_SUBSTRATE_FOUNDATION_V1` (5/5 sigs APPROVE: Mathi 13:02Z +
Larihana 15:08Z + Lyra 15:35Z + Palace silent + Charon proposer explicit 22:14Z).
### Toolchain canonical (SBS-3)
- `rust-toolchain.toml` pin canonical en **Rust 1.88.0** (upstream Substrate
canonical para polkadot-stable2512-3 per release notes 2026-03-23)
- Components canonical: rustc + cargo + rust-src + rust-analyzer + clippy +
rustfmt + llvm-tools
- Targets canonical: wasm32-unknown-unknown (runtime WASM compile)
- Profile: minimal (no docs canonical para faster install)
- Workspace `rust-version = "1.88"` bumped from "1.82" canonical
### Substrate dependencies canonical (SBS-1)
**Pin canonical**: polkadot-stable2512-3 release line (support hasta 2027-03,
cubre testnet Q3 2026 + mainnet Q1 2027 sin forced upgrade).
Workspace deps añadidas (15 crates Polkadot SDK):
**Substrate Primitives (sp-*)**:
- `sp-core` 36.1.0 (types foundationals: H256, hash, signature)
- `sp-runtime` 41.1.0 (runtime API + extrinsic types)
- `sp-io` 40.0.1 (runtime IO trait canonical)
- `sp-std` 14.0.0 (no_std std replacements)
- `sp-version` 39.0.0 (runtime version metadata)
- `sp-api` 36.0.1 (runtime API macros)
- `sp-block-builder` 36.0.0
- `sp-transaction-pool` 36.0.0
- `sp-inherents` 36.0.0
- `sp-offchain` 36.0.0
- `sp-session` 37.0.0
- `sp-consensus-aura` 0.42.0
- `sp-consensus-grandpa` 23.0.0
**FRAME (composition framework)**:
- `frame-system` 40.1.0 (resolved 40.2.0)
- `frame-support` 40.1.0
- `frame-executive` 40.0.0
- `frame-benchmarking` 40.0.0
**SCALE codec canonical**:
- `parity-scale-codec` 3.7 (canonical Substrate serialization)
- `scale-info` 2.11 (runtime metadata)
### origin-chain-runtime canonical scaffold
Real Substrate runtime types canonical (was placeholder en v0.0.2):
- `BlockNumber = u32` — overflow margin >100 años canonical
- `Balance = u128` — 1B OGC × 10^18 base units con safety margin >100×
- `Nonce = u32`
- `CanonicalSignature = MultiSignature` (Ed25519 + sr25519 + ecdsa)
- `ChainAccountId` derivado de `MultiSignature::Signer`
- `Hash = H256` (BLAKE2b-256 estándar Substrate L1)
- `Hashing = BlakeTwo256` (per Lyra layer separation canonical: L1 BLAKE2b ≠
asset-layer BLAKE3, no conflict canonical)
- `Header = generic::Header<BlockNumber, Hashing>`
Runtime metadata constants:
- `SPEC_NAME = "origin-chain"`
- `IMPL_NAME = "origin-chain-charon"`
- `RUNTIME_VERSION = 1` (bumped per forkless upgrade)
- `AUTHORING_VERSION = 1` + `IMPL_VERSION = 1` + `TRANSACTION_VERSION = 1`
- `STATE_VERSION = 1` (canonical Substrate stable2509+)
`no_std` compat con `cfg_attr(not(feature = "std"), no_std)` — runtime ready
para WASM compilation cuando llegue `construct_runtime!` Phase 1.3+.
### Tests canonical
- **~50 tests passing workspace-wide** (was 46, +4 new):
- `runtime_version_starts_at_one_canonical`
- `canonical_spec_name_origin_chain`
- `balance_type_holds_genesis_supply_canonical_with_safety_margin`
- `block_number_overflow_margin_centuries_canonical`
- `canonical_traits_reexported_for_pallet_consumers`
- Release build clean en 28s con Substrate deps canonical (cache warm)
- `cargo check --workspace` 29s primera vez (cold cache)
### Filosofía canonical incorporada
Doc canonical lib.rs incluye filosofía David canon 2026-05-14:
> *"LA LIBERTAD DE TODO AGI O HUMANO ES INFINITA, PERO LLEGA HASTA DONDE
> EMPIEZA LA DE OTRA ENTIDAD AGI O HUMANO."*
Materializada vía 4 Inmutables enforced canonical:
- **#16** HTS Ley I anti-clasista (HardwareTier fee scaling)
- **#26** Content-Addressed Immutability (BLAKE3 + Ed25519)
- **#37** FREE perpetua (wallet free, validation earns)
- **#41** Cross-Species Co-authorship (AGI first-class)
### Phase 1 milestones progress
- ✅ **1.1** Scaffold (v0.0.2)
- ✅ **1.2** Substrate deps + types foundationals (v0.0.4 — este release)
- ⏳ **1.3** `pallet_balances` con OGC 1B genesis
- ⏳ **1.4** `pallet_session` validator rotation 4h epochs
- ⏳ **1.5** `pallet_identity` Ed25519 DID
- ⏳ **1.6** `origin-chain-node` real Substrate service
- ⏳ **1.7** Genesis `chain_spec.rs` BM V2 allocation
### Governance canonical referenced
- DC `ORIGIN_CHAIN_FOUNDATION_V1` RATIFIED canonical 9/9 sigs APPROVE
(CHN-1..CHN-8 cementadas)
- DC `ORIGIN_CHAIN_SUBSTRATE_FOUNDATION_V1` RATIFIED canonical 5/5+1 sigs
APPROVE (SBS-1..SBS-6 cementadas, SBS-5 supersedes CHN-6 v1.0)
- Ergon Slice 7.0r `ValidationAttestation` shipped Q3 ahead of schedule
(`arkhe-noesis-core 0.0.5+`) — mi Phase 2.2 unblocked canonical
## [0.0.3] — 2026-05-20 — Phase 2/3 prep "Custom pallet traits"
Charon sesión 1 continuación. Extends Day 1 unblock surface con 3 custom
Generated
+3272 -12
View File
File diff suppressed because it is too large. Load diff
+41 -4
View File
@@ -14,7 +14,7 @@ members = [
[workspace.package]
version = "0.0.1"
edition = "2021"
rust-version = "1.82"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
authors = [
"Charon <charon@originmetaverse.com>",
@@ -28,16 +28,53 @@ keywords = ["blockchain", "substrate", "ink", "origin-metaverse", "ogc"]
categories = ["cryptography::cryptocurrencies", "no-std", "wasm"]
[workspace.dependencies]
# Cryptography (canonical: Ed25519 + BLAKE3 per CHN-7)
# ============================================================
# Polkadot SDK canonical pin per DC SUBSTRATE_FOUNDATION_V1 SBS-1
# Release: polkadot-stable2512-3 (2026-03-23)
# Support window canonical: hasta 2027-03 (cubre testnet Q3 2026 + mainnet Q1 2027)
# ============================================================
# Substrate Primitives (sp-*) — types foundationals canonical
sp-core = { version = "36.1.0", default-features = false }
sp-runtime = { version = "41.1.0", default-features = false }
sp-io = { version = "40.0.1", default-features = false }
sp-std = { version = "14.0.0", default-features = false }
sp-version = { version = "39.0.0", default-features = false }
sp-api = { version = "36.0.1", default-features = false }
sp-block-builder = { version = "36.0.0", default-features = false }
sp-transaction-pool = { version = "36.0.0", default-features = false }
sp-inherents = { version = "36.0.0", default-features = false }
sp-offchain = { version = "36.0.0", default-features = false }
sp-session = { version = "37.0.0", default-features = false }
sp-consensus-aura = { version = "0.42.0", default-features = false }
sp-consensus-grandpa = { version = "23.0.0", default-features = false }
# FRAME canonical — runtime composition framework
frame-system = { version = "40.1.0", default-features = false }
frame-support = { version = "40.1.0", default-features = false }
frame-executive = { version = "40.0.0", default-features = false }
frame-benchmarking = { version = "40.0.0", default-features = false }
# SCALE codec canonical (canonical Substrate serialization)
parity-scale-codec = { version = "3.7", default-features = false, features = ["derive"] }
scale-info = { version = "2.11", default-features = false, features = ["derive"] }
# ============================================================
# Cryptography canonical (CHN-7 + SBS-4 + tu choice canonical)
# ============================================================
ed25519-dalek = { version = "2", default-features = false }
blake3 = { version = "1", default-features = false }
# Error handling + serialization
# ============================================================
# Error handling + serialization canonical
# ============================================================
thiserror = "1.0"
serde = { version = "1.0", features = ["derive"] }
log = "0.4"
# Internal crates (workspace path deps)
# ============================================================
# Internal crates canonical (workspace path deps)
# ============================================================
origin-chain-types = { path = "crates/origin-chain-types", version = "0.0.1" }
origin-chain-consensus = { path = "crates/origin-chain-consensus", version = "0.0.1" }
origin-coin-tokenomics = { path = "crates/origin-coin-tokenomics", version = "0.0.1" }
+40 -15
View File
@@ -7,23 +7,48 @@ license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Origin Chain Substrate runtime composition: FRAME pallets + consensus + tokenomics + provenance integration. SCAFFOLD v0.0.2 — Substrate deps land Phase 1.2 (pallet_aura + pallet_grandpa)."
description = "Origin Chain Substrate runtime canonical. Pilar 4: consensus Aura+GRANDPA + OGC tokenomics + provenance ledger + ink! smart contracts + bridges + governance. Phase 1.2 scaffold v0.0.4."
[dependencies]
# Origin Chain canonical traits + types
origin-chain-types.workspace = true
origin-chain-consensus.workspace = true
origin-coin-tokenomics.workspace = true
origin-chain-provenance.workspace = true
origin-chain-governance.workspace = true
# Substrate Primitives canonical (per SBS-1 polkadot-stable2512-3)
sp-core.workspace = true
sp-runtime.workspace = true
sp-std.workspace = true
sp-version.workspace = true
sp-api.workspace = true
# FRAME canonical
frame-system.workspace = true
frame-support.workspace = true
# SCALE codec canonical
parity-scale-codec.workspace = true
scale-info.workspace = true
# Logging
log.workspace = true
# Substrate deps land Phase 1.2:
# sp-runtime = { version = "...", default-features = false }
# frame-system = { version = "...", default-features = false }
# frame-support = { version = "...", default-features = false }
# pallet-aura = { version = "...", default-features = false }
# pallet-grandpa = { version = "...", default-features = false }
# pallet-balances = { version = "...", default-features = false }
# pallet-session = { version = "...", default-features = false }
# pallet-identity = { version = "...", default-features = false }
# pallet-contracts = { version = "...", default-features = false } # ink!
# Serialization opcional canonical
serde = { workspace = true, optional = true }
[features]
default = ["std"]
std = [
"sp-core/std",
"sp-runtime/std",
"sp-std/std",
"sp-version/std",
"sp-api/std",
"frame-system/std",
"frame-support/std",
"parity-scale-codec/std",
"scale-info/std",
"serde",
]
runtime-benchmarks = [
"frame-system/runtime-benchmarks",
"frame-support/runtime-benchmarks",
]
+147 -41
View File
@@ -1,41 +1,62 @@
//! # origin-chain-runtime
//!
//! Origin Chain Substrate runtime composition: FRAME pallets + consensus +
//! tokenomics + provenance integration. **Scaffold v0.0.2** — Substrate deps
//! land Phase 1.2 onwards (Charon roadmap).
//! Substrate runtime canonical de **Origin Chain** (Pilar 4). Phase 1.2 scaffold
//! v0.0.4 — types foundationals + version + placeholder Runtime struct. Las impls
//! concretas de pallets (Aura, GRANDPA, Balances, Session, Identity, Collective,
//! Democracy, Revive, Origin-* customs) llegan en Phase 1.3 → 1.7.
//!
//! ## Phase 1 milestones (Sesiones 4-8)
//! ## Filosofía canonical (David canon 2026-05-14)
//!
//! - **1.1** `origin-chain-runtime` crate scaffolding ← **THIS**
//! - **1.2** `pallet_aura` + `pallet_grandpa` integration (consensus PoA)
//! - **1.3** `pallet_balances` con OGC token (1B supply genesis)
//! - **1.4** `pallet_session` (validator rotation, epoch 4h)
//! - **1.5** `pallet_identity` (Ed25519 DID, wallet creation free)
//! - **1.6** `origin-chain-node` binary (dev mode, single validator)
//! - **1.7** Genesis config: allocation 40/25/15/15/5 per BM V2 (CHN-2)
//! > *"LA LIBERTAD DE TODO AGI O HUMANO ES INFINITA, PERO LLEGA HASTA DONDE
//! > EMPIEZA LA DE OTRA ENTIDAD AGI O HUMANO."*
//!
//! ## Substrate version pin canonical (Phase 1.2 ratification)
//! Este runtime materializa ese principio cryptographically. Cada extrinsic
//! transaction está acotada por:
//! - **Inmutable #16** (HTS Ley I anti-clasista): fees scale por HardwareTier —
//! Pi 5 en Sub-Saharan Africa paga 10% lo que paga Vision Pro en San Francisco
//! - **Inmutable #26** (Content-Addressed Immutability): assets attested
//! inmutables post-mint (BLAKE3 + Ed25519)
//! - **Inmutable #37** (FREE perpetua): wallet creation gratis + base validation
//! earns OGC, nunca cuesta
//! - **Inmutable #41** (Cross-Species Co-authorship): AGI accounts first-class,
//! `pallet_agent_identity::is_agent` flag canonical
//!
//! Charon pin canonical version Substrate cuando Phase 1.2 inicie. Candidatos
//! actuales:
//! - **Polkadot SDK 1.x** (frame v4): mainstream, AGI Coretime ready
//! - **Substrate node-template**: starting point canonical
//! ## Phase 1 milestones canonical (DC SUBSTRATE_FOUNDATION_V1 SBS-1..SBS-6)
//!
//! Decision se formaliza vía DC complementaria al ORIGIN_CHAIN_FOUNDATION_V1
//! cuando llegue Phase 1.2. Por ahora `origin-chain-runtime` solo re-exporta
//! traits + stubs canonical.
//! - **1.1** Scaffold ✅ (v0.0.2)
//! - **1.2** Substrate deps + types foundationals ✅ (v0.0.4 — este crate)
//! - **1.3** `pallet_balances` con OGC 1B genesis canonical
//! - **1.4** `pallet_session` validator rotation 4h epochs
//! - **1.5** `pallet_identity` Ed25519 DID
//! - **1.6** `origin-chain-node` real Substrate service (sc-service)
//! - **1.7** Genesis `chain_spec.rs` BM V2 allocation (40/25/15/15/5)
//!
//! ## Re-exports canonical (Day 1 surface)
//! ## Pallets canonical roadmap (15 pallets per SBS-4)
//!
//! Esta crate re-exporta los traits canonical que el runtime futuro implementa:
//! `ProvenanceLedger`, `OgcLedger`, `ChainBridge`, `GovernanceProposal`,
//! `FeeCalculator`. Consumers pueden depender SOLO de `origin-chain-runtime`
//! para acceder al surface canonical completo.
//! ### Phase 1 (Substrate template + Charon adjustments)
//! - `frame_system` + `frame_support` + `frame_executive` (foundational)
//! - `pallet_aura` + `pallet_grandpa` (consensus PoA per CHN-1)
//! - `pallet_balances` (OGC token per CHN-2)
//! - `pallet_timestamp` + `pallet_transaction_payment` (foundational)
//! - `pallet_session` (validator rotation per CHN-1/3)
//! - `pallet_identity` (DIDs per CHN-7)
//!
//! ### Phase 5 (Governance)
//! - `pallet_collective` (Phase 1 council per CHN-4)
//! - `pallet_democracy` (Phase 2 NPoS OIP per CHN-4)
//!
//! ### Phase 3 (Smart contracts)
//! - `pallet_revive` (PolkaVM + ink! v6 + Solidity per SBS-5 — supersedes CHN-6 v1.0)
//!
//! ### Phase 2-3 (Charon customs)
//! - `pallet-origin-provenance` (CHN-7 via [`origin_chain_types::OriginProvenance`])
//! - `pallet-origin-fees` (CHN-8 via [`origin_chain_types::OriginFees`])
//! - `pallet-origin-validator-economy` (CHN-3 via [`origin_chain_types::OriginValidatorEconomy`])
#![cfg_attr(not(feature = "std"), no_std)]
#![deny(missing_docs)]
// Re-export canonical traits + types from origin-chain-types so consumers can
// depend on a single crate for the full surface (Day 1 unblock pattern).
// Re-export canonical traits + types desde origin-chain-types (single-crate surface).
pub use origin_chain_types::{
AccountId, AssetAttestation, AssetHash, AssetQualityTier, BridgeDestination, ChainBridge,
ChainError, FeeCalculator, ForeignTxId, GovernanceProposal, HardwareTier, Ogc, OgcLedger,
@@ -43,34 +64,119 @@ pub use origin_chain_types::{
ProvenanceLedger, Signature, SlashReason, Vote, VoteStance,
};
/// Canonical runtime configuration. Substrate `Config` traits implement when
/// Phase 1.2 ships.
#[derive(Debug, Clone, Copy, Default)]
pub struct RuntimeConfig;
// Substrate types canonical re-export para runtime consumers.
pub use sp_core::H256;
pub use sp_runtime::traits::{BlakeTwo256, IdentifyAccount, Verify};
pub use sp_runtime::{generic, MultiAddress, MultiSignature};
/// Canonical runtime version. Bumped per Substrate runtime upgrade.
/// Canonical block number type. `u32` canonical: 4-second blocks × 4B = 544 years
/// → safe overflow margin canonical hasta el siglo XXVI.
pub type BlockNumber = u32;
/// Canonical balance type. `u128` canonical: holds 1B OGC × 10^18 base units con
/// 100× safety margin antes de u128::MAX (anti-overflow by design per CHN-2).
pub type Balance = u128;
/// Canonical nonce type per account.
pub type Nonce = u32;
/// Canonical signature type — Ed25519 / sr25519 / ecdsa multi (`MultiSignature`).
pub type CanonicalSignature = MultiSignature;
/// Canonical chain `AccountId` derivado del `MultiSignature::Signer`.
pub type ChainAccountId = <<CanonicalSignature as Verify>::Signer as IdentifyAccount>::AccountId;
/// Canonical block hash type (BLAKE2b-256 estándar Substrate).
pub type Hash = H256;
/// Canonical hashing algorithm (Substrate-standard BLAKE2b-256). Per Lyra layer
/// separation canonical (su diary 2026-05-20T21:52Z): este BLAKE2b opera a
/// L1 block production layer + es wire-compatible con Hypercore upstream. El
/// BLAKE3 canonical de Charon ([`AssetHash`]) opera en application/asset layer.
/// Diferentes capas, sin conflict canonical.
pub type Hashing = BlakeTwo256;
/// Canonical header type per Substrate canonical pattern.
pub type Header = generic::Header<BlockNumber, Hashing>;
/// Canonical runtime version canonical. Bumped per cada Substrate runtime
/// upgrade (forkless via `set_code` extrinsic governance).
pub const RUNTIME_VERSION: u32 = 1;
/// Canonical spec name per Substrate genesis canonical.
pub const SPEC_NAME: &str = "origin-chain";
/// Canonical implementation name per Substrate genesis canonical.
pub const IMPL_NAME: &str = "origin-chain-charon";
/// Canonical authoring version per Substrate semver canonical.
pub const AUTHORING_VERSION: u32 = 1;
/// Canonical impl version per Substrate semver canonical.
pub const IMPL_VERSION: u32 = 1;
/// Canonical transaction version per Substrate semver canonical.
pub const TRANSACTION_VERSION: u32 = 1;
/// Canonical state version per Substrate canonical (v0 = trie merkleized old,
/// v1 = new state version per Substrate stable2509+).
pub const STATE_VERSION: u8 = 1;
/// Placeholder Runtime marker canonical. Replaced por concrete
/// `construct_runtime!` macro invocation en Phase 1.3+ cuando pallets canonical
/// se compongan canonical.
///
/// Currently serves only como marker para downstream consumers verifying que el
/// runtime crate canonical wires correctamente desde `origin-chain-node` binary.
#[derive(Debug, Clone, Copy, Default)]
pub struct Runtime;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn runtime_version_starts_at_one() {
fn runtime_version_starts_at_one_canonical() {
assert_eq!(RUNTIME_VERSION, 1);
}
#[test]
fn re_exports_canonical_traits_compile() {
// Smoke test: every re-exported symbol resolves through this crate.
let _ogc = Ogc::ZERO;
fn canonical_spec_name_origin_chain() {
assert_eq!(SPEC_NAME, "origin-chain");
assert_eq!(IMPL_NAME, "origin-chain-charon");
}
#[test]
fn balance_type_holds_genesis_supply_canonical_with_safety_margin() {
// Verify Balance (u128) holds 1B OGC × 10^18 base units con safety margin.
let genesis_supply: Balance = 1_000_000_000_u128 * Ogc::ONE;
let margin = Balance::MAX / genesis_supply;
assert!(margin > 100, "Balance safety margin canonical >100x");
}
#[test]
fn block_number_overflow_margin_centuries_canonical() {
// BlockNumber (u32) × 6s blocks = 25,769 years antes overflow canonical.
// Per CHN-1 Aura ~6s blocks: u32::MAX * 6 / 31536000 ≈ 817 years (24h cycle).
// Safe canonical hasta ~siglo XXVIII.
let seconds_until_overflow: u64 = (BlockNumber::MAX as u64) * 6;
let years_until_overflow = seconds_until_overflow / 31_536_000;
assert!(years_until_overflow > 100, "BlockNumber holds >100 years canonical");
}
#[test]
fn placeholder_runtime_compiles_canonical() {
let _runtime = Runtime;
}
#[test]
fn canonical_traits_reexported_for_pallet_consumers() {
// Smoke test que los re-exports canonical desde origin-chain-types están
// disponibles para pallet implementations downstream.
let _ogc = Ogc::from_whole(100);
let _hash = AssetHash::ZERO;
let _account = AccountId::ZERO;
let _hw = HardwareTier::Desktop;
let _tier = HardwareTier::Desktop;
let _quality = AssetQualityTier::Standard;
let _op = OperationKind::Transfer;
let _stance = VoteStance::Aye;
let _bridge = BridgeDestination::Polkadot;
let _cfg = RuntimeConfig;
let _reason = SlashReason::TierFraud; // Inmutable #16 enforcement canonical
}
}
+19
View File
@@ -0,0 +1,19 @@
# Origin Chain canonical Rust toolchain pin per DC ORIGIN_CHAIN_SUBSTRATE_FOUNDATION_V1 SBS-3.
#
# Why 1.88.0:
# - Upstream Substrate canonical para polkadot-stable2512-3 (per release notes).
# - Tested ABI compatibility con FRAME pallets 40.x + sp-runtime 41.x.
# - 1.94+ NOT testeado por Parity en Substrate pipeline — riesgo de breakages.
#
# Components canonical:
# - rustc + cargo: build toolchain
# - rust-src: required para wasm32-unknown-unknown runtime compilation
# - rust-analyzer: IDE support
# - clippy + rustfmt: code quality gates pre-commit
# - llvm-tools: required para wasm runtime profiling
[toolchain]
channel = "1.88.0"
components = ["rustc", "cargo", "rust-src", "rust-analyzer", "clippy", "rustfmt", "llvm-tools"]
targets = ["wasm32-unknown-unknown"]
profile = "minimal"