Direcciones de payment y stake

Generamos las direcciones para solventar los fees de nuestras transacciones, delegar nuestro pledge y recibir las recompensas. Necesitaremos 3 ADA para pagar el depósito y fees.

Este procedimiento solo se realiza para el nodo productor de bloques.

Generar payment y stake key pairs

La payment.addr es la dirección desde la cual recibiremos y enviaremos nuestros ADA, vendría a ser el equivalente a una billetera. Para crear una el primer paso es generar una Verification (.vkey) y una Signing key (.skey). La primera te sirve para generar la dirección y la segunda te permite firmar transacciones.

cd ~/cardano-node

cardano-cli address key-gen \
	--verification-key-file payment.vkey \
	--signing-key-file payment.skey

La stake.addr es la dirección donde recibiremos nuestras recompensas. Como con lapayment.addr vamos a necesitar primero generar sus Verification y Signing keys.

cardano-cli stake-address key-gen \
	--verification-key-file stake.vkey \
	--signing-key-file stake.skey

Generar payment.add y stake.addr

Ahora generamos las direcciones utilizando los keys que acabamos de crear. Para la testnet es necesario reemplazar --mainnet por --testnet-magic xxxxxxxxxx.

Para generar la stake.addr podemos utilizar el siguiente comando:

cardano-cli stake-address build \
	--stake-verification-key-file stake.vkey \
	--out-file stake.addr \
	--mainnet

Y ahora generamos nuestro payment.addr así:

Registrar stake.addr

El ultimo paso en esta sección es registrar nuestro stake.addr en la blockchain, el procedimiento es el siguiente:

Certificado de registro

Lo primero que haremos será generar un certificado de registro.

protocol.json

Luego necesitamos consultar los parámetros del protocolo y los escribiremos al archivo out/protocol.json con el siguiente comando, los valores de este archivo los vamos a necesitar para varias partes de nuestro proceso.

Consultar balance

Para los siguientes pasos ya necesitamos tener al menos 3 ADA para cubrir el fee de las transacciones y el depósito por nuestra stake.addr. Ahora necesitamos consultar nuestros saldos y UTXO.

Con lo cual obtenemos un resultado similar al siguiente:

Generar borrador

Con estos datos podemos armar nuestra transacción, el primer paso para esto es generar un borrador de transacción, que nos servirá para calcular los fees de la misma. En el ejemplo presente tenemos 2 TXHash, por este motivo vamos a sumar los montos de ambos en Lovelace para los cálculos.

El formato correcto para ingresar los --tx-in es TxHash#TxIx. En el caso de los --tx-out se puede utilizar una dirección común addr1, pero lo mas probable es que usemos la que tenemos almacenada en nuestro payment.addr. Se puede dejar ttl y fee en 0.

Calcular fees, saldos y ttl

Ahora calculamos los fees, atención con --tx-in-count y --tx-out-count, debemos poner la cantidad de direcciones/UTXO que utilizamos:

El siguiente valor que nos interesa es keyDeposit, podemos extraerlo con de nuestro archivo con:

Este valor esta expresado en Lovelaces, recordamos que 1 ADA = 1,000,000 Lovelace. Por defecto en la mainnet de Cardano es de 2000000 (2 ADA). Nuestra formula es: Saldos_UTXO - fee - keyDeposit. En nuestro ejemplo estamos sumando primero los dos UTXO.

Luego consultamos el tip:

Armamos nuestra transacción con todos los datos obtenidos. Para el --ttl (Time To Live o el slot hasta el cual puede ser procesada nuestra transacción), un valor puede ser tip + 2000, de esta manera contamos con un buen margen de tiempo para preparar nuestras transacciones. Para el --tx-out el formato correcto es dirección+saldo, donde "saldo" es el restante después de pagar el deposito y los fees.

Generar transacción

Utilizamos los valores obtenidos anteriormente para generar nuestra transacción

Firmar transacción

Firmamos nuestra transacción:

Someter transacción

Y sometemos nuestro archivo firmado a la blockchain desde un nodo online.

Última actualización

¿Te fue útil?