Registro

Registrar Stake Pool

En primer lugar, podemos ya probar a ejecutar nuestro stake pool con las claves y el certificado:

cardano-node run \
--topology testnet-topology.json \
--database-path ./db \
--socket-path ./db \
--host-addr 127.0.0.1 \
--port 3000 \
--config testnet-config.json \
--shelley-kes-key kes.vkey \
--shelley-vrf-key vrf.vkey \
--shelley-operational-certificate node.cert

Si bien la salida que obtendremos no ser谩 m谩s que un conjunto de mensajes no demasiado reveladores, s铆 que podremos comprobar que cuando se ejecutan el productor y alg煤n rel茅 simult谩neamente, realmente se est谩n comunicando entre s铆. Si queremos ver algo m谩s descriptivo de c贸mo est谩 funcionando nuestro nodo necesitaremos instalar alguna de las herramientas proporcionadas por GUILD Operators, concretamente, gLiveView.

  • Crear certificados

Crear el archivo de metadatos

blah, blah

Crear el certificado de registro

cardano-cli stake-pool registration-certificate \
    --cold-verification-key-file node.vkey \
    --vrf-verification-key-file vrf.vkey \
    --pool-pledge 1000000000 \
    --pool-cost 345000000 \
    --pool-margin 0.01 \
    --pool-reward-account-verification-key-file stake.vkey \
    --pool-owner-stake-verification-key-file stake.vkey \
    --testnet-magic $MAGIC_NUM \
    --single-host-pool-relay <rele.dominio.net> \
    --pool-relay-port 3000 \
    --metadata-url https://miweb.net/metadata \
    --metadata-hash <metadatahash> \
    --out-file pool-registration.cert

Aqu铆 hemos definido algunos par谩metros b谩sicos, como la cantidad que estamos dispuestos a comprometer en nuestro pool (1000A), el margen de ganancias (1%), el coste de operaci贸n (345A). Tambi茅n pondremos la IP p煤blica (o el nombre de dominio) y el puerto p煤blico al que conectarse. Si estamos detr谩s de un router NAT no olvidemos redirigir este puerto a nuestra IP privada.

Tambi茅n vemos que la direcci贸n de stake para recibir recompensas y para la delegaci贸n de los propietarios (que no es otra cosa que la delegaci贸n necesaria para cubrir el pledge), son la misma, si bien podr铆an ser direcciones diferentes. A este respecto, se帽alar que para proporcionar fondos para el pledge es necesario transferir los mismos a la direcci贸n payment.addr asociada a esta direcci贸n de stake. Para ello creamos el siguiente…

Certificado de delegaci贸n

cardano-cli stake-address delegation-certificate \
--stake-verification-key-file stake.vkey \
--cold-verification-key-file cold.vkey \
--out-file pool-delegation.cert

Esto crea un certificado que delega los fondos de la direcci贸n asociada a stake.vkey al pool asociado a la clave node.vkey

  • Registrar el Stake Pool

Este paso consiste en realizar la transacci贸n que enviar谩 nuestros certificados de registro y de delegaci贸n a la cadena de bloques. Se trata de una transacci贸n en la que, adem谩s de la tarifa ordinaria, deberemos incluir el dep贸sito de registro del pool. Sucesivos re-registros (para cambiar par谩metros como el pledge o el archivo de metadatos) requerir谩n una transacci贸n similar pero sin incluir este dep贸sito.

Borrador de la transacci贸n

cardano-cli transaction build-raw \
--tx-in <TxHash>#<TxIx> \
--tx-out $(cat payment.addr)+0 \
--invalid-hereafter 0 \
--fee 0 \
--out-file tx.draft \
--certificate-file pool-registration.cert \
--certificate-file pool-delegation.cert

Es similar al borrador de una transacci贸n est谩ndar salvo que en las 煤ltimas l铆neas especifican las opciones para incluir los certificados.

C谩lculo de la tarifa m铆nima

cardano-cli transaction calculate-min-fee \
--tx-body-file tx.draft \
--tx-in-count 1 \
--tx-out-count 1 \
--witness-count 3 \
--byron-witness-count 0 \
--mainnet \
--protocol-params-file protocol.json

Igual que siempre

C谩lculo del cambio

En este caso, para calcular el cambio debemos deducir, no s贸lo la tarifa, sino tambi茅n el dep贸sito de registro. Dicho dep贸sito lo obtenemos de los par谩metros del protocolo (esos que antes hemos obtenido y guardado convenientemente en un archivo llamado protocol.json). Como no recuerdo exactamente el nombre del par谩metro, que adem谩s va cambiando de una versi贸n a otra, tecleo…

cat protocol.json | grep Deposit
    "stakePoolDeposit": 500000000,
    "stakeAddressDeposit": 2000000,

En este caso, el valor que nos interesa es el primero: 500 A

Ya s贸lo nos queda calcular el cambio como <Balance de UTxO> – tarifa – 500

Construir transacci贸n preliminar

cardano-cli transaction build-raw \
--tx-in <TxHash>#<TxIx> \
--tx-out $(cat payment.addr)+<Cambio> \
--invalid-hereafter <ttl> \
--fee <tarifa> \
--out-file tx.raw \
--certificate-file pool-registration.cert \
--certificate-file pool-delegation.cert

Firmarla

cardano-cli transaction sign \
--tx-body-file tx.raw \
--signing-key-file payment.skey \
--signing-key-file stake.skey \
--signing-key-file cold.skey \
--mainnet \
--out-file tx.signed

Y enviarla

cardano-cli transaction submit \
--tx-file tx.signed \
--testnet-magic $MAGIC_NUM
Publicado por David en Cardano, 0 comentarios