ERC721 contract deployed by L1 Bridge.sol
when withdrawTokens()
is called cannot be upgraded or have their ownership transferred.
When the ERC721 NFT contract is deployed by the L1 bridge contract, the bridge becomes the owner of the NFT contract. As a result, only the bridge can call transferOwnership()
and upgradeTo()
on the NFT contract; otherwise, the transaction will revert. However, the L1 bridge does not expose or implement functions to invoke these transfer and upgrade operations on the NFT contract.
The overall design of ArkProject incorporates upgradeable contracts for both the L1 and L2 sides. However, due to the missing capability in the L1 bridge, the L1 ERC721 NFT contract cannot be upgraded.
The ownership of the NFT contract can never be changed.
Manual
Just as the L2 bridge exposes the collection_upgrade()
and collection_transfer_ownership()
functions, which can only be called by the L2 bridge admin, the L1 bridge should similarly implement collectionUpgrade()
and collectionTransferOwnership()
functions. These should be callable only by the L1 bridge admin to handle upgrades and ownership transfers of L1 NFT collections.
Likelyhood/Impact: High, it will never (until an upgrade) be able to update or transfer the ownership of any collections created on L1.
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.