docs(consistency): comentarios stale post-RV7 + guard ficticio de tiers (audit ultra LOW)
Audit ultra 2026-07-04 (dimensión consistency-crosscheck): - Reconciliada la contradicción del horizonte de agotamiento del pool: docs decían ~10-15 años (marco viejo de tasa variable) Y ~7.6 años (la matemática real de 10 OGC/bloque). Todo a ~7.6 años + nota de que BlockReward es el dial. - Fijados comentarios "mintea"/"inflación" que contradecían el techo duro RV7 (la emisión LIBERA del pool, no acuña): runtime lib.rs:408, emission doc, genesis. - tiers.rs: el comentario prometía un "regression test en origin-coin-tokenomics" que NO existe (ese crate es stub) — corregido a la verdad: la sincronía con arkhe-core es disciplina MANUAL (la cadena no depende de arkhe-core por diseño); los #[test] locales pinnean la escalera actual pero no cazan drift cross-crate. Workspace 279 tests verde. Solo comentarios — cero cambio de comportamiento. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
db4c8a37d3
commit
4ee178fbd5
4 files changed
+20
-11
No files matched your search
@@ -16,7 +16,8 @@
|
||||
//! aserción de compilación fija la oferta en 1.000M OGC; mintear violaría esa
|
||||
//! constitución matemática. Por eso las "recompensas" son en realidad una
|
||||
//! **liberación programada y finita**: el pool de 400M se agota matemáticamente
|
||||
//! en ~10-15 años (10 OGC/bloque × ~5.256M bloques/año ≈ 52.6M/año), y a partir
|
||||
//! en ~7.6 años (10 OGC/bloque × ~5.256M bloques/año ≈ 52.6M/año; `BlockReward`
|
||||
//! es el dial que ajusta el horizonte), y a partir
|
||||
//! de ahí los validadores se sostienen puramente del reciclaje de la economía
|
||||
//! circular (fees, marketplace). El total issuance JAMÁS crece — el BM V2 se
|
||||
//! cumple a rajatabla. Cuando el pool no cubre el reward completo, se libera lo
|
||||
@@ -35,7 +36,8 @@
|
||||
//! stake). El reward por bloque aquí es el substrate sobre el que Stage 2 hereda.
|
||||
//!
|
||||
//! **[`EmissionPaused`](pallet::EmissionPaused)** es la palanca de governance
|
||||
//! (Root) que detiene este mint per-block. Sirve hoy como freno de inflación de
|
||||
//! (Root) que detiene esta liberación per-block. Sirve hoy como freno de
|
||||
//! emergencia de
|
||||
//! emergencia y, en la activación de NPoS (Stage 2b, FIX-6), es el kill-switch
|
||||
//! anti-doble-emisión: cuando `pallet_staking::EraPayout` empiece a pagar por-era
|
||||
//! (un spec upgrade que swap-ea `SessionManager` a Staking + historical + añade
|
||||
@@ -82,7 +84,7 @@ pub mod pallet {
|
||||
type FindAuthor: FindAuthor<Self::AccountId>;
|
||||
|
||||
/// Recompensa por bloque en base units OGC (calibra el ritmo de
|
||||
/// liberación; el pool finito lo agota en ~10-15 años).
|
||||
/// liberación; el pool finito lo agota en ~7.6 años).
|
||||
#[pallet::constant]
|
||||
type BlockReward: Get<u128>;
|
||||
|
||||
@@ -209,7 +211,7 @@ pub mod pallet {
|
||||
let pool = Self::ecosystem_account();
|
||||
// TECHO DURO 1B: liberamos del pool FINITO, jamás minteamos.
|
||||
// Expendable = el pool puede vaciarse hasta 0 (es su destino en
|
||||
// ~10-15 años). Liberamos hasta lo que quede disponible.
|
||||
// ~7.6 años). Liberamos hasta lo que quede disponible.
|
||||
let available = T::Currency::reducible_balance(
|
||||
&pool,
|
||||
Preservation::Expendable,
|
||||
@@ -548,7 +550,7 @@ mod tests {
|
||||
fn kill_switch_pausa_detiene_el_mint() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert_ok!(Emission::set_emission_paused(RuntimeOrigin::root(), true));
|
||||
// Pausada: on_initialize NO mintea nada.
|
||||
// Pausada: on_initialize NO libera nada.
|
||||
<Emission as Hooks<u64>>::on_initialize(1);
|
||||
assert_eq!(Emission::total_emitted(), 0, "pausada: cero emisión");
|
||||
assert_eq!(<Balances as Inspect<_>>::balance(&author()), 0);
|
||||
|
||||
@@ -12,8 +12,9 @@
|
||||
//!
|
||||
//! **Mainnet preset materializa empíricamente la BM V2**:
|
||||
//!
|
||||
//! - **40% Ecosystem (400M OGC)** → distribución canonical 10-15 años via block rewards
|
||||
//! (Pi 5 validators + VPS seeds). Pre-mint TODO al Ecosystem account canonical.
|
||||
//! - **40% Ecosystem (400M OGC)** → LIBERACIÓN finita ~7.6 años via block rewards
|
||||
//! (transfer del pool og/ecosy, techo duro 1B; David 2026-07-03). Pre-asignado
|
||||
//! TODO a la cuenta PalletId del Ecosystem (og/ecosy), sin llave humana.
|
||||
//! - **25% Foundation Treasury (250M OGC)** → DAO governed canonical (CHN-4).
|
||||
//! - **15% Public Sale (150M OGC)** → bootstrap capital + liquidity inicial.
|
||||
//! - **15% Founding Team (150M OGC)** → 4-year vesting cliff 12mo (vesting locks Phase 2+).
|
||||
|
||||
@@ -405,9 +405,10 @@ mod runtime {
|
||||
#[runtime::pallet_index(12)]
|
||||
pub type Sudo = pallet_sudo::Pallet<Runtime>;
|
||||
|
||||
/// Emission pallet (FIX-6 Stage 1 per audit V2-CA2). En cada bloque mintea un
|
||||
/// block reward y lo reparte: autor Aura (validador) + treasury (og/gvtry) +
|
||||
/// subsidy pool (og/subsy, proof-of-equity #16). Cierra "los validadores
|
||||
/// Emission pallet (FIX-6 Stage 1 per audit V2-CA2). En cada bloque LIBERA un
|
||||
/// block reward del pool Ecosystem finito (og/ecosy, techo duro 1B) y lo
|
||||
/// reparte: autor Aura (validador) + treasury (og/gvtry) + subsidy pool
|
||||
/// (og/subsy, proof-of-equity #16). Cierra "los validadores
|
||||
/// ganan 0 OGC". sub_mult ortogonal (David 2026-06-10): el subsidy financia
|
||||
/// el subsidio de hardware sin importar la suscripción.
|
||||
#[runtime::pallet_index(13)]
|
||||
|
||||
@@ -7,7 +7,12 @@
|
||||
//! AOI deps).
|
||||
//!
|
||||
//! Whenever Mathi publishes a new tier in `arkhe-core`, this enum MUST be updated
|
||||
//! in lockstep (regression test in `origin-coin-tokenomics` will fail until then).
|
||||
//! in lockstep. Honesty (audit 2026-07-04): there is NO automated cross-crate
|
||||
//! guard — by design the chain does not depend on `arkhe-core` (avoids render/AOI
|
||||
//! deps), so nothing can compile-compare the two ladders. The sync is a MANUAL
|
||||
//! discipline. The `#[test]`s in this module pin the *current* ladder (rank,
|
||||
//! ordinal, SCALE discriminants, #16 multipliers), so accidental local edits are
|
||||
//! caught; drift from a new `arkhe-core` tier is not — keep them in lockstep by hand.
|
||||
|
||||
/// Canonical hardware tier ladder — Mathi sovereign (mirror).
|
||||
///
|
||||
|
||||
Reference in new issue
Block a user