馃嚜馃嚫 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.


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