ETH ↔️ FLOW converter

So the original idea was to build “One-Stop-Shop for NFTs”. It’s was very ambitious to post it like that :sweat_smile: I get it. So we were thinking instead of that to focus on one cool thing — an Eth-to-Flow converter tool. If it works, we can help speed up the NFT community’s transition to Flow.

Abstract

A tool that helps convert NFTs from Ethereum to Flow blockchain.

Why

Ethereum has great NFT products with good usage and a rich community of collectibles fans. A lot of value was generated so far. The Flow will need it from the start so why not help bring it.

How It Works

  • Connect your Ethereum wallet.
  • Selects the NFTs that you want to convert.
  • We fetch all on-chain/off-chain data that we need to do that.
  • Then we mint exactly the same NFTs but on Flow…
  • And put those NFTs in a freshly created Dapper wallet.
  • The original Ethereum NFTs are held in an escrow smart contract (aka burned).

OpenSea Partnership

People already know OpenSea and trust it. OpenSea is already sitting on a huge user base and creator base. And they plan to support Flow as well. So it’s good to launch this MVP with a partnership with them.

Team #24

  • Artiom, product and marketing expert, founder of Linkdrop, a platform for increasing the engagement and usage of crypto products with customers like Maker, 0x, Coinbase, etc.
  • Jayesh, a young CS undergrad, won several hackathons, built a Spotify-like platform for supporting artists with crypto.

We seek one or two more devs who would love to join our team #24 :muscle: DM me on Discord (Artiom | Linkdrop#4149) or here.

Let us know what you think, any feedback is appreciated :pray:

6 Likes

Hey @flowjosh, we’re thinking of using Arbitrary Message Bridge (AMB) (kudos to @makoto) for Eth-to-Flow transfers. It supports only EVM-based chains so far, but I think we can tweak it so it will work with Flow. I just asked Igor from POA (creators of AMB) about this, will see

I remember in recent talks you mentioned that Flow’s NFT standard is quite similar (by structure) to Ethereum, am I right? If so can you please elaborate more about that, thanks

1 Like

And also what’s your strategy on bridges, do you plan to build this functionality by yourself or leave it to third-parties projects like us

There is a tutorial at https://docs.onflow.org/docs/non-fungible-tokens which describe the NFT interface.

AFAIK, the big difference in terms of interface is that FLow standard split transfer into deposit and withdraw but I don’t think it really matters. What’s important is how to maintain the mapping of contract address between Ethereum smart contract and Flow smartcontract as flow smart contract doesn’t have the notion of contract address (contract gets deployed into user account storage space). maybe flow smart contract should have additional meta field containing some sort of cross chain asset id

Curious to learn what Flow team has in mind.

2 Likes

@artiom Dapper Labs plans to build a ETH-Flow converter for cryptokitties but we do not have plans to do it for anything else. We were hoping third-party projects would be able to work on it, like you said.

I think that the core of your idea makes sense. It is a good idea to talk to Igor to see how the AMB might be utilized for this application, but I think that it might be an issue that Flow is not EVM based.

Flow’s NFT standard contains much of the same core functionality as the ERC-721 standard on Ethereum, but the structure is much different because Flow uses resource objects that are stored in the owner’s account instead of a ledger based model. So unfortunately, it would be hard to do a straight conversion. I’d imagine that the user on ethereum would just provide their Flow account address when they are locking their ETH asset, then your converter would mint that asset on Flow and store it in their account. I think it would make sense to include the ID of the ETH version of that asset in the flow resource too

1 Like

@makoto I think you might be misunderstanding the difference between a contract and a resource. Flow does have contract addresses, every contract gets deployed to an account that has an address, but the contract isn’t the resource object. The contract only defines the type for the resource and how it works. The actual resource objects are the ones that are stored in account storage.

1 Like

Got it, thanks for the clarification.

Yeah, this is actually what we planned to do, here is user flow:

  1. The user connects their Ethereum account.
  2. Provides their Flow account address or create a new one via Magic.
  3. Select NFT for converting.
  4. The NFT is locking in our SC.
  5. We fetch metadata via OpenSea API.
  6. Mint a new NFT on the Flow using this metadata.
  7. Store it in the user’s Flow account.

Plus, we store ID from the Ethereum version so anyone can verify that the new NFT on the flow was converted from a particular NFT on the Ethereum.

I think we can do it without AMB as well.

It sounds like you’ll have to get the blessing of any NFT project that you want to convert to Flow, and also build equivalent smart contracts for each one on Flow. Is that something that you’re probably just going to let them handle when they decide to use your service?

I think so yes. Also, I see this tool will be used by people and not by NFT projects, so individual collectors can convert their assets if they want. It will be more about a useful tool for collectors, at least from the start

But assuming that someone wants to convert their ETH NFT to Flow, there would have to be an equivalent smart contract on Flow.

For example, if someone wants to convert their CryptoPunk to Flow, you need to deploy a cryptopunk smart contract on Flow that has the same functionality as cryptopunks on ETH so that they are equivalent on the two different chains. The cryptopunks community and devs might not be happy about that if you didn’t already get their blessing because they might be wanting to do their own smart contract on Flow.

Maybe I’m misunderstanding about how this is supposed to work.

I don’t think anyone need permission from the NFT creator or minter platform. Once the ownership of the individual NFT is transferred to the user, it’s each individual user’s decision to lock the asset into Eth net and transfer to Flow.

I don’t think it’s that difficult assuming you only want to transfer the asset value in standard ERC721 format, not additional features each ERC721 contract may have added for additional utility. The bridge contract should just create an equivalent smart contract if the particular collection has never crossed the bridge.

If CryptoPunk has its own custom smart contract feature which they want to deploy to Flow on their own, then again it’s the individual NFT owner’s decision to use which bridging service to use. Of course you need to get blessing from CryptoPunk if you want Flow version of CryptoPunk to be shown on the cryptobunk website, but I don’t think that’s what @artiom is expecting.

I do think the use case is quite similar to how Austin Griffith migrated Moon from Rinkeby to xDai as xMoon token.

He doesn’t expect Reddit team to bless his xMoon. He just wanted to use xMoon for his own game or something like that so that he can ask Moon user to try out his service.

1 Like

Those are all good points! Seems like it isn’t as much of a problem as I thought it would be. Sounds good to me! :+1:

Yes, @makoto is absolutely right, thank you for articulating this. This is how we see our tool in the first place. I do not exclude that in the future when Eth-to-Flow feature will be part of the “One-Stop-Shop for NFTs” platform we can partnership with NFT projects on Ethereum that plans to integrate Flow so we will do support their smart contracts.