🇪🇸 Instructivo paso a paso para emitir tu voto en la ITN

:es: Traducción al español de How to cast your vote on the ITN por Rodrigo [RODRI].

Publicado en el HelpDesk de IOHK por @CarlosLopezDeLara, el 25 de Junio de 2020.


ERPBGPDWoAEJb0G

El siguiente procedimiento documenta los pasos necesarios para emitir un voto sobre la propuesta de extensión de la ITN:

  • Inicio de la votación: 195.0 (2020-06-25 19:13:37 +0000 UTC)
  • Fin de la votación: 198.0 (2020-06-28 19:13:37 +0000 UTC)
  • Fin del proceso: 199.0 (2020-06-29 19:13:37 +0000 UTC)

Breve comentario inicial

  • Si bien la guía parece larga y con muchos comandos, la realidad es que casi todos (salvo los incisos 2.2 y el 4.2) son para copiar y pegar.
  • En cada comando que lo requiera, deberás reemplazar las “xxxx” del puerto por el puerto rest de tu nodo.

Prerequisitos

Se necesita tener:

  • jormungandr 0.9.x
  • jcli 0.9.x

y los siguientes datos:

  • Información de la blockchain.
  • Llave privada de una cuenta.
  • Llave pública.
  • Dirección de la cuenta.
  • ID del plan de votación, índice y opciones.

Instructivo

1. Procedimiento para generar el voto

1.1. Revisamos la información de la blockchain

./jcli rest v0 settings get --host http://127.0.0.1:xxxx/api

---
block0Hash: 8e4d2a343f3dcf9330ad9035b3e8d168e6728904262f2c434a4f8f934ec7b676
...
fees:
 certificate: 10000
 coefficient: 100000
 constant: 200000
...

1.2. Buscamos la llave privada

Alojamos la llave privada de la cuenta que has usado para crear tu stake pool (owner.prv) en el servidor.

1.3. Generamos la llave pública

./jcli key to-public --input owner.prv > owner.pub

1.4. Generamos la dirección

./jcli address account --testing $(cat owner.pub) --prefix addr > owner.addr

2. Procedimiento para emitir el voto

Las siguientes instrucciones asumen que tienes tus llaves y archivos de direcciones con los nombres: owner.prv, owner.pub y owner.addr. Si tus archivos tienen otros nombres, por favor reemplazalos por los indicados.

2.1 Obtenemos el value y el counter

./jcli rest v0 account get $(cat owner.addr) -h http://127.0.0.1:xxxx/api

Value: Se necesita para asegurarnos de que tenemos suficientes fondos.
Counter: Se usará durante la preparación de la transacción de la votación.

2.2. Creamos el voto

./jcli certificate new vote-cast {VOTE_PLAN_ID} {INDEX} {CHOICE} --public --output vote_cast.certificate

VOTE_PLAN_ID = d5bd73ca1b2cb59c44e9ca2e4aa3e4bc1a1aba2862fce19a9516e5041abfe92f
INDEX = 0
CHOICE => 0 = Voto en blanco | 1 = Voto positivo | 2 = Voto negativo

3. Procedimiento para preparar la transacción

3.1. Creamos una transacción vacía

./jcli transaction new --staging vote_cast.staging

3.2. Agregamos el input de la cuenta

./jcli transaction add-account $(cat owner.addr) 310000 --staging vote_cast.staging

3.3. Agregamos el certificado del voto a la transacción

./jcli transaction add-certificate $(cat vote_cast.certificate) --staging vote_cast.staging

3.4. Finalizamos la transacción

./jcli transaction finalize --fee-certificate 10000 --fee-coefficient 100000 --fee-constant 200000 --fee-vote-cast 10000 --staging vote_cast.staging

4. Procedimiento para incorporar el witness

4.1. Obtenemos el hash de la transacción

./jcli transaction data-for-witness --staging vote_cast.staging > vote_cast.witness_data

4.2. Creamos el witness (vote_cast.witness)

./jcli transaction make-witness --genesis-block-hash 8e4d2a343f3dcf9330ad9035b3e8d168e6728904262f2c434a4f8f934ec7b676 --type account --account-spending-counter {xx} $(cat vote_cast.witness_data) vote_cast.witness owner.prv

Asegúrate de usar el counter de la dirección de tu cuenta.

4.3. Agregamos el witness a la transacción

./jcli transaction add-witness --staging vote_cast.staging vote_cast.witness

5. Procedimiento para registrar el voto

5.1. Sellamos la transacción

./jcli transaction seal --staging vote_cast.staging

5.2. Revisamos los detalles de la transacción

./jcli transaction info --fee-certificate 10000 --fee-coefficient 100000 --fee-constant 200000 --fee-vote-cast 10000 --staging vote_cast.staging

5.3. Registramos la transacción en la blockchain

./jcli transaction to-message --staging vote_cast.staging > vote_cast.fragment

./jcli rest v0 message post --host http://127.0.0.1:xxxx/api --file vote_cast.fragment

Aclaraciones finales

  • Este procedimiento se puede repetir muchas veces.
  • Cada procedimiento tendrá un costo de transacción.
  • Contará como voto definitivo el último voto realizado.
2 Likes