How Transparent will L2 actually be?

Cryptocurrency News and Public Mining Pools

How Transparent will L2 actually be?

Preface: This is not a rant, just expressing some concerns. I am looking to be proven wrong.

I've been reading, and in some cases using, various L2 solutions in various states of development. I have a relatively decent understanding of how they work and the tradeoffs of different approaches. For example, I've deployed a smart contract on xDai, I've deposited,used, and withdrawn from Polymarket on Polygon PoS, and I've deposited and done a couple transfers in zkSync.

However, I am increasingly concerned that regardless of particular implementation, all L2 solutions I've seen have the same basic workflow:

  1. You must deposit ETH or some other token to a contract on L1.
  2. You are issued a corresponding token on the particular L2. You can now use that to do whatever the L2 is capable of.
  3. When done, you must again perform a transaction on L1 to withdraw funds back into L1.

I personally don't like this workflow for several reasons:

  1. I have to be aware of which L2 some particular dapp is using
  2. I have to manually decide how much I want/need to deposit. Most likely either I won't deposit enough and have to initiate a second transaction, or I'll deposit too much and end up with funds just sitting around all over the place.
  3. I have to potentially buy/trade tokens even before the deposit. For xDai I had to swap ETH for Dai. For Polymarket I had to swap to USDC. Either I have to do this on L1 (which I did) and pay a lot in gas fees, or potentially use a different L2 like loopring, which still leads to the same issues, just one step removed.
  4. Ultimately an L2 is not Ethereum itself. For example, on xDai I have to remember to switch networks to xDai in metamask. On zkSync it doesn't seem to support metamask at all except for signing L2 transactions.

Furthermore, as a developer, if I deploy a smart contract to a L2 (that supports smart contracts), it is basically stuck there. For example, I deployed a basic ERC-20 token to xDai, but from that point on, that's where it lives. If someone wants to use my coin on L1 or a different L2, I guess I have to deploy another contract to those places and somehow bridge them over? zkSync seems bit better about this and supports a number of ERC-20, but that is currently centralized and requires approval, and maybe has the same overhead of needing to deploy contracts in multiple places. And that is just ERC-20, no mention of ERC-721 or anything else.

I'm also somewhat familiar with Polygon's project to bridge various L2 solutions together, but I have to say their website and documentation really isn't clear about how it works, and importantly what the user/developer experience will ultimately be like. In fact it does seem to imply that the above workflow will continue to be necessary.

For example, consider the following scenario: I want to send an NFT to my friend. If everything is just on L1 this is easy. My NFT lives in a smart contract and I just have to issue a transaction to transfer ownership to my friend's address. But what if the NFT's contract lives in a L2? Now I have to keep track of which L2, potentially deposit funds to cover the transaction fee on L2, make sure my friend knows the token is on L2, and they potentially have to deposit funds to do anything with it as well.

What if I want to list my NFT on a market, but my NFT lives on one L2 and the market on another? Is it even possible then?

Crypto already has a high learning curve and is unintuitive for people new to it. How many posts do we see where people send their ETH to the wrong address, or set the gas limit too low and fuck up their transaction. Now imagine adding a whole new dimension to this where every dapp is on a different L2 using their own tokens. I'm struggling to see how this isn't a serious problem.

So my questions are:

  1. Are my concerns legit, or is there just something I'm totally missing about all of this? Is it really just me or are most people glossing over these usability concerns?
  2. How possible will it really be to totally abstract away L2, so that the experience for end users is the same as if everything was on L1? Is there just a bunch of missing infrastructure that can eventually fill this gap and lead to a truly seamless experience?

submitted by /u/ess_oh_ess
[link] [comments]