| Componente | Recomendación |
|---|---|
| Sistema | Ubuntu 22.04 LTS |
| RAM | 32 GB |
| CPU | 8 núcleos 16 Threads |
| Disco | 100 GB SSD |
Esta guía corre un nodo minero o prover de boundless usando docker y utiliza un RPC de la Red donde vallamos a trabajar
Puedes seguir esta guía en tu equipo local, o puedes tambien utilizar un VPS (alquilar un servidor virtual) para tener tu nodo/mineroi.
-
Ethereum Sepolia
-
Base Sepolia
-
Base Mainnet
Para poder minar con Boundless necxesitas tener un RPC de la Red donde vallamos a minar, puedes correr tu ropio nodo y usar tu RPC (ideal) so puedes usar un proveedor de RPC teniendo en cuenta que debes tener un plan pago para evitar errores por limitaciones.
Por EJ. si deseas correr Boundless en Ethereum Sepolia, necesitas un RPC de sepolia quepuedes comprar o correr tu mismo con esta guía de sepolia: https://github.com/wkss1/nodo-sepolia/tree/main
Un RPC no es mas que una llamada que permite interactuar con el nodo, en el caso de Boundless, tener un RPC te permite interactuar directamente y tener acceso a la blockchain para resolver las pruebas y publicar los resultados.
-
Publicación de órdenes: Devs suben órdenes con tareas computacionales y recompensas.
-
Stake de USDC: Los nodos deben hacer depósito como garantía.
-
Puja (mcycle_price): Se compite por probar órdenes.
-
Lock-in: El ganador bloquea la orden.
-
Generación de prueba (Bento): Se ejecuta con GPU.
-
Recompensas o slashing: Por pruebas válidas o tardías.
Es CLAVE entender el funcionamiento, ya que para poder ganar la competencia y resolver las pruebas, las partes mas importantes son el precio de bloqueo y el fee de prioridad, ya que en boundless cuando agarras una prueba, la bloqueas para que solo tu y nadie mas la pueda resolver y ganarla, por eso el secxreto esta en lograr bloquear las pruebas antes que los demas.
Esto dependera de el fee que utilices y el precio al que estes dispuesto a bloquear, esto afectara tu rentabilidad y tus costos, los cuales seran diferentes en Testnets y en mainnet, ya que en esta segunda probablemente cuides más tu rentabilidad mientras que en la red de pruebas puedes ser más agresivo
Podemos correrlo local, pero entiendo que muchos no tienen un equipo para esto e igual quieren participar, les dejo aqui algunas opciones para rentar un servidor con tarjeta grafica.
- Vast ai es la opción recomendada:
Genera clave SSH: ssh-keygen
Usa template: Ubuntu o PyTorch (ya tiene CUDA y drivers)
Este es el template que necesitas: https://cloud.vast.ai/?ref_id=62897&creator_id=62897&name=Ubuntu%2022.04%20VM
Una vez que tenemos el servidor solo debemos acceder a el desde nuestro equipo.
- Conecta por SSH:
ssh -i ~/.ssh/id_rsa usuario@IPEn el caso de Vast, debemos agregar una SSH key, ya sea antes de levantar la instancia o luego de levantada, debemos agregarla, una SSH key no es mas que una llave de acceso que generamos en nuestro equipo y la ponemos en el servidor para poder acceder.
Con este comando en tu terminal desde el equipo donde estaras accediendo al servidor vamos a generar esta SSH Key:
ssh-keygen -t rsa -b 4096Esto creara la llave y la guardara en la ubicacion que te da por defecto y te pedira ponerle un password. para obtener esta llave que hemos generado en nuestro equipo vamos a usar CAT en la ubicacion del archivo recien generado, EJ:
cat /Users/inbest/.ssh/id_rsa.pub Esto te devolvera la llave que inicia con (ssh-rsa AAB3N.....) y finaliza con (......6g3PIxL/zww== inbest@Inbest.local)
La copiamos toda y la agregamos en vast y presionamos "ADD SSH KEY"
ya simplemente para acceder a tu servidor desde tu terminal en la mac o en windows powershell usas el comando de SSH que te dara vast y sera algo como esto:
ssh -p XXXXX root@XXX.X.XXX.XXX -L 8080:localhost:8080luego le diras que "yes" y luego pondras la clave que pusiste al generar tu SSH Key en el paso anterior, listo ya estas dentro del servidor!
Luego de generada en vast podemos ir la apartado de "Keys", VAMOS A SSH Key y agregamos la llave aqui.
Usaremos docker para la instalacion del nodo, asi que con estos comando actualizamos el sistema y descargamos las dependencias (software que necesitas para poder correr el nodo)
- Verifica tu sistema operativo
lsb_release -aluego vamos a activar el path de nvidia-smi:
which nvidia-smiy corremos nvidia-smi:
nvidia-smisudo apt-get update && sudo apt-get upgrade -y
sudo apt install curl iptables build-essential git wget lz4 jq make gcc nano automake autoconf tmux htop nvme-cli libgbm1 pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip -ysudo apt update && sudo apt install -y \
ca-certificates \
curl \
gnupg \
lsb-releaseUna ves listo, procedemos a descarga y probar Docker
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt upgrade -y
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
sudo docker run hello-world
sudo systemctl enable docker
sudo systemctl restart dockerinstala Nvidia runtime:
sudo apt install nvidia-container-toolkit
sudo systemctl restart dockerverifica la instalación, si no devuelve nada no esta instalado:
which nvidia-container-runtime📌 Paso: Verificar runtimes en Docker Ejecuta:
docker run --rm --gpus all nvidia/cuda:12.3.2-base-ubuntu22.04 nvidia-smidebe darte el mismo output que cuando haces nvidia-smi en tu terminal, si no lo reconoce quiere decir que docker no tiene acceso a tu gpu.
Ahora vamos a clonar el repositorio oficial de boundless
git clone https://github.com/boundless-xyz/boundless
cd boundless
git checkout release-0.13.2Da permiso al script de instalacion automatico de Boundless:
chmod +x ./scripts/setup.shcorre el script:
sudo ./scripts/setup.shcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh. "$HOME/.cargo/env"rustup updatesudo apt update && sudo apt install -y cargocargo --versioncurl -L https://risczero.com/install | bashsource ~/.bashrcrzup --versionrzup install rustcargo install cargo-risczerorzup install cargo-risczerorustup updatecargo install --git https://github.com/risc0/risc0 bento-client --bin bento_clibento_cli --versioncargo install --locked boundless-cliboundless -hInstala just:
cargo install justVerificar entorno limpio. Correr en cd boundless:
Vamos al directorio de Boundless
cd boundlesslimpiamos el entorno
just broker down || true
just broker clean || truedará warn por no haber configurado .env aun probar bento: just bento si corre todo bien.
- corre una prueba:
cd
cd boundless
RUST_LOG=info bento_cli -c 32En este archivo pondremos las configuraciones para arrancar el servicio depende de en que red quieres minar:
nano .envPega esto en tu archivo ENV dependiendo de la red cambiaran los valores, por ejemplo tu private key siempre sera el mismo indiferentemente de la red, pero el RPC debera ser el especifico para cada red, tambien los valores de verifier, market y set verifier, son las direcciones oficiales de boundless que varian segun la red y aqui puedes ver las oficiales:
El order stream es donde buscara las ordenes y tambien varia segun la red.
PRIVATE_KEY=tu_clave_privada_sin_0x
RPC_URL=<tu rpc de sepolia>
export VERIFIER_ADDRESS=0x0b144e07a0826182b6b59788c34b32bfa86fb711
export BOUNDLESS_MARKET_ADDRESS=0x26759dbB201aFbA361Bec78E097Aa3942B0b4AB8
export SET_VERIFIER_ADDRESS=0x8C5a8b5cC272Fe2b74D18843CF9C3aCBc952a760
export ORDER_STREAM_URL="https://base-mainnet.beboundless.xyz"Luego estamos listos para arrancar y probar con:
just broker upVer logs:
docker compose logs -fLogs del broker:
docker compose logs -f brokerpara bajar el servicio usamos
just broker downAqui debemos ajustar el segment size y el kecck según recomendación oficial de boundless aqui:
Tambien podemos revisar los agentes de execution y los servicios y modificar sus recursos asignandoles mas memoria y cpus y podemos crear mas agentes de execution tambien, lo mismo con el agente de GPU, podemos darle mas recursos o crear mas agentes GPU si tenemos varias tarjetas graficas.
Para trabajar mejor te recomiendo tener 3 agentes de execution por cada gpu agent que tengas!
bajamos y borramos el servicio
just broker down
just broker cleancargamos variables del env
set -a
source .env
set +aCon este comando podemos ver los contenedores que estan ahora corriendo, y ver si estan funcionando bien, o si se estan reiniciando.
docker psda un warning por WARNING Memory overcommit must be enabled! debemos:
- Abre el archivo de configuración del sistema: sudo nano /etc/sysctl.conf
- Al final del archivo, agrega esta línea:
vm.overcommit_memory = 1 3. Guarda y cierra con CTRL + O, luego ENTER, y CTRL + X.
- Aplica el cambio sin reiniciar (opcional):
sudo sysctl -w vm.overcommit_memory=1
- (Recomendado) Reinicia tu máquina:
sudo reboot ✅ Esto eliminará ese warning la próxima vez que inicies Redis.
ahora debemos hacer stake de usdc para oder empezar a probar!
source .env
boundless account deposit-stake 30Esta parte es la mas importante y sera el corazon de tu estrategía que te permitira obtener la mayor cantidad de ordenes posibles, aqui cambiaras valores como precios minimos, tamano minimo y performance ideal de tu equipo, aqui esta varia segun tu equipo especifico y cada quien tendra configuraciones diferentes, sin embargo en el video tutorial tratare de explicarte las configuraciones que mas te pueden servir y porque!
En general trata de:
- no tomar ordenes muy grandes si no tiene un setup muy potente
- colocar un precio por ciclo economico para poder competir pero tampoco muy bajo que no sea rentable
- colocar el peak khz realista, no subirlo mucho si no puedes cumplirlo, inicia con un numero bajo y ve subiendo si ves que tu equipo al resolver pruebas alcanza mayor khz en el explorador
- En el batcher, fuerza as transacciones cuando ya tiene 1 sola prueba lista para no perder tiempo esperando mas pruebas en el batch.
- Utiliza concurrent proof en 2 y no mas amenos que tengas varios GPUs
- Activa concurrent preflights y ponlo en 2-3 y asegurate tener 3 exec agents almenos
- unete al programa de inbest!
La transaccion de lock in es la mas importante ya que es la que te permite bloquear la prueba y asegurarte que tu la resuelvas, por eso es indispensable, enviar esta transaccion lo antes posible y enviarla con un fee de prioridad que te petmita adelantarte al resto de mineros que compiten por bloquearla
La unica forma de optimizar aun mas es cambiando el codigo fuente de boundless para forzar un priority fee mas elevado y esto no lo incluyo en esta guia por que es algo mucho mas avanzado y perzonalizado! si eres esa persona mas avanzada, te invito a unirte al programa de inbest donde estamos modo degens haciendo todo esto!
¿Listo para minar ZK? 🚀
- dudas: @inbestprogram