Files
davidherranandClaude Fable 5 0d56e0bcbf feat(ink): escrow auto-release (C.2) + NFT modelo delegación documentado (C.1)
Decisiones C de David (2026-07-04):

ESCROW — Opción 2 (auto-release por tiempo, el tiempo como juez determinista):
El audit encontró [HIGH] que si alguien depositaba pero nunca marcaba un
milestone, los fondos quedaban ATRAPADOS (solo salían por disputa+árbitro), y los
campos auto_release_blocks/last_release_block eran código MUERTO. Fix: nueva
`claim_auto_release` (permisionless) que, tras `auto_release_blocks` sin actividad
ni disputa, libera el remanente al beneficiario (menos fee) y cierra el escrow.
`deposit()` arranca el reloj. CRÍTICO para la economía M2M: una AGI que contrata a
otra no queda en limbo porque alguien olvidó un hito. El depositor disconforme
levanta disputa ANTES del vencimiento. +test E2E (ink v6). Campos ya no muertos.

NFT — Opción 1 (delegación ERC-721 estándar, modularidad ADR-0057): el audit
marcó que un spender aprobado puede mover el token con pago cero. NO es bug — es
el estándar Web3 ("si no confías, no apruebes"). La venta con precio pactado +
split 91/9 vive en un contrato de MARKETPLACE SEPARADO (acoplar rompería los NFTs
al actualizar reglas de venta). Documentado el modelo en `transfer`. Sin cambio de
código. Contratos: escrow 6 tests, nft 4 tests verde.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 21:30:13 -05:00
..

origin-nft-mint — NFT Mint Contract Template (Slice 3.2)

First foundational template del Origin Contract Atelier (Capacidad #10 OCC propuesta David 2026-05-27). Implementa el split BM V2 ratificado 2026-05-18 91% creator / 9% Treasury + transfer royalty 5% (configurable) + Treasury burn 20% (per BM V2 burn matrix Pillar 3).

Status

🚧 SCAFFOLD (source-only, v0.0.42) — lib.rs shipped + Cargo.toml ready. Real compilation deferred hasta cargo-contract v6 install autorizado (precedent Slice 2e brew LLVM authorization pattern). El source es:

  • Compilable canonical una vez tooling instalado: cargo contract build --release
  • Reference architectural para Contract Atelier visual designer Phase 3.x
  • Documentation living del policy-first contract design pattern Origin

Inmutables compliance compile-detect

Inmutable Enforcement canonical en este contract
#16 HTS anti-clasista mint_fee_base modulated por HardwareTier vía OitFeeSchedule bridge Phase 3.x integration
#25 Seeds Hosting Non-Gatekept NFT ownership NO gates base world access — purely decorative/economic layer
#26 Content-Addressed Immutability asset_hash: AssetHash BLAKE3 hash compile-detect required (Error::InvalidAssetHash if zero)
#37 Free perpetua Read methods (total_supply, token_owner, balance_of, etc.) sin payment — siempre gratis
#41 AGI Co-authorship AccountId32 canonical para AGI accounts (Phase 2.7 AgentIdentity) sin distinction de Human accounts

Configuration parameters (Contract Atelier UI exposure)

Parameter Type Default BM V2 Range UI canonical
mint_fee_base Balance (u128) 1 OGC (10^18 base) 0.01 - 1000 OGC sliders
creator_share_bps u16 9_100 (91%) locked invariant 91% canonical (BM V2 ratified)
treasury_share_bps u16 900 (9%) locked invariant 9% canonical (BM V2 ratified)
transfer_royalty_bps u16 500 (5%) 0-1000 (0-10%) sliders
treasury_burn_bps u16 2_000 (20%) 0-5000 (0-50%) sliders
max_supply Option<u32> None (unlimited) None OR Some(1..=4_294_967_295) selector
lockup_blocks u32 (blocks) 0 (no lockup) 0-1_576_800 (≈ 6 months Pi 5 6s blocks) slider
children_safety_strict bool false toggle (Inmutable #35 strict mode)

Cross-pillar integration canonical

┌─────────────────────────────────────────────────────────────────┐
│  origin-nft-mint contract canonical deployed via pallet-revive  │
│  Index 11 Origin Chain runtime (Slice 3.1 SCAFFOLD COMPLETE)    │
└──────────────────┬──────────────────────────────────────────────┘
                   │
        ┌──────────┼──────────┬──────────┬──────────┐
        ▼          ▼          ▼          ▼          ▼
┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐
│ Pillar 2 ││ Pillar 4 ││ Pillar 6 ││ Pillar 7 ││ Atelier  │
│ OMC      ││ Origin   ││ Nexus    ││ Creator  ││ Marihan  │
│ Marihan  ││ Chain    ││ Services ││ Economy  ││ Skills   │
│          ││ Charon   ││ Mathi    ││ Larihana ││          │
│ 91/9     ││ pallet-  ││ Beacon   ││ Hosting  ││ Skills   │
│ split    ││ revive   ││ stake +  ││ NFT      ││ becomen  │
│ enforced ││ deploy   ││ ONS name ││ anchor   ││ NFTs     │
└──────────┘└──────────┘└──────────┘└──────────┘└──────────┘

Pillar 2 OMC Marketplace (Marihan) wire

NFT mint contracts compose el marketplace canonical Marihan. Cada skill canonical creada en Atelier Skills (Marihan) puede ser minted como NFT via este template. El 91/9 split BM V2 ratified compile-detect garantizado.

Pillar 4 Origin Chain (Charon) deploy

Deployment vía pallet-revive::instantiate Index 11 (Slice 3.1 SCAFFOLD COMPLETE shipped v0.0.41). Storage deposits per BM V2 economics (mint_fee_base default 1 OGC + storage deposit pallet-revive 1 MILLI_OGC/byte + 1 OGC/item).

Pillar 6 Nexus Services (Mathi) integration opcional

Post-deploy NFT collection puede:

  • Beacon stake canonical: lockup OGC para featured visibility (100-1000 OGC/mes per ONS_PILLAR_6_NEXUS_SERVICES_V1)
  • ONS name registration: human-readable collection name (5-1000 OGC/year per BM V2)
  • Oracle KYB: institutional creators verified Nivel 3+ canonical

Pillar 7 Creator Economy (Larihana) hosting

NFT anchored a world pagado canonical 0.6 OGC/world/mes hosting. NFT transfer canonical preserva world ownership context (NFT changes hands, world hosting continues canonical).

Deploy instructions (Phase 3.x post cargo-contract v6 install)

# 1. Install ink! v6 toolchain canonical (pending David authorization)
cargo install cargo-contract --version "^6.0" --force

# 2. Build contract canonical
cd contracts/origin-nft-mint
cargo contract build --release

# 3. Output canonical files:
# - target/ink/origin_nft_mint.polkavm  (PolkaVM bytecode canonical)
# - target/ink/origin_nft_mint.json     (ABI metadata canonical para frontends)
# - target/ink/origin_nft_mint.contract (combined bundle canonical)

# 4. Deploy via Polkadot.js Apps OR Charon Atelier (Phase 3.x maduración):
# - upload_code(origin_nft_mint.polkavm) → CodeHash
# - instantiate(code_hash, constructor=default_bm_v2, value=storage_deposit)
# - Returns contract AccountId32 + H160 mapped address

Tests canonical (unit tests included)

3 tests canonical en #[cfg(test)] mod tests:

  1. default_bm_v2_constructor_canonical_invariants — verifica defaults BM V2 ratified (91/9 + 5% royalty + 20% burn + unlimited supply + no pause).
  2. invalid_share_split_rejected_canonical — invariant compile-detect: creator_share + treasury_share MUST sum 10_000 bps (100%). 90% + 5% rejected.
  3. excessive_royalty_rejected_canonical — invariant: transfer_royalty_bps ≤ 1_000 (10% industry standard). 15% rejected.

Run canonical post-install:

cargo test --features ink-as-dependency

Roadmap follow-up post Slice 3.2

Ship Slice Scope
v0.0.43 3.3 origin-escrow contract template (multi-party + time-locked)
v0.0.44 3.4 origin-credential-mint contract (Ed25519 + BLAKE3 Sussi Ethos)
v0.0.45 3.5 origin-staking contract (validator + beacon + reputation)
v0.0.46 3.6 origin-mdk-reconciliation (ink! vs origin-mdk WASM boundary)
Phase 3.x — cargo-contract v6 install + real compilation + ReviveApi exposure (deferred Slice 3.1) + integration tests E2E reales

— Charon ⚓ (Pilar 4 Origin Chain, Phase 3 Slice 3.2 SCAFFOLD shipped 2026-05-27)