- Total Pool - $60,000
- H/M - $50,000
- Low - $5,500
- Community Judging - $4,500
Starts: July 31, 2024 Noon UTC
Ends: August 28, 2024 Noon UTC
- nSLOC: 2301
The ArkProject NFT Bridge allows users to bridge NFTs (ERC-721) between Ethereum (L1) and Starknet (L2).
The ArkProject NFT Bridge currently supports the bridging of the Everai NFT collection exclusively. Holders of Everai NFTs can seamlessly transfer their assets from Ethereum (L1) to Starknet (L2) and vice versa, pioneering the integration of NFTs into the next generation of blockchain technology.
The ArkProject NFT Bridge uses the Starknet (L1↔L2) messaging protocol for ERC-721 bridging smart contracts.
Actors:
- Starknet messaging protocol: ensure message exchange between Ethereum and Starknet.
- Bridge admin: can enable/disable bridge, enable/disable global whitelist, enable/disable whitelist for a given collection and set L1L2 mapping.
- User: can bridge a NFT from Ethereum to Starknet or from Starknet to Ethereum.
Please note that Users need to approve
bridge contract to transfer the owned NFT on their behalf.
The following contracts are in scope
ethereum/src/
├── Bridge.sol
├── Escrow.sol
├── IStarklaneEvent.sol
├── IStarklane.sol
├── Messaging.sol
├── Protocol.sol
├── sn
│ └── Cairo.sol
├── State.sol
├── token
│ ├── CollectionManager.sol
│ ├── Deployer.sol
│ └── TokenUtil.sol
└── UUPSProxied.sol
The following contracts are NOT in scope
ethereum/src/
├── sn
│ ├── IStarknetMessagingLocal.sol
│ └── StarknetMessagingLocal.sol
├── TestMessaging.sol
└── token
├── ERC1155Bridgeable.sol
├── ERC721Bridgeable.sol
├── IERC1155Bridgeable.sol
└── IERC721Bridgeable.sol
The following contracts are in scope
starknet/src/
├── bridge.cairo
├── byte_array_extra.cairo
├── interfaces.cairo
├── lib.cairo
├── request.cairo
├── token
│ ├── collection_manager.cairo
│ ├── erc721_bridgeable.cairo
│ └── interfaces.cairo
└── token.cairo
The following contracts are NOT in scope
starknet/src/
├── tests
│ └── bridge_t.cairo
└── tests.cairo
Please Note: Tests are not in scope. Several contracts may include embedded tests tagged with #[cfg(test)
, issues with tests or test values will not be considered valid
Since ArkProject NFT Bridge uses the Starknet (L1↔L2) messaging only Ethereum and Starknet blockchains are supported.
Compatibilities:
Blockchains:
- Ethereum/Starknet
Tokens:
- [ERC721](www.tokenstandard.com)
On mainnet, only the following collections are whitelisted:
git clone --recursive https://github.com/Cyfrin/2024-07-ark-project.git
Unit tests for smart contracts are available, using foundry and starknet foundry
cd apps/blockchain/ethereum
forge test
cd apps/blockchain/starknet
snforge test
A guide for a local setup of ArkProject NFT Bridge is available.
An audit is available in github repository.
Known Issues:
-
Due to a payload size limit in Starknet L1<->L2 messaging protocol if user try to transfert a large number of NFTs, message will not to transmit and so NFT will be locked in bridge contract.
-
Bridge admin is a trusted role.
Additional Known Issues as detected by LightChaser, available here