Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: high
Valid

In veRAACToken Proposal Snapshot isnt set

Summary

the proposalPowerSnapshots mapping isn't initialized when a proposal is created. The getVotingPowerForProposal function
relies on this snapshot to determine voting power at the proposal's creation time. Without setting this snapshot,
every proposal would have a snapshot block of zero, causing the function to revert and making it impossible to
vote on proposals. This halts governance entirely

Vulnerability Details

// Never set in the contract
mapping(uint256 => uint256) public proposalPowerSnapshots;
function getVotingPowerForProposal(...) external view returns (...) {
uint256 snapshotBlock = proposalPowerSnapshots[proposalId]; // Always 0
...
}

The contract lacks logic to set proposalPowerSnapshots when a proposal is created.
Example: Governance proposals are created, but proposalPowerSnapshots[proposalId] remains 0

Impact

All proposals revert due to invalid snapshots.

Governance is paralyzed; no proposals can pass or execute.

Tools Used

manual review

Recommendations

set proposalPowerSnapshots for all proposals

Updates

Lead Judging Commences

inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Governance.castVote uses current voting power instead of proposal creation snapshot, enabling vote manipulation through token transfers and potential double-voting

inallhonesty Lead Judge 7 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Governance.castVote uses current voting power instead of proposal creation snapshot, enabling vote manipulation through token transfers and potential double-voting

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!