KittyBridge::bridgeNftWithData should approve the router to transfer LINK tokens on contract's behalf, but this approval is missing. Consequently, the
In the second step of the bridging process, KittyBridge::bridgeNftWithData is supposed to use Chainlink's Cross-Chain Interoperability Protocol (CCIP) to send the encoded NFT data to the destination chain. Sending a cross-chain message via CCIP incurs an execution fee for the message, which is properly calculated here
and there is even a conditional to check that the KittyBridge contract does have enough balance to cover said fees:
Before actually sending the message via
In order to pay the fees, KittyBridge is supposed to approve the router to transfer LINK tokens on behalf of KittyBridge. However, this approval is missing.
The router will not be able to collect the execution fee from KittyBridge, and the bridging process will revert with "ERC20: insufficient allowance".
Manual review, Foundry.
Approve the router to transfer LINK tokens on behalf of KittyBridge as follows:
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.