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:
This can be found at: https://gravity-nft-ui.vercel.app/
Work done so far
- Added NFT metadata support to existing GravityERC721.sol
- Connected
x/nft
andx/nft-transfer
to Gravity Chain - Added
SendERC721ToCosmosClaim
tox/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/
- Code, including an in-depth README of the frontend process: https://github.com/gjermundgaraba/gravity-nft-ui
- 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