Example: Cross-Chain Airdrop
Allow owners of an ERC721 on Ethereum to claim something on another chain.
We've built a simple example contract that allows users that own an ERC721 on mainnet to receive an airdrop such as a new NFT or other tokens on another chain (ex. Polygon). The contract reads ERC721.ownerOf(uint256) from mainnet to ensure that the wallet is the correct owner.
Since the _giveAirdrop function is abstract, you can add any logic you want for airdrop claimers. This base contract could be used to migrate an NFT to a new chain, give tokens to claimers, or otherwise provide additional utility to ERC721 tokens on mainnet.
Here's an example that gives 1 ETH to airdrop claimers.
contract SimpleNFTAirdrop is NFTAirdrop {
    constructor(address _nft, address _oracle)
        payable
        NFTAirdrop(_nft, _oracle)
    {
        require(msg.value == 10 ether);
    }
    function _giveAirdrop(address _to, uint256 _tokenId) internal override {
        (bool success, ) = payable(_to).call{value: 1 ether}("");
        require(success);
    }
}The full source code for the contracts used in this below can be found at the Github NFTAirdrop.sol example.
Last updated