https://github.com/code-423n4/2023-10-party/blob/b23c65d62a20921c709582b0b76b387f2bb9ebb5/contracts/crowdfund/InitialETHCrowdfund.sol#L302
https://github.com/code-423n4/2023-10-party/blob/b23c65d62a20921c709582b0b76b387f2bb9ebb5/contracts/crowdfund/ETHCrowdfundBase.sol#L267
https://github.com/code-423n4/2023-10-party/blob/b23c65d62a20921c709582b0b76b387f2bb9ebb5/contracts/crowdfund/ETHCrowdfundBase.sol#L270
https://github.com/code-423n4/2023-10-party/blob/b23c65d62a20921c709582b0b76b387f2bb9ebb5/contracts/crowdfund/InitialETHCrowdfund.sol#L329
When a user contributes to an InitialETHCrowdfund, the native tokens they send are stored and converted as shares in a PartyGovernanceNFT, scaled down with the exchangeRateBps and fundingSplitBps factors:
This down-scaling can incur a precision loss, up to a theoretical 999_999 per contribution, that is not sent back to the user at contribution time nor refunded after up-scaling in case the crowdfund is lost.
Consider refunding the unused tokens when the user contributes to a crowdfund. This wouldnt come at a significant cost in gas, because in the cases where users contribute round figures, an if would prevent a useless transfer from happening.
