On chain voting key differ from participation voting key for round

not a duplicate of the other threads w/ similar titles. the first one “resolved on its own” and the second was related to the dev not sending the signed tx. neither of these apply to my situation (new users limit of 2 links per post - cant link them).

this is the error im receiving:

tail -n1 $ALGORAND_DATA/node.log
{"file":"node.go","function":"github.com/algorand/go-algorand/node.
(*AlgorandFullNode).VotingKeys","level":"warning","line":1323,"msg":"node.VotingKeys: 
Account <address> not participating on round 18330733: 
on chain voting key differ from participation voting key for round 18330413",
"name":"","time":"2021-12-30T02:23:12.280090-06:00"}

running an archival non-relay node on 3.2.2.stable that is fully synced:

goal -v
12885032962
3.2.2.stable [rel/stable] (commit #97e80680)
go-algorand is licensed with AGPLv3.0
source code available at https://github.com/algorand/go-algorand

the account i am using was created in the mobile algorand wallet. i used the mnemonic to sign the online tx. the account is valid and has 75A in it.

issue summary

i have followed the instructions on algorand dev docs with the same issue. on discord someone suggested following the purestake guide which also led to the same result. when trying the purestake instructions i wiped the slate clean by deleting the partkey, txn files and part sqlite files so there was no carryover.

deleted (all in $ALGORAND_DATA/):

  • *.txn*
  • mainnet-v1.0/
    • *.partkey
    • part*

then restarted the node

below are the exact steps that i took the second time around. sorry for the verbosity. not meant to patronize. i was hoping it would work and these steps could help someone else:

**run all commands as algorand user in $ALGORAND_DATA dir
sudo -E -u algorand
-E carry over current env vars
-u

generate partkey
-a

account_address='<address>'; current_round=$(goal node status | head -n1 | cut -d' ' -f4); round_spread=3000000; sudo -E -u algorand goal account addpartkey -a $account_address --roundFirstValid=$current_round --roundLastValid=$(($current_round + $round_spread))

confirm
replace mainnet-v1.0 with network if other

sudo ls $ALGORAND_DATA/mainnet-v1.0 | grep -e '.partkey'

take account online (generate online tx, unsigned)
run from algorand data dir
-a
-o (online)
-t

cd $ALGORAND_DATA; account_address='<address>'; sudo -E -u algorand goal account changeonlinestatus -a $account_address -o -t online.tx

sign the tx
use read -s to accept mnemonic silently (no history)

cd $ALGORAND_DATA; read -s mnemonic; sudo -E -u algorand algokey sign -t online.tx -o online.tx.signed -m "$mnemonic"

confirm signed tx

ls $ALGORAND_DATA | grep 'signed'

send signed tx to network

cd $ALGORAND_DATA; sudo -E -u algorand goal clerk rawsend -f online.tx.signed

check logs

tail -n1 $ALGORAND_DATA/node.log
{"file":"node.go","function":"github.com/algorand/go-algorand/node.(*AlgorandFullNode).VotingKeys","level":"warning","line":1323,"msg":"node.VotingKeys: Account <address> not participating on round 18330733: on chain voting key differ from participation voting key for round 18330413","name":"","time":"2021-12-30T02:23:12.280090-06:00"}
sudo goal clerk inspect online.tx.signed
online.tx.signed[0]
{
  "sig": "UvVQADd1CbEqqCO8ecgp6V2QfqORV9fRyZBq1yRStHEX8elSrorxVtWomxok5QTxN0kTEFrPj+jO9sAQfRBMAQ==",
  "txn": {
    "fee": 1000,
    "fv": 18330295,
    "gh": "wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8=",
    "lv": 18331295,
    "selkey": "AAgy0SIUoG7sY29s08LFa9i9V/CFfVZRr73guRS96Kk=",
    "snd": "<address>",
    "type": "keyreg",
    "votefst": 18330173,
    "votekd": 10000,
    "votekey": "tB1O1v40AjJX8TXAZZoWBqw/nBJk+cUMJI1QtDMxYeg=",
    "votelst": 21330173
  }
}