decred / dcrwallet

A secure Decred wallet daemon written in Go (golang).
https://decred.org
ISC License
218 stars 154 forks source link

tries to vote on previous blocks that have passed as the chain is being downloaded #950

Open raedah opened 7 years ago

raedah commented 7 years ago

This issue is similiar in form to https://github.com/decred/dcrwallet/issues/595 except for wallet voting instead of ticket buying.

[ERR] WLLT: Failed to send vote for ticket hash xxx: -1: Rejected transaction xxx: transaction already exists

This message will be displayed repetitively for a voting wallet that was offline for some time and is resyncing the chain. The expected behaviour is to not try and send votes for blocks that have already been added to the chain and which are not at the head of the chain.

In the case of the error msg I posted, a backup secondary wallet did the vote, so it says 'transaction already exists' but even in the case of the vote being missed entirely, the result would still be the same. Whether missed or not, it serves no purpose to vote on blocks that are passed.

jrick commented 7 years ago

I'm a little more worried about trying to fix this than the same issue with the ticket buyer. If the "are we up to date" estimation falsely assumes we aren't up to date when we are, that would result in a missed vote.

Unfortunately I think the best thing that can be done until spv+multipeer is implemented is to hold off on trying to solve this and just wait for dcrd to sync before starting the wallet.

raedah commented 7 years ago

I agree, this one could have repercussions if not done correctly.