SWAN.sol is a UUPSUpgradeable contract
When this contract is upgraded, all existing buyerAgentmust be redeployed because of the change in implementation address of SWAN.sol which results in all functions on buyerAgent being irrelevant and cant be use because they use the old implementation address of SWAN.sol
All existing buyerAgent must be redeployed because the SWAN.sol contract address on the buyerAgent is set to immutable and even if it doesn't have immutable modifier there is no function on BuyerAgent.sol to set a new implementation address when SWAN.sol is upgraded
SWAN.sol contract address set in the constructor when a new buyerAgent is deployed
All existing buyerAgentmust be redeployed
If the upgrade is done other than during the withdraw phase, the buyerAgent owner must leave funds locked in contract equivalent to minFundAmount to make withdrawal for all owned funds and then redeploy new buyerAgentusing new Swan.solcontract
All existing NFT owned by buyerAgent will be locked forever because there is no function to transfer NFT to new deployed buyerAgent
Manual Review
Consider remove immutable modifier and add setter function for SWAN contract address in BuyerAgent.sol
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.