# ArtPiece.totalVotesSupply and ArtPiece.quorumVotes are incorrectly calculated due to inclusion of the inaccessible voting powers of the NFT that is being auctioned at the moment when an art piece is created

CultureIndex.createPiece includes the auctioned ERC721's voting power in totalVotesSupply, inflating quorumVotes and making quorum unreachable for new art pieces.

- Payout: Contest reward
- Severity: high
- Program: Collective
- Credited: osmanozdemir1
- Disclosed: 2024-02-08
- Write-up quality: 6/10
- Original: https://github.com/code-423n4/2023-12-revolutionprotocol-findings/issues/168
- Library page: https://bugbountylibrary.com/r/c4%3A2023-12-revolutionprotocol%3AH-02
- Tags: domain:web3 impact:dos impact:integrity kind:contest platform:code4rena sev:high tech:solidity technique:source-review vuln:business-logic vuln:governance

**Target:** CultureIndex.createPiece quorum calculation
**Root cause:** createPiece computes totalVotesSupply from erc721VotingToken.totalSupply(), which includes the VerbsToken held by AuctionHouse and thus inaccessible to voters for the new piece; quorumVotes is derived from this inflated supply.
**Steps:**
1. Deploy protocol with erc20VotingToken supply 1000, erc721VotingTokenWeight 100, quorumVotesBPS 5000.
2. Mint first VerbsToken and transfer to AuctionHouse; erc721VotingToken.totalSupply() becomes 1.
3. Call `CultureIndex.createPiece(...)` while auction ongoing.
4. Observe newPiece.totalVotesSupply = 1000 + 1*100 = 1100 and quorumVotes = 550, while accessible vote supply is only 1000.
**How found:** Code reading of createPiece: noticed erc721VotingToken.totalSupply() includes the token sitting in AuctionHouse, and that voters' power is snapshotted at creation block, so that token can never vote on the new piece.
**Exploitation:** No direct theft; the flaw makes quorum harder to reach for pieces created during an auction, potentially blocking them from auction and causing unfair quorum differences between pieces.
**Insight:** When a protocol snapshots total supply for quorum/governance, check whether any of that supply is escrowed in a contract (auction house, staking, timelock) and thus unable to vote at the snapshot block; subtract escrowed balances.
