Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

quad4Damage-oracle — economía Tier 0: game server → L2

Repo: github.com/ab4cus/quad4Damage-oracle (antes «qd-oracle»).

Sidecar que cierra el círculo jugar → ganar → mint. Recibe los eventos económicos que emite el game server Quad4Damage (carril Tier 0, server-authoritative), firma la sesión con la clave del servidor y la envía a SessionOracle en la L2, que acuña los ResourceNFT del jugador.

Fase 4 del PLAN-UNIFICADO. Referencia en Node (interactúa con la cadena vía cast de Foundry, sin dependencias npm). En producción se fusiona con el Oracle en Rust y el spool se sustituye por un socket local.

El loop completo

Quad4Damage server            qd-oracle                     L2 (SessionOracle)
      │                          │                               │
  partida termina               │                               │
  Trap_EconEvent ──► spool/.evt  │                               │
  {player,resource,amount,rarity}│                               │
      │                          │ lee el evento                 │
      │                          │ sessionHash=keccak(gameId,    │
      │                          │   player,drop,nonce)          │
      │                          │ firma con clave del servidor  │
      │                          │ (Tier 0, en GameRegistry)     │
      │                          │ submitSession(...) ──────────►│ verifica firma
      │                          │                               │ mint ResourceNFT
      │                          │◄──── balanceOf confirma ──────│  → wallet del jugador

sessionHash compromete el contenido del drop, así el relayer no puede alterar lo que se acuña (aunque tenga el rol RELAYER).

Ejecutar

# vigila el spool y procesa eventos en bucle
QD_DEPLOY_JSON=../e4Coin-play4Chain/deploy.json \
QD_ECON_SPOOL=/ruta/al/spool \
L2_RPC_URL=http://127.0.0.1:8545 \
GAME_SIGNER_PK=0x... \
RELAYER_PK=0x... \
node src/oracle.mjs

# o procesa lo pendiente y sale (tests / cron)
node src/oracle.mjs --once

GAME_SIGNER_PK es la clave registrada como signerKey del juego en GameRegistry (Tier 0). RELAYER_PK paga el gas de submitSession (rol RELAYER de la federación).

Prueba end-to-end (loop completo verificado)

.claude/e2e-phase4.sh en la raíz del monorepo levanta anvil, despliega los contratos, hace que el game server emita eventos (econevent), corre este Oracle y verifica el balance ResourceNFT del jugador on-chain:

=== 2. game server emite evento economico (Tier 0) ===
  eventos en spool: 2
=== 3. qd-oracle procesa el spool -> mint en L2 ===
  [qd-oracle] mint OK: 0x7099… +3 iron (common) → balance 3
  [qd-oracle] mint OK: 0x7099… +1 artifact (legendary) → balance 1
=== 4. verificacion ON-CHAIN del balance del jugador ===
  balance iron del jugador: 3
  balance artifact del jugador: 1

Endurecimiento pendiente (antes de mainnet)

  • El game server debe correr en modo standalone con su basegame propio (quad4damage).
  • Reemplazar el spool por un socket local (menor latencia, sin pulling).
  • Firma-umbral BLS del quorum LLMQ en lugar de una única clave de servidor.
  • Rate limiting y validación de plausibilidad (anti-abuso) antes de acuñar.

Licencia

GNU General Public License v2.0 or later (GPL-2.0-or-later) — ver LICENSE.

About

Smarth Contac de moto de quadDamage

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages