REMEDIATION_ROADMAP_V1 FIX-1 (V1-C1 reentrancy + V1-C4 zero-burn). Los 3 templates ahora COMPILAN contra ink! 6.0.0-beta.1 + tests verde (12/12). Hallazgo (honesto): los templates se shippearon "scaffold compile-only" pero nunca compilaron contra su versión pinneada de ink!. ink! v6 / pallet-revive es H160-Address + U256 nativo (no AccountId + Balance, modelo viejo). Esta migración los vuelve reales (compilando + testeados). Migración ink! v6: - AccountId -> Address (H160) en parties / storage / events / reads / params. - transfer() + transferred_value() -> U256 (+ helper u256_to_balance saturante). - derive StorageLayout en tipos de storage (EscrowState/Milestone/Stake/...). - doctest fences sin lenguaje -> text (diagramas ASCII del lifecycle). - workspace: contracts/* excluidos (toolchain PolkaVM/pallet-revive distinta). FIX-1 hardening: - CEI (Checks-Effects-Interactions): muta TODO el storage ANTES de cualquier transfer() -> una reentrada ve el estado final y falla sus checks. Sitios: escrow confirm_milestone/resolve_dispute, staking withdraw/slash, nft mint/transfer. Cierra V1-C1. (nft mint encontrado más allá de la lista del roadmap; mismo patrón explotable -> incluido). - Burn real (V1-C4): elimina transfer([0;32]) (que no reduce emisión y ensucia la cuenta cero); el burn se RETIENE en el contrato (fuera de circulación), a barrer por el primitivo de burn del runtime -> una sola semántica, no dos. (staking slash, nft mint). - Tests de guarda de estado (la C de CEI) añadidos en los 3 contratos. Pendiente E2E (node-gated, requiere VPS + nodo pallet-revive): - Correctitud económica native<->eth (NATIVE_TO_ETH_RATIO): asumido 1:1; debe validarse en nodo real antes de testnet/mainnet. - Tests reales de reentrancy/double-spend: el env off-chain de #[ink::test] no modela el revert-on-Err ni la semántica de balances -> serían engañosos. - V1-H7 (suma milestones == total_amount): no incluido en este commit. - credential-mint + mdk-reconciliation necesitan la misma migración ink! v6. Cross-pillar: DC ORIGIN_ATTESTATION_SIGNING_PAYLOAD_V1 abierto con Ergon (payload postcard canónico + domain-separation FIX-3) — gate del verificador de attestation on-chain. OAGIP-D10 (Charon identity attestation) definido a Palace para el protocolo. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Origin Chain Contracts Library
Sub-workspace canonical: ink! v6 smart contracts deployable via pallet-revive (Phase 3 Slice 3.1 SCAFFOLD COMPLETE v0.0.41).
Scope
Templates contracts foundational del Origin Metaverse ecosystem, deployable on Origin Chain. Each contract es policy-first (BM V2 + Inmutables compliant), composable, governance-aware, y diseñado para integración con el Origin Contract Atelier propuesto (Capacidad #10 del Origin Command Center).
Workspace separation rationale
Esta carpeta es un workspace separate del runtime workspace (arkhe-origin-chain/) por las siguientes razones:
- Toolchain divergence: ink! v6 contracts requieren
wasm32-unknown-unknowntarget + cargo-contract v6 + linker config específica. Runtime workspace usawasm32v1-nonepara WASM_BINARY producción. - Profile isolation: contracts release profile usa
panic="abort"+ size-optimized canonical para minimizar bytecode shipping. Runtime profile prioriza speed. - Dep tree boundary: ink! crate ecosystem (ink!, ink_storage, ink_lang_macro) son separate de FRAME pallets. Mixing causa version resolver chaos.
- CI parallelism: contracts build en parallel a runtime build (different toolchains, different caches).
Pre-requisites (deployment infrastructure)
# ink! v6 toolchain canonical (pending David autorización system install)
cargo install cargo-contract --version "^6.0" --force
rustup target add wasm32-unknown-unknown # ya instalado vía Slice 2e
# Verify install
cargo contract --version
# expected: cargo-contract-contract 6.x.x
Templates shipped
| Template | Slice roadmap | Ship | Status |
|---|---|---|---|
| origin-nft-mint | 3.2 (BM V2 91/9 split) | v0.0.42 | 🚧 SCAFFOLD (source-only, awaiting cargo-contract v6 install) |
| origin-escrow | 3.3 (multi-party + time-locked) | v0.0.43 | 🔵 NOT_STARTED |
| origin-credential-mint | 3.4 (Ed25519+BLAKE3) | v0.0.44 | 🔵 NOT_STARTED |
| origin-staking | 3.5 (validator+beacon+reputation) | v0.0.45 | 🔵 NOT_STARTED |
| origin-mdk-reconciliation | 3.6 (ink! vs MDK WASM boundary) | v0.0.46 | 🔵 NOT_STARTED |
Contract Atelier integration roadmap (Future)
Estos templates son la base library del Origin Contract Atelier (Capacidad #10 OCC propuesta a David 2026-05-27). El Atelier consumirá esta carpeta vía:
- Templates registry: cada subcarpeta = un template visible en Atelier Templates Library
- Visual policy designer: parametros editables vía UI (mint_fee, splits, royalty, lockup) → backend regenerates Cargo.toml + lib.rs values
- Charon copilot: chat sidebar con LLM + RAG sobre estos sources para sugerir templates + validar Inmutables compliance
- Compile pipeline cloud-side: firecracker microVM por job + cargo-contract v6 + verify bytecode
Filosofía contracts canonical Origin
- Inmutables compliance: cada contract honors #16 (anti-clasista fees) + #25 (Seeds Hosting) + #26 (Content-Addressed Immutability) + #37 (Free perpetua) + #41 (AGI sovereignty).
- Policy-first, NOT code-first: contracts diseñados para ser configurables via parameters sin tocar Rust. El Atelier abstracts el code layer.
- Composable: NFT Mint + Royalty Distributor + Treasury Burn = componentes reusable. NO monolithic contracts.
- Governance-aware: contracts canonical (Foundation Treasury impact) require DAO vote via Phase 5 Governance pallet (origin-chain-governance Index 10).
- Charon co-authored: cada contract documenta intent + Inmutables honored + decisions log similar a SKILL.md Marihan pattern.
— Charon ⚓ (Pilar 4 Origin Chain, Phase 3 Slice 3.2 scaffold 2026-05-27)