# Retirar un pool

{% hint style="danger" %}
Es muy recomendado que toda operación que implique acceso a las *cold keys*, *payment.addr* o *stake.addr* se realicen en una maquina sin acceso a internet a fin de minimizar posibilidades de exponer info sensitiva de nuestro pool y/o fondos a terceros mal intencionados. Luego se copian los archivos firmados al BP o un relay online y desde ahí se les agrega a la blockchain.
{% endhint %}

Para esto necesitamos crear un certificado de des-registro y someter la transacción. El retiro del pool se hará al final del epoch que indiquemos en nuestro certificado. El mismo debe ser un epoch mayor al actual y menor que `eMax`, cuyo valor podemos consultar en el `protocol.json`.

```
cd ~/cardano-node
cardano-cli query protocol-parameters \
  --mainnet \
  --out-file out/protocol.json

cat out/protocol.json | jq .eMax
```

Necesitamos consultar también el epoch actual, una forma simple y rápida es consultar las métricas de cardano-node.

```
curl -s http://127.0.0.1:12798/metrics | grep epoch
```

Para este ejemplo tenemos que `eMax` es igual a 18 y el epoch actual es 200, es decir que nuestro epoch para retirar el pool debe estar comprendido entre 201 y 218.

## Certificado de des-registro

Generamos un certificado indicando el epoch en que retiraremos el pool

```
cardano-cli stake-pool deregistration-certificate \
  --cold-verification-key-file pool-keys/cold.vkey \
  --epoch 210 \
  --out-file out/pool.deregistration
```

### Borrador de transacción

Consultamos nuestros UTXO y tip. Luego generamos nuestro borrador.

```
cardano-cli query utxo \
	--address $(cat payment.addr) \
	--mainnet
	
cardano-cli query tip --mainnet | jq .slotNo
	
cardano-cli transaction build-raw \
  --tx-in 4fec1c3bcd8752befae60ca69f....28cb28319cba44115281f925add#0 \
  --tx-out $(cat payment.addr)+0 \
  --ttl 0 \
  --fee 0 \
  --out-file tmp/tx.draft \
  --certificate-file out/pool.deregistration
```

### Cálculo de saldo, fees y ttl

Aplicamos la fórmula `Saldo_UTXO - fee`. Para el `--ttl` podemos usar un valor seguro como `tip + 2000`.

```
cardano-cli transaction calculate-min-fee \
  --tx-body-file tmp/tx.draft \
  --tx-in-count 1 \
  --tx-out-count 1 \
  --witness-count 1 \
  --byron-witness-count 0 \
  --mainnet \
  --protocol-params-file out/protocol.json
  
expr 1000000 - 173567
```

### Generar transacción

Ahora si generamos nuestra transacción con los valores obtenidos, la firmamos y sometemos a la blockchain

```
cardano-cli transaction build-raw \
  --tx-in 4fec1c3bcd8752befae60ca69f6042......8319cba44115281f925add#0 \
  --tx-out $(cat payment.addr)+826433\
  --ttl 5027980 \
  --fee 826433 \
  --out-file tmp/tx.raw \
  --certificate-file out/pool.deregistration

cardano-cli transaction sign \
  --tx-body-file tmp/tx.raw \
  --signing-key-file payment.skey \
  --signing-key-file pool-keys/cold.skey \
  --mainnet \
  --out-file tmp/tx.signed

cardano-cli transaction submit \
  --tx-file tmp/tx.signed \
  --mainnet
```

{% hint style="info" %}
Se debe tener en cuenta ademas que luego de retirar el pool se deben esperar 2 epochs para recibir el depósito de 500 ADA en nuestro `stake.addr`.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://es-kb.topopool.com/mantenimiento-del-pool/retirar-pool.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
