how i can remove vote power of user , after make vote in one proposal .
You could keep a mapping of users that voted on a proposal and if they try to vote again require their address to not be in said mapping, something like this:
mapping (uint => mapping (address => bool)) proposalVoters; //and then have this on the castVote function require(proposalVoters[proposalId][address] == false)
Thanks , i am using governance for now , when user voted for a proposal , i used _delegate(_userAddress, address(0)); to burn vote power of user . so user can't vote for another proposal and use need to again buy ERC20Votes token and again make _delegate and then user can vote .
is there more optimized way to do undelegated for user ?
is there any way to create vote power to user without increase ERC20Votes balance for user ?
For OZ implementation it uses the balance as the voting power, why would you need the voting power to be defined by something else? Do you have an idea in mind?