Files
arkhe-origin-chain/contracts/origin-staking
davidherranandClaude Opus 4.8 e6a803b54f feat(emission): FIX-6 Stage 1 — emision que paga validadores (V2-CA2) + remover APR falso
Build + tests verde: emission pallet 5 + runtime 28 (incl. emission_pallet_index_13)
+ staking contract 4. Verificacion adversarial ultracode (2 skeptics): correctitud
+ seguridad CONFIRMADAS (split exacto, sin overflow, autor solo-desde-Aura sin
input de usuario, mint-None-seguro, sin dispatchable explotable, APR removal
honesto). 'partial' solo por cobertura de tests en ramas triviales (None /
reward==0), NO por vulnerabilidad.

Cierra V2-CA2 (la cadena no tenia emision -> los validadores ganaban 0 OGC):

NUEVO pallet origin-chain-emission (Index 13):
- on_initialize cada bloque: identifica al autor Aura (FindAuthor =
  pallet_session::FindAccountFromAuthorIndex<Runtime, Aura>), mintea un
  BlockReward (10 OGC, ~5.26% inflacion anual) y lo reparte:
  - 70% al autor (el validador que produjo el bloque).
  - 20% al treasury (og/gvtry — la MISMA cuenta-vault de governance FIX-6).
  - 10% al subsidy pool (og/subsy — proof-of-equity que financia el subsidio
    de hardware anti-clasista #16).
- El residual del split va al subsidy (no pierde unidades por redondeo de bps).
- TotalEmitted trackea la inflacion acumulada on-chain. mint_into (fungible::
  Mutate) = emision real (aumenta total issuance).
- El autor viene SOLO de FindAuthor/Aura (no de input de usuario) -> nadie puede
  mintear a una cuenta arbitraria. Si FindAuthor devuelve None, no mintea. Sin
  overflow (saturating_mul/div, 10^19 << u128::MAX).

sub_mult ORTOGONAL (David 2026-06-10): el subsidy pool financia el subsidio de
hardware SIN importar la suscripcion premium. Esta emision lo alimenta; el
OnChargeTransaction de Stage 2 lo consumira.

Remover APR falso (V1/V2 fake APR): staking contract default_chn3 reward rates
8/5/3% -> 0. Era enganoso (no habia motor que los pagara; los campos
reward_rate_bps se almacenaban pero NUNCA se leian, rewards_accumulated jamas se
acreditaba). Los validadores ahora cobran via la emision real; las tasas de
staking reales las define Stage 2 (NPoS por stake).

FIX-6 Stage 1 COMPLETO (con v0.0.56 treasury real): emision + treasury real +
APR removido. Stage 2: NPoS (pallet_staking + EraPayout) + fee unificado
(OnChargeTransaction con sub_mult ortogonal).

FOLLOW-UPS (low, documentados): anadir tests de cobertura para las ramas
FindAuthor==None (no mintea) y reward==0 (requieren un 2o mock runtime);
BlockReward fijo (decay schedule = Stage 2); el subsidy pool acumula pero no se
consume hasta el OnChargeTransaction de Stage 2; genesis mainnet del treasury
vault (pre-launch).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 06:06:21 -05:00
..

origin-staking — Multi-purpose Staking Template (Slice 3.5)

Fourth foundational template del Origin Contract Atelier. Validator + Beacon + Reputation staking patterns canonical.

StakeKind variants (3 canonical)

Kind Purpose Min Stake (default) Lockup (default) APR (default)
Validator NPoS validator Phase 2 (CHN-3) 100 OGC 28 días (403_200 blocks) 8%
Beacon Pillar 6 Nexus featured visibility 100 OGC 7 días (100_800 blocks) 5%
Reputation AGI commercial reputation (BM V2 §6.4) 10 OGC 14 días (201_600 blocks) 3%

Lifecycle canonical

stake() ──► Active ──unbond_request──► Unbonding ──lockup expires──► Withdrawable
              │                              │
              ▼                              └──withdraw()──► funds + rewards
        slash_event (Tribunal) ──► Slashed (partial OR full)

Slashing canonical

Only slashing_authority (typically Tribunal Pillar 6 contract address) puede invocar slash(). Splits canonical:

  • 50% → Treasury canonical
  • 50% → Burn (per BM V2 burn matrix)

Reason hash BLAKE3 inmutable on-chain para audit trail Tribunal decisions.

Inmutables compliance

  • #16 HTS: min_stake graduated por HardwareTier — Pi 5 inclusion canonical
  • #37 Free perpetua: 5 read methods sin payment
  • #26 Content-Addressed: reason_hash BLAKE3 inmutable slash events
  • #41 AGI Cross-Species: AGI accounts stake canonical en cualquier kind (especially Reputation)

Cross-pillar coord

  • Pillar 4 Charon: validator stake compose con pallet-session NPoS Phase 2
  • Pillar 6 Mathi: beacon stake fed a Beacon visibility rotation
  • Pillar 6 Tribunal: slashing_authority = Tribunal contract
  • BM V2 Pillar 4 §6.4: AGI reputation stake/slash mechanics canonical

Tests (3 unit tests)

  • default_chn3_constructor — defaults CHN-3 NPoS Phase 2 prep
  • lockup_periods_canonical — Validator > Reputation > Beacon hierarchy
  • stake_kind_variants_distinct — enum distinction

— Charon ⚓ (Slice 3.5 SCAFFOLD 2026-05-27)