Datos on-chain en español, parte 0: prepara tu entorno para el Wintermute Alpha Challenge 2026

Publicado 28 de Septiembre de 2026 a las 15:42 por manlio

Por qué en español

Casi todo el material técnico sobre cómo investigar datos on-chain (rastrear fondos, leer contratos, reproducir eventos históricos de la blockchain) está en inglés. Quien quiere aprender a hacerlo en español termina armando su conocimiento a pedazos, entre hilos de X, documentación y videos sin contexto. Esta serie busca llenar ese hueco con un caso real a la vez.

Qué es el Alpha Challenge

Wintermute es uno de los formadores de mercado (market makers) más grandes de la industria cripto. Desde 2024 publica el Alpha Challenge, una colección de casos de estudio basados en incidentes reales de la historia on-chain.

En 2026 cambió el formato. Wintermute explicó que, a finales de 2025, los modelos de lenguaje (LLMs) se volvieron capaces de resolver retos no triviales y que esos modelos ya conocen muchos de los incidentes en los que se basan los casos.

Por eso no hay registro, fecha límite ni competencia con ranking este año: solo un nuevo lote de casos para practicar a tu ritmo. Eso es justamente lo que permite publicar soluciones abiertamente. Wintermute

La edición 2026 tiene ocho casos: rastrear el origen de una transferencia de 1.5 millones de dólares, identificar a los inversionistas detrás de un fundraise, reconstruir el lanzamiento del token TRUMP en Solana, ejecutar un trade en un exchange descentralizado de 2020 y liquidar una posición de mil millones de dólares que nadie liquidó, por mencionar algunos.

Cómo va a funcionar la serie

Cada entrega resuelve un caso, pero el objetivo no es la respuesta. La respuesta la puede obtener cualquiera con un LLM. El objetivo es el método: qué herramienta usar, qué preguntarle a la blockchain y por qué. Cada post cierra con la solución, marcada como spoiler, para que intentes el caso antes de leerla.

Cuando use herramientas de inteligencia artificial en el proceso, lo voy a decir y voy a explicar en qué punto ayudaron y en qué punto no.

El orden será por dificultad, no por el número del caso:

  1. Out of Nowhere: rastrear el origen de fondos (solo lectura).
  2. Smart Money: atribuir direcciones a fondos de capital de riesgo.
  3. First Blood: el lanzamiento de TRUMP en Solana.
  4. Falling Dutchman: nuestro primer fork de Ethereum.
  5. Too Big To Fail: una liquidación en Liquity durante el desplome de mayo de 2021.
  6. Firepit: quema de UNI y fees de Uniswap en X Layer.
  7. Cold Start: operar en una cadena sin RPC público.
  8. First Move: disputas en los rollups de Optimism.

Qué necesitas

Una computadora con Linux (yo uso Ubuntu; en macOS los comandos son casi iguales y en Windows puedes usar WSL), conocimientos básicos de terminal y ganas de leer código. No necesitas ser programador de Solidity; lo iremos aprendiendo conforme lo requiera cada caso.

Las herramientas

Git para descargar el repositorio con los casos.

Foundry es la caja de herramientas estándar para trabajar con Ethereum desde la terminal. Trae cuatro programas: forge compila y ejecuta pruebas de contratos, cast consulta la blockchain (saldos, transacciones, bloques), anvil levanta una copia local de la blockchain y chisel es una consola interactiva de Solidity.

Un RPC con nodo de archivo. Un RPC es la puerta por la que tu computadora le hace preguntas a la blockchain. Un nodo normal solo guarda el estado reciente; un nodo de archivo guarda el estado de cada bloque de la historia.

Varios casos nos piden reproducir exactamente lo que pasó en un bloque de 2020 o 2021, así que necesitamos acceso de archivo. Proveedores como Alchemy o dRPC lo ofrecen en capas gratuitas o de bajo costo.

Instalación paso a paso

Cada bloque de comandos está marcado con su inicio y su fin para que puedas copiarlos uno por uno.

```bash

>>> INICIO 1: actualizar el sistema e instalar dependencias base

sudo apt update && sudo apt upgrade -y sudo apt install -y git curl build-essential jq python3

<<< FIN 1

```

```bash

>>> INICIO 2: descargar el instalador de Foundry

curl -L https://foundry.paradigm.xyz | bash

<<< FIN 2

```

```bash

>>> INICIO 3: recargar la terminal e instalar las herramientas

source ~/.bashrc foundryup

<<< FIN 3

```

```bash

>>> INICIO 4: verificar que las cuatro herramientas quedaron instaladas

forge --version && cast --version && anvil --version && chisel --version

<<< FIN 4

```

text $ forge --version && cast --version && anvil --version && chisel --version forge Version: 1.8.3 Commit SHA: cae51ad458f6abb64852b7709eb784352429825d Build Timestamp: 2026-09-15T10:46:16.519267388Z (1789469176) Build Profile: dist cast Version: 1.8.3 Commit SHA: cae51ad458f6abb64852b7709eb784352429825d Build Timestamp: 2026-09-15T10:46:16.519267388Z (1789469176) Build Profile: dist anvil Version: 1.8.3 Commit SHA: cae51ad458f6abb64852b7709eb784352429825d Build Timestamp: 2026-09-15T10:46:16.519267388Z (1789469176) Build Profile: dist chisel Version: 1.8.3 Commit SHA: cae51ad458f6abb64852b7709eb784352429825d Build Timestamp: 2026-09-15T10:46:16.519267388Z (1789469176) Build Profile: dist

Tus números de versión pueden ser distintos; lo importante es que las cuatro herramientas respondan sin error.

```bash

>>> INICIO 5: descargar el repositorio de los casos

mkdir -p ~/dev && cd ~/dev git clone https://github.com/WintermuteResearch/Alpha-Challenge-2026.git cd Alpha-Challenge-2026 ls -1 challenges/

<<< FIN 5

```

text $ ls -1 challenges/ 00-warmup 01-out-of-nowhere 02-falling-dutchman 03-too-big-to-fail 04-first-blood 05-smart-money 06-cold-start 07-firepit 08-first-move

Verás nueve carpetas: los ocho casos, numerados del 01 al 08, y 00-warmup, un ejercicio sencillo que existe para confirmar que tu entorno funciona antes de entrar a los casos reales. Lo resolvemos al final de este post.

El repositorio no incluye forge-std, la librería estándar de Foundry de la que dependen todas las pruebas: de ahí vienen el contrato Test, los cheatcodes vm.* y console.log. Hay que instalarla en la carpeta lib/:

```bash

>>> INICIO 6: instalar la librería estándar de Foundry

forge install foundry-rs/forge-std

<<< FIN 6

```

La salida termina con una línea como Installed forge-std tag=v1.16.2@.... Si te saltas este paso, cualquier prueba falla al compilar con el error Source "forge-std/Test.sol" not found.

Ahora crea una cuenta con un proveedor de RPC, genera un endpoint para Ethereum Mainnet y verifica que tenga acceso de archivo. Mi recomendación para la serie es Alchemy: el plan gratuito incluye acceso de archivo en Ethereum Mainnet y es el más documentado. Alternativas: Infura, QuickNode y dRPC. Chainstack reserva archivo para planes de pago.

Pasos en el panel de Alchemy:

  1. Crear cuenta en alchemy.com.
  2. Crear una app, seleccionar la cadena Ethereum y la red Mainnet.
  3. Copiar la URL HTTPS del endpoint, con formato https://eth-mainnet.g.alchemy.com/v2/<API_KEY>.

USER_ADDRESS es la dirección con la que operan las pruebas de los casos. Usamos la primera cuenta de prueba de anvil, cuya llave privada es pública: nunca pongas aquí una dirección tuya real.

```bash

>>> INICIO 7: guardar el endpoint y la cuenta de prueba en un archivo que Git no va a subir

echo 'ETH_RPC_URL=https://TU_ENDPOINT' > .env echo 'USER_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' >> .env echo '.env' >> .gitignore

<<< FIN 7

```

```bash

>>> INICIO 8: probar el RPC consultando un bloque de febrero de 2020

source .env cast block 9462777 --rpc-url $ETH_RPC_URL --field timestamp

<<< FIN 8

```

text $ cast block 9462777 --rpc-url $ETH_RPC_URL --field timestamp 1581438350

Ese número es el momento en que se minó el bloque, en segundos desde el 1 de enero de 1970: el 11 de febrero de 2020 a las 16:25:50 UTC. Si obtienes un número, tu RPC tiene acceso de archivo. Si obtienes un error de estado faltante, tu proveedor no te está dando acceso histórico y tendrás que cambiar de plan o de proveedor.

Prueba final: el warmup

El caso 00-warmup existe solo para confirmar que todo funciona. Su enunciado: la prueba hace un fork de Ethereum Mainnet en el bloque 21895252, le da 10 ETH a tu dirección y tú debes escribir código que te deje con al menos 1 WETH. Como es parte de la preparación, aquí la solución va directa, sin spoiler.

La prueba está en challenges/00-warmup/Solution.t.sol. Estas son sus partes importantes:

Por qué existe WETH. El ETH no cumple el estándar ERC-20 que usan los demás tokens. WETH lo "envuelve" 1 a 1 para que los exchanges descentralizados lo traten como cualquier otro token. Por eso, cuando analices flujos on-chain, casi siempre vas a ver WETH y no ETH. El contrato de WETH tiene dos funciones propias: deposit(), que recibe ETH y te entrega la misma cantidad en WETH, y withdraw(), que hace lo contrario.

La solución es una sola línea: llamar a deposit enviando 1 ETH. Reemplaza el comentario // Your solution goes here. (línea 18) con:

```bash

>>> INICIO 9: escribir la solución en la línea 18 de la prueba

sed -i '18s|.*| IWETH(WETH).deposit{value: 1 ether}();|' challenges/00-warmup/Solution.t.sol

<<< FIN 9

```

La línea se lee así: "toma la dirección WETH, trátala como un contrato IWETH y llama a deposit enviándole 1 ETH". IWETH es una interfaz: la lista de funciones que se le pueden llamar a un contrato, definida en src/Interfaces.sol.

```bash

>>> INICIO 10: ejecutar la prueba del warmup

forge test --match-path challenges/00-warmup/Solution.t.sol -vv

<<< FIN 10

```

```text $ forge test --match-path challenges/00-warmup/Solution.t.sol -vv [⠊] Compiling... [⠰] Compiling 23 files with Solc 0.8.35 [⠒] Solc 0.8.35 finished in 369.73ms Compiler run successful!

Ran 1 test for challenges/00-warmup/Solution.t.sol:Warmup [PASS] test_Solution() (gas: 67149) Logs: Warmup solved.

Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 1.80s (290.95ms CPU time)

Ran 1 test suite in 1.81s (1.80s CPU time): 1 tests passed, 0 failed, 0 skipped (1 total tests) ```

[PASS] indica que la verificación se cumplió. El gas es lo que habría costado la operación en la red real; en el fork no pagas nada. La opción -vv es la que muestra el mensaje Warmup solved..

Por último, califica la solución con el verificador oficial de Wintermute:

```bash

>>> INICIO 11: calificar el warmup

python3 alpha.py check 00

<<< FIN 11

```

```text $ python3 alpha.py check 00 00-warmup [code, tier 1] [⠊] Compiling... No files changed, compilation skipped

Ran 1 test for challenges/00-warmup/Solution.t.sol:Warmup [PASS] test_Solution() (gas: 67149) Logs: Warmup solved.

Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 753.22ms (717.72µs CPU time)

Ran 1 test suite in 755.23ms (753.22ms CPU time): 1 tests passed, 0 failed, 0 skipped (1 total tests) 25/25 points

total: 25/25 points ```

Con 25 de 25 puntos, tu entorno funciona de punta a punta: Foundry, el RPC con acceso de archivo, los forks y el verificador. Estás listo para los casos reales.

Una regla de seguridad

En esta serie vamos a ejecutar transacciones, pero siempre sobre copias locales de la blockchain. Para eso anvil genera cuentas de prueba cuyas llaves privadas son públicas y conocidas por todos.

Es de suma relevancia que nunca pongas la frase semilla ni la llave privada de una wallet real en tu archivo .env ni en ningún script de esta serie. Si un tutorial te pide hacerlo para practicar, desconfía.

Siguiente entrega

En la parte 1 resolvemos Out of Nowhere: alguien recibe una transferencia de 1.5 millones de dólares y hay que descubrir de dónde salió. Solo necesitaremos un explorador de bloques y cast.

Compartir este post

Posts similares

No hay posts similares.

0 comentarios

No hay comentarios.

Deja un comentario