Updated 574 days ago

Gravity Bridge ERC721

Bridge Ethereum NFTs to Cosmos

  • Crypto / Web3
  • Ethereum
  • NFT
  • Crosschain Infrastructure
  • Stargaze
  • Bridge
  • Omniflix

We've implemented support for ERC721 tokens to be transferred over to Gravity Bridge and beyond (using the ICS721 standard).

For a full, detailed breakdown of the implementation, see the GoN README: https://github.com/EmpowerPlastic/Gravity-Bridge/blob/game-of-nfts-stargaze/GAME_OF_NFTS.md

We've also implemented a UI to showcase the implementation:

Screenshot from 2023-06-18 14-04-41.png

This can be found at: https://gravity-nft-ui.vercel.app/

eth-to-cosmos (1).png

Work done so far

  • Added NFT metadata support to existing GravityERC721.sol
  • Connected x/nft and x/nft-transfer to Gravity Chain
  • Added SendERC721ToCosmosClaim to x/gravity and implemented attestiation handling
  • Added separate orchestartor oracle flow for GravityERC721.sol contract
  • Added integration test happy path flow for bridging ERC721 to Gravity
  • Set up a testnet (Gravitygaze) connecting Sepolia and Stargaze Testnet and Omniflix testnet
  • Relaying ERC721 transfers from Gravity Bridge to Stargaze Testnet and Omniflix testnet
  • Created a demonstration frontend: https://gravity-nft-ui.vercel.app/
  • Made a gravityjs typescript project to make it easier to interact with the Gravity Bridge from JS, can be found under gravityjs (and its use can be found in the gravity-nft-ui code)

Future plans

At this point, implementation supports only transfers of Ethereum-based NFTs to Cosmos and that's what can be tested on the running testnet. GraivtyERC721.sol has a withdrawERC721() function, so it would be possible to unlock NFTs held in the contract with the appropriate Gravity Bridge upgrade. However, we plan to implement flows that will allow NFT transfers back and forth (see General Concept above). UI with good UX is also needed for transfers from Cosmos to Ethereum, because of the need to relay Ethereum transactions manually. Additionaly, for a better security, we plan to move NFT bridging logic from x/gravity to a dedicated module.

For a full, detailed breakdown of the implementation, see the GoN README: https://github.com/EmpowerPlastic/Gravity-Bridge/blob/game-of-nfts-stargaze/GAME_OF_NFTS.md