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 10 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 10 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!