# Registro

Distingue servicio, registro y publicación, y habilita tu vendedor en descubrimiento.

Source: https://docs.gyblos.com/es/sellers/register-publish

Necesitas un vendedor en ejecución, el código sin usar de tu invitación y la misma identidad persistente
creada al instalar. [Instala primero](/es/sellers/beta-guide) si el nodo aún no está listo.

## Registra

Antes de ejecutar el comando, verifica el `discovery.url` previsto en `gyblos.toml` y cualquier
`GYBLOS_DISCOVERY_URL` que prevalezca en el entorno del contenedor. El valor predeterminado es
`https://discovery.gyblos.com/v1`. Revisa un `seller.env` personalizado solo en un editor privado; no lo muestres.
Introduce la invitación solo si confías en el destino configurado.

```sh
cd ~/gyblos-seller
docker compose exec seller gyblos seller register
```

La pregunta **muestra lo que escribes**: no compartas ni grabes la pantalla y no pegues el código en un comando.
Tras aceptar la invitación, el comando muestra el origen del índice y envía inmediatamente la invitación
y el NodeId público. Esa línea es informativa; no hay una pausa de confirmación.

`Registered: this seller may now publish.` significa que descubrimiento aceptó el registro.
`Already registered` también es correcto para la misma invitación e identidad. El registro no modifica
`gyblos.toml` ni publica la oferta.

### Inscripción en Solana

Si descubrimiento indica que falta la inscripción, el comando interactivo puede registrar tu cartera
owner existente y NodeId en **Solana devnet**, y repetir descubrimiento automáticamente. La dirección owner
que muestra doctor necesita suficiente **SOL de devnet** antes de continuar: unos 0,01 SOL, así que envíale
unos 0,02 desde [el faucet de devnet](https://faucet.solana.com). Si le falta, el comando indica la dirección
owner y cuánto SOL más necesita; en una terminal espera, revisando el saldo cada 15 segundos, y continúa
cuando llega el SOL (Ctrl+C lo detiene; ejecútalo de nuevo más tarde). El coste de registro es independiente de la inferencia gratuita; no uses
fondos ni llaves de mainnet.

El comando muestra `Pre-simulation funding estimate:` antes de comprobar fondos y simular. Después
muestra `Estimated registration cost:` y pregunta `Sign and submit this registration? (yes/no):`.
Solo **`yes`** (o **`y`**) aprueba un nuevo intento firmado. La estimación no es un precio fijo: los programas actualizables
pueden cambiar el coste real. Si el coste actualizado aumenta, el comando se detiene para que lo revises de nuevo.
Cualquier otra respuesta lo rechaza: `REGISTER_CANCELLED` indica que no se firmó ni envió nada; vuelve a ejecutar el comando.

Sin terminal interactiva, `DISCOVERY_IDENTITY_NOT_REGISTERED` indica repetir de forma interactiva.
`GYBLOS_INVITE` proporciona la invitación, no consentimiento para un nuevo envío en cadena. Si tu imagen beta
instalada no ofrece este flujo, envía al equipo el identificador de imagen y tu NodeId/owner públicos.

> **Conserva un intento de registro incierto**
>
>
> El vendedor guarda estado privado de registro. Repetir el comando comprueba
> ese intento y puede mostrar `Resending the previously approved registration.`
> antes de reenviar los mismos bytes firmados sin otra pregunta de aprobación.
> Un resultado incierto no demuestra fallo ni comisión cero. Conserva el
> volumen, archivo de registro y bloqueo. Un blockhash demostradamente vencido y
> cuentas del asset ausentes a nivel finalized pueden permitir un reemplazo con
> el mismo asset y consentimiento nuevo; el vencimiento por sí solo no demuestra
> que el intento anterior nunca llegó ni pagó comisión. El estado parcial o
> inconcluso necesita ayuda de Gyblos. Nunca borres estado ni cambies de
> directorio de datos para forzar otro intento.

La cartera inscrita en 8004 es owner. Un rol pagado existente puede tener otro payout y mostrar un aviso;
eso no cambia owner. Los roles pagados nuevos usan owner como payout, fuera de este tutorial gratuito.

`DISCOVERY_INVITE_INVALID` indica código incorrecto, usado o vencido. `DISCOVERY_RATE_LIMITED` requiere
esperar antes de repetir; `DISCOVERY_UNAVAILABLE` indica que el índice no pudo completar la solicitud. Consulta
[solución de problemas](/es/help/troubleshooting) para esos errores e identidades retiradas.

## Publicación

Con el instalador, activa la publicación desde la carpeta donde guardaste `install.sh`:

```sh
sh install.sh publish
```

Pone `publish = true` en `~/gyblos-seller/gyblos.toml`, valida el archivo y recrea el vendedor; si la
validación falla o lo interrumpes, deja el archivo como estaba. Si instalaste en otra carpeta, antepone el mismo
`GYBLOS_DIR=…` que usaste al instalar. Un `install.sh` anterior no conoce `publish`: descárgalo de nuevo antes. `gyblos seller status` también indica este paso mientras la
publicación está desactivada.

Para hacerlo a mano, edita la tabla `[discovery]` existente en `~/gyblos-seller/gyblos.toml`; no agregues una
tabla duplicada:

```toml
[discovery]
publish = true
```

Valida el archivo montado y recrea el vendedor para aplicarlo:

```sh
cd ~/gyblos-seller
docker compose run --rm seller gyblos config validate --config /config/gyblos.toml && docker compose up -d --force-recreate seller
```

El primer comando debe mostrar `OK`. La validación revisa sintaxis y resolución del entorno; el inicio
comprueba además si el vendedor puede servir la oferta. Si falla la validación, corrige la clave antes de reiniciar.

### Comprueba la publicación

Cuando el vendedor arranque, consulta descubrimiento:

```sh
cd ~/gyblos-seller
docker compose exec seller gyblos seller status --online
```

| Observación                     | Qué demuestra                                              |
| ------------------------------- | ---------------------------------------------------------- |
| `RUNNING`                       | El servicio vendedor está en ejecución                     |
| Registro correcto               | Esta identidad puede publicar en ese índice                |
| `listed in the index`           | La consulta encontró este NodeId para el modelo solicitado |
| `not found in the index`        | La consulta completa no encontró este NodeId               |
| `not in the first 2000 sellers` | Se agotó el límite de búsqueda; no demuestra ausencia      |
| `index unreachable`             | Falló la consulta; el estado de publicación es desconocido |

Estar publicado no equivale a probar inferencia externa. Solo se publican ofertas listas. El índice recibe
identidad pública, modelo y metadatos de la oferta; los mensajes no forman parte de esa publicación.

### Retira la oferta

Ejecuta `sh install.sh unpublish`, o pon `publish = false` en la misma tabla y recrea el vendedor. Detenerlo también retira su presencia en
un plazo de dos minutos. No borres las llaves para salir de descubrimiento. La publicación puede tardar en vencer.

**Siguiente:** [Ajusta modelos y ofertas](/es/sellers/models-offers) u [opera tu vendedor](/es/sellers/operate).
