If user wants to mint NFT with upkeep updates, contract calls IAutomationRegistrarInterface
function which registers upkeeper.
If IAutomationRegistrarInterface
is failing and reverting (due to registrar misconfiguration, lack of LINK, or external issues), NFT won't be minted even user paid for it and functions did the job.
Likelihood:
This occurs whenever the Chainlink Keeper registrar is unavailable, misconfigured, out of LINK, or otherwise fails to process the registration.
Any external or temporary issue with the registrar can block all NFT mints that request upkeep, regardless of the contract's own correctness.
Impact:
Users can be denied NFTs they paid for, leading to loss of funds and trust.
An external dependency (the registrar) can cause a denial of service for core contract functionality.
User requests to mint an NFT with upkeep enabled
Chainlink Functions fulfills the weather request successfully
User calls fulfillMintRequest with the returned reqId
Suppose the Chainlink Keeper registrar is misconfigured, out of LINK, or otherwise fails
Result: The NFT is NOT minted, even though the user paid and the oracle succeeded.
Conclusion: The user cannot claim their NFT until the registrar issue is resolved.
Put register upkeep inside try catch -> In case of failure, emit event and continue minting NFT.
If Oracle fails, the `fulfillMintRequest` function will not return the payed fee for the token to the user.
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.