Got back empty signature for vote

Long time listener, first time caller.
My new rig will only log these lines about voting. Any suggestions?

{“file”:“pseudonode.go”,“function”:“github.com/algorand/go-algorand/agreement.asyncPseudonode.makeProposals",“level”:“warning”,“line”:286,“msg”:"pseudonode.makeProposals: could not create vote: makeVote: got back empty signature for vote”,“time”:“2021-02-14T10:56:04.717013-06:00”}
{“file”:“pseudonode.go”,“function”:“github.com/algorand/go-algorand/agreement.asyncPseudonode.makeProposals",“level”:“warning”,“line”:286,“msg”:"pseudonode.makeProposals: could not create vote: makeVote: got back empty signature for vote”,“time”:“2021-02-14T11:11:26.580325-06:00”}

Welcome to the show :slight_smile: can you post some more details about your node? What OS are you running? What network are you connecting to? Can you run goal node status -d whereveryourdatadiris

When creating your participation key, what what the key dilution that you’ve used. I suspect it’s a false-positive warning when using a low key dilution values ( i.e. < 100 ).

  1. First time ever mining or contributing so I welcome any corrections or assistance.
  2. Trying inside docker & inside Ubuntu 20 (Ubuntu for this conversation)
  3. I think I was hoping for a better error handling / programmatic response of when the code says this, you did this wrong, try this?
  4. I have followed a consensus of steps from multiple websites because there does not seem to be one start to finish guide out there. From what I can tell I have a wallet, an account number, and a participating node. I have even read your account has to have a balance before you can change your status to online.
  5. The only topic I cannot currently sort out is: participation vs spending key. Seems to be a suggestion but not a requirement.
  6. Carpenter is now running on the Ubuntu node and it just keeps logging “ProposalAssembled” then RoundInterrupted" and I cannot find more information on that either.

goal node status
Last committed block: 5176208
Time since last block: 2.3s
Sync Time: 22.8s
Last consensus protocol: GitHub - algorandfoundation/specs at 4a9db6a25595c6fd097cf9cc137cc83027787eaa
Next consensus protocol: GitHub - algorandfoundation/specs at 4a9db6a25595c6fd097cf9cc137cc83027787eaa
Round for next consensus protocol: 5176209
Next consensus protocol supported: true
Last Catchpoint:
Genesis ID: mainnet-v1.0

Participation keys are only used for voting in consensus. Spending keys are used to sign spending transactions. This gives separation for security. You do not have to participate in consensus to earn rewards. If you have a balance of 1 or more algos in your account (online/or offline) you earn rewards. If you want to participate in consensus you have to generate participation keys. this process is described here:

BTW you node is still synching as well. Looks like you are almost half way there

I think I’m close. I found this online & I think this is the format with the right switches.

I just cannot sort out the spendingkeyfile, is that just a file with the account number or what?

algokey sign
-k spendingkeyfile #Private key filename
-t online.tx #Transaction input filename
-o online.tx.signed #Transaction output filename

A spending key file is the exported private key in a file. Algokey is a utility downloaded with the install much like goal. If your account is in KMD you can export it to a mnemonic using Algorand Developer Docs
Using algokey you can then create the keyfile like algokey import -m “mnemonic” -f filename

To complement @JasonW’s answer, you can also directly sign using your mnemonic as follows:

algokey sign -m "my mnemonic" -t online.tx -o online.tx.signed

If your spending key is in kmd (including if you’re using ledger), you may also use:

goal clerk sign -i online.tx -o online.tx.signed -w "the kmd wallet / Ledger"

(see Algorand Developer Portal)

1 Like

I am clearly missing a step or not doing something that is not listed in the RTFM link. I am really surprised I am having so much trouble with this.
When I run goal account list I see MY account number with a status of [offline].
When I run goal account changeonlinestatus referencing the account number above and the now signed online.tx.signed file I do not get a response, other than a prompt for my wallet password.
I will add I some how have 3 partkeys in that output, do I need to delete two of them to avoid confusion?
I am working from the assumption that goal account list should show my account as offline if I want to participate, is that correct?
And obviously thank your your patience.

Your account is initially offline.
To participate, you need to:

  1. Create a participation key. You can see it’s created properly using goal account listpartkeys. See Algorand Developer Docs
  2. Register your participation key using a changeonlinestatus transaction. If your account is listed in goal account list and the account key is on the computer (i.e., you can sign transaction from this account using goal), then you just need to run goal account changeonlinestatus --address=MYADDRESS --online=true. It will ask for your wallet password, sign and send the transaction.
    The process you followed is more complex and applies when you do not have the secret key on the computer. In that case, you need to first generate the online.tx transaction, then sign it, and finally send, in three different steps. See Algorand Developer Docs

The overview provides important details too.

Okay, NOW we are getting somewhere. Starting with my current account I tried to go online & got this weird response:
Couldn’t sign tx: HTTP 400 Bad Request: TransactionPool.Remember: transaction …tried to spend {1000}

Created a new account, new partkey, then tried to go online with it too & got the same message but a different transaction. Has anyone ever seen this before?

Do you have Algos on your account?
You can check using goal account list.
You must have at least 0.101 Algos to be able to send the transaction (0.001 Algo because of the fee, and 0.1 Algo because of the minimum balance).

Another possibility is that you now have enough Algos but your node is not yet fully synced and does not see these Algos. You can check if your node is fully sync by checking Sync Time from goal node status (it must be 0) and/or by comparing the Last committed block with the round number on https://algoexplorer.io

If this is not the issue, can you show us the full error (just remove the actual address/transaction ID if any) as well as the output of goal node status?

PS: You can write code and command output in triple blackquotes ```. This makes the formatting nicer.

The first account has had a balance of 7.8 for 3 days. That should be enough right?
image
The second account was brand new and empty.
But they both had the same error.

Oh, I see now, goal account list returns 0 microAlgos
You’re suggesting my system has not caught up with the transaction from 3 days ago.
When THAT account shows a balance, I can go online and begin to participate. I’m glad to hear the end is in site.

goal node status
Last committed block: 8693666
Time since last block: 9.1s
Sync Time: 26174.4s
Last consensus protocol: GitHub - algorandfoundation/specs at e5f565421d720c6f75cdd186f7098495caf9101f
Next consensus protocol: GitHub - algorandfoundation/specs at 3a83c4c743f8b17adfd73944b4319c25722a6782
Round for next consensus protocol: 8734690
Next consensus protocol supported: true
Last Catchpoint:
Genesis ID: mainnet-v1.0
Genesis hash: wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=

update
https://algoexplorer.io/ shows the latest block as:12148711

I’m at 8 mil so I have 4 mil transactions before I’m caught up. Now I understand what to actually watch for and can stop checking it. I was surprised to discover this system has downloaded over 105GB in the last week, is that expected?

I don’t have the exact number but 105GB is not surprising for me.
The Algorand blockchain produces 1 block every 4.5s and since Props started using Algorand there have been many transactions a day.

Right - if he’s syncing a full archival node then the current size is around 353GB (and block number is over 12M).

@pocketwatch If you run a non-archival node, then it only keeps the last 1000 blocks (about 6GB total on disk including logs, etc.) and you can use fast catchup. It can be synced in about 15-20 minutes. A full archival node isn’t needed for consensus participation.