solana-arb-executor
Andamia la ruta crítica de ejecución en Rust para el arbitraje en Solana: stream -> detectar -> simular -> paquete -> enviar, envuelto en una puerta de riesgo (límites, interruptor automático, kill-switch) y una puerta de confirmación. Esta es la capa on-chain que el arte previo solo analiza: agiprolabs/claude-trading-skills es análisis en Python (señales, backtests, sin ejecución), y los skills de TypeScript para arbitraje evitan la ruta sensible a la latencia. Este es el verdadero espacio vacío — la parte que debe ser rápida, correcta y segura.
Economía honesta (importante): el arbitraje DEX espacial en Solana está dominado por infraestructura y es altamente disputado; los diferenciales de precio brutos van a entidades con mejor posición de red que una sola máquina. La ventaja duradera de un operador minorista no es la velocidad bruta — es el envío correcto (simular primero, precio de CU correcto, tamaño de propina, disciplina de reintentos), la disciplina de riesgo (límites/interruptor/kill-switch) y las oportunidades menos disputadas (arbitraje de funding, diferenciales de tasa entre exchanges, jugadas de horizonte más largo). Esto es andamiaje + conocimiento, no un bot alojado y no una máquina de ganancias garantizadas.
PRECEDENCIA (leer antes de cualquier generación de código)
- Lee
references/safety-rails.mdPRIMERO. Cada ruta de ejecución emitida lo obedece. - Nunca emitas código que envíe una transacción que mueva fondos/firme sin una puerta de confirmación humana explícita y tipada; ninguna bandera la desactiva. Por defecto
DRY_RUN=true,REQUIRE_CONFIRM=true. Siempre simula antes de enviar. - Usa las versiones fijadas de crates en
references/sdk-versions.md(verificadas 2026-06). Marcajito-sdk-rustcomo 0.x temprano. - Delega el trabajo de programa / Anchor / IDL / firma de transacciones a
../solana-dev/a través dereferences/delegation.md. No lo dupliques aquí. - Los límites obligatorios (monto máximo, posición máxima, pérdida diaria) + interruptor automático + kill-switch cierran cada orden antes de que pueda llegar a la puerta de confirmación.
Guía de Enrutamiento de Tareas
Asigna la intención del usuario a exactamente una hoja.
| El usuario pregunta sobre... | Abre esta hoja |
|---|---|
| diseño de ruta crítica / presupuesto de latencia | references/architecture.md |
| transmisión de cuentas/slots / ingestión ShredStream | references/streaming-ingestion.md |
| paquete Jito / propina / sincronización con líder | references/jito-bundles.md |
| envío de tx / tarifa de prioridad / simular / reintentos | references/transaction-landing.md |
| detectar oportunidad / spread / umbral | references/opportunity-detection.md |
| riesgo / interruptor automático / kill-switch / límites | references/risk-and-killswitch.md |
| seguridad / puerta de confirmación | references/safety-rails.md |
| crate / versión / instalación | references/sdk-versions.md |
| programa / Anchor / firma | references/delegation.md |
Divulgación progresiva
- Enrutador (este archivo): solo punteros — sin contenido masivo.
- Hojas (~60-200 líneas cada una): densas, correctas, mínimas. El código vive en
skill/templates/. - La lógica pura es comprobable offline:
templates/src/fees.rsytemplates/src/risk.rsson solo std y autónomos — ejecutarustc --edition 2021 --test fees.rs(yrisk.rs) de forma independiente. El crate completo (stream.rs,jito.rs,detector.rs,main.rs) compila concargo buildcontra los crates fijados. - Delegación:
../solana-dev/para programa / tx / firma.
Agentes
| Agente | Rol | Modelo |
|---|---|---|
agents/arb-execution-architect.md | Diseña el presupuesto de latencia, la topología de ingestión/envío y el perímetro de riesgo antes del código | opus |
agents/rust-perf-engineer.md | Conecta stream -> detector -> RiskGate -> paquete Jito con simulación previa | sonnet |
Comandos
| Comando | Función |
|---|---|
commands/scaffold-executor.md | Emitir el esqueleto del crate ejecutor (por defecto DRY_RUN + REQUIRE_CONFIRM) |
commands/wire-yellowstone.md | Generar el módulo de ingestión gRPC Yellowstone con reconexión/backoff |
commands/add-killswitch.md | Insertar el RiskGate con límites + interruptor automático + kill-switch |