it is called only by _adjustVotingPower()
and it makes done checks for address()
File: main/contracts/party/PartyGovernance.sol
if (newDelegate == address(0) || oldDelegate == address(0)) {
https://github.com/PartyDAO/party-contracts-c4/blob/main/contracts/party/PartyGovernance.sol#L931
https://github.com/PartyDAO/party-contracts-c4/blob/main/contracts/crowdfund/Crowdfund.sol#L464
it better to update the state after the check is CrowdfundLifecycle.Active
or not
File: /main/contracts/crowdfund/Crowdfund.sol
totalContributions += amount;
https://github.com/PartyDAO/party-contracts-c4/blob/main/contracts/crowdfund/Crowdfund.sol#L411
Is it better to invoke finalize()
here? there is no need to wait for intel someone to invoke it directly
File: /main/contracts/crowdfund/AuctionCrowdfund.sol
if (market.isFinalized(auctionId_)) {
revert AuctionFinalizedError(auctionId_);
}
// Only bid if we are not already the highest bidder.
if (market.getCurrentHighestBidder(auctionId_) == address(this)) {
revert AlreadyHighestBidderError();
}
// Get the minimum necessary bid to be the highest bidder.
uint96 bidAmount = market.getMinimumBid(auctionId_).safeCastUint256ToUint96();
// Make sure the bid is less than the maximum bid.
if (bidAmount > maximumBid) {
revert ExceedsMaximumBidError(bidAmount, maximumBid);
}
https://github.com/PartyDAO/party-contracts-c4/blob/main/contracts/crowdfund/AuctionCrowdfund.sol#L162-L164 https://github.com/PartyDAO/party-contracts-c4/blob/main/contracts/crowdfund/AuctionCrowdfund.sol#L172-L174
after this check you need to check if the current bid is curntBid > maximumBid
if there is no bidder yet you need to check The minimum price for the first bid, starting the auction reservePrice > maximumBid
File: /main/contracts/crowdfund/AuctionCrowdfund.sol
if (!market.auctionIdMatchesToken(
opts.auctionId,
address(opts.nftContract),
opts.nftTokenId))
{
revert InvalidAuctionIdError();
}