How to register vor voting for fund2 using Pool Pledge

During the weekend I was struggling with the Catalyst fund2 voting process because

  • Most of my ADA is locked up in the pledge of my pool and I want to use it to vote
  • Being curious, I wanted to know how the process actually works and what is going on rather than just following step-by-step instructions

All this being highly experimental, super innovative and bleeding edge means that public documentation is close to non-existent. So I thought I’d share what I found out.

This is my understanding so far. Some of it is speculation. Please correct me where I got it wrong:

  • We are not voting on the Shelley mainnet, but on some other chain (Voltaire testnet?) based on the Jörmungandr code. I’ll call this the voting chain.
  • The mobile apps will submit transactions to that voting chain
  • Voting is done using a seperate keypair which is generated during the voter registration process
  • During voter registration, the Daedalus Catalyst wallet creates a new vote signing key and verification key and then submits a metadata transaction to the Shelley mainnet which associates the wallet’s staking verification key with the voter verification key
  • Daedalus Catalyst then creates a QR code which contains the voter signing key encrypted with the PIN
  • The mobile app reads the voter key and uses it to submit voting transactions to the voting chain once it is live
  • On December 15 a snapshot will be taken from the Shelley chain to determine the ADA balance associated with each registered staking key and, in turn, voting key.
  • The information about how much of ADA controlled by each voting key is encoded in the genesis block of the voting chain

How the actual voting is done I haven’t yet found out. I suppose it involves moving tokens on the voting chain. Is that documented anywhere? If so, where? If not, why not?

So, in order to use my pledge to vote I needed to do the following things:

  1. Generate a voting key pair
  2. Generate and submit a metadata transaction to associate my voting vkey with my staking vkey
  3. Create a QR code so my mobile phone can read the voting skey

For step 1 I needed to install the jcli tool from https://github.com/input-output-hk/jormungandr. This is documented in the README.

Generate the voting keypair:

jcli key generate --type ed25519extended >vote.skey
jcli key to-public < vote.skey > vote.pk

Step 2, the generation of the metadata transaction, is done using a tool @Dor_Garbash mentioned in the last townhall call. The payment skey/addr are used to pay for the transaction. The --time-to-live parameter can be obtained with cardano-cli query tip --mainnet and then adding a few slots. Every SPO has probably done this before.

# Get it
git clone https://github.com/input-output-hk/voter-registration-tool.git

# Build it
cd voter-registration-tool
nix-build default.nix -A haskellPackages.voter-registration.components.exes.voter-registration -o voter-registration

# Run it
voter-registration-tool/voter-registration/bin/voter-registration \
--payment-signing-key payment.skey \
--payment-address $(cat payment.addr) \
--vote-public-key vote.pk \
--stake-signing-key stake.skey \
--mainnet \
--time-to-live nnnnnnn \
--out-file tx.signed
cardano-cli transaction submit --tx-file tx.signed --mainnet

For step 3, the generation of the QR code, I needed a script that was shown during townhall 8 or 9.

# Get it
git clone https://github.com/input-output-hk/vit-kedqr

# Build it (see README)
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" main.go

# Run it
./main -input=vote.skey -pin=1234 -output=vote.png

Now if I did it right, I will be able to vote. If not, bad luck :man_shrugging:

And now for a bit of a rant.

While I’m still somewhat excited to be part of all this, I find the opacity of this whole process unacceptable. Setting up and running a stakepool is already at the limit. No hardware wallet? Having to puzzle together transactions by hand on the command line, UTXOs, change, fees, ttl and all? Give me a break. Cardano is supposed to be the most sophisticated, professionally run blockchain project on the planed and we have to wade in the mud like this?
Okay, so maybe it is the price to be in the avant-garde and who puts in the wrong change address and loses all their money will learn to be more careful next time.

Now we are also a DAO and want to decide on project budgets. Great. The first thing I’m asked to do is to submit a “registration transaction”. What exactly this is? No idea. Let’s click the link to find out. Last time I did this, an empty Google doc headlined “Registration transaction” came up. Not helpful at all. Why not simply a message saying “Please don’t click this link again”? At least that would indicate that, whoever did this, knows their classics.

Okay, suppose I ignore the uneasy feeling in my stomach and enter my spending password, still not knowing what this transaction will do. Next is a QR code which I’m supposed to read with my mobile app. What is in it? Does it contain my signing key? What can the app do with it? Is it safe to do this? I only know I need to take a screenshot of the code so it must be important.

At this point I had to say no, thanks, but no. I can’t do this without knowing what is going on, so down the rabbit hole and let’s find out how all of this works. I admit it wasn’t all that difficult but I’m still astonished that none of this seems to be publicly documented. How many people are working on the Catalyst project again? How are they all supposed to know what they are doing?

Finally I’m quite disappointed by the way the community reacts to all of this. I guess that many Catalyst participants are also SPOs and some of us have a lot of money locked in pledge, so I’m certainly not the only one for whom the “happy path” with Daedalus Catalyst won’t work. Yet the Telegram chat has almost nothing about it while everyone seems to be busy calculating voting rewards. Also nothing in the Forum. Am I looking in the wrong places?

6 Likes

If you don’t get any responses here, you might get better luck from the Project Catalyst Telegram Channel or you could attend the 12/14/20 voting registration workshop:

1 Like

Thanks for posting, by bringing issues up like this, the ensuing discussion hopefully will make the future iterations of Catalyst and it’s voting better :+1:

Hi @waldmops et al.,

Thank you for the detailed post. I admit I only just started looking at voting options on Catalyst. Albeit in less detail, I share some of the confusion outlined here.

A few weeks ago I downloaded the voting app. I cannot remember how I discovered it’s existence, then found it on the app store. This part was easy, if a bit mysterious. After that however, I have been puzzled by the whole ‘scan the voting Qr code’ thing. This in not in Daedalus mainnet, which daedalus must I get?

All the best,

A

1 Like

Thank you @RobJF,

Makes more sense now!

Cheers A

2 Likes

I’m facing a similar scenario! I downloaded the catalyst app and then to register I had to download a chrome extension for Yorio (as voting doesn’t exist on the mobile app yet). I get to the scan QR code part in the catalyst registration process to which I am left puzzled with the next steps (what QR and where is the QR to scan?)… surely this can be made simpler… Thank you in advance.

1 Like

just discovered this really useful guide: Voting registration process using Yoroi and also had to research how to open an extension in chrome ;).

1 Like

Thanks for your comment Chris1. Did you figure this out?
I also found the Catalyst App and installed on my phone. I already had the Yoroi extension installed with Chrome (Version 91.0.4472.114 as of June 29th), within the extension was a “Voting” tab… however when I go to the tab it says"Wallet type not supported"… which I think is so for me as I am using a hardware wallet to store my ADA… so no voting for me as yet - which is disappointing? Let me know if you discover anything else. Thanks for the guide :slight_smile:

Hi i just created my registration for fund6 and it seemed to work, but currently the ap is not ready to read the qurcode: Vote with pledge - Cardano catalyst

Thanks for your feedback :slight_smile: I apologize for the lack of documentation provided with the voting-tools repo. I have tried to improve the documentation recently:

Feel free to open an issue on the voting-tools repo if you have any suggestions for further improvement.