Propose, vote, unvote, resign, and withdraw on the XDC validator contract
Uploads KYC if needed, then calls propose() to register a masternode candidate.
Stake XDC on an active candidate via vote().
Remove stake from a candidate via unvote(). Funds become withdrawable after voterWithdrawDelay blocks. Leave amount blank to unvote the full stake.
Owner-only. Calls resign(); stake becomes withdrawable after candidateWithdrawDelay blocks.
Claim stake scheduled after resign or unvote. Loads pending withdrawals for the wallet.
Read-only views: candidateCount, getOwnerCount, maxValidatorNumber, owners, ownerToCandidate, getCandidates, getVoters.