Wrong validation in `Goldigovernor.cancel()`
In `Goldigovernor.cancel()`, the proposer should have fewer votes than `proposalThreshold` to cancel his proposal.\\n```\\n  function cancel(uint256 proposalId) external {\\n    if(_getProposalState(proposalId) == ProposalState.Executed) revert InvalidProposalState();\\n    Proposal storage proposal = proposals[proposalId];\\n    if(msg.sender != proposal.proposer) revert NotProposer();\\n    if(GovLocks(govlocks).getPriorVotes(proposal.proposer, block.number - 1) > proposalThreshold) revert AboveThreshold(); //@audit incorrect\\n    proposal.cancelled = true;\\n    uint256 targetsLength = proposal.targets.length;\\n    for (uint256 i = 0; i < targetsLength; i++) {\\n      Timelock(timelock).cancelTransaction(proposal.targets[i], proposal.eta, proposal.values[i], proposal.calldatas[i], proposal.signatures[i]);\\n    }\\n    emit ProposalCanceled(proposalId);\\n  }\\n```\\n
It should be modified like this.\\n```\\nif(msg.sender != proposal.proposer && GovLocks(govlocks).getPriorVotes(proposal.proposer, block.number - 1) > proposalThreshold) revert Error;\\n```\\n
A proposer can't cancel his proposal unless he decreases his voting power.
```\\n  function cancel(uint256 proposalId) external {\\n    if(_getProposalState(proposalId) == ProposalState.Executed) revert InvalidProposalState();\\n    Proposal storage proposal = proposals[proposalId];\\n    if(msg.sender != proposal.proposer) revert NotProposer();\\n    if(GovLocks(govlocks).getPriorVotes(proposal.proposer, block.number - 1) > proposalThreshold) revert AboveThreshold(); //@audit incorrect\\n    proposal.cancelled = true;\\n    uint256 targetsLength = proposal.targets.length;\\n    for (uint256 i = 0; i < targetsLength; i++) {\\n      Timelock(timelock).cancelTransaction(proposal.targets[i], proposal.eta, proposal.values[i], proposal.calldatas[i], proposal.signatures[i]);\\n    }\\n    emit ProposalCanceled(proposalId);\\n  }\\n```\\n