1/ How important is Censorship Resistance for L2s ? Applications can censor individual users based on where they come from, or whole dApps could be rendered useless if Rollups censored all incoming txs to them. What are the possible solutions right now ? 👇@l2beatcom
2/ @arbitrum and @optimismPBC allow users to "force" their transactions via L1. This is perhaps inconvenient for the end users, but it is a very generic mechanism that works for all dApps on a Rollup. And dApps don't need to do anything, it's just there. And it works
3/ @StarkWareLtd based L2s (@SorareHQ, @dydxprotocol, @deversifi, @Immutable) also have force transaction mechanism, but they are application specific. Namely, they allow you to force only certain tx (typically withdrawal request). It's as if each dApp had to implement it on L1
4/ Building generic "forcing" mechanism through L1 for zkRollups may prove to be a challenge - we will see once final version of generic computation zkRollups from @StarkWareLtd@the_matter_labs or @PolygonHermez are out
5/ Another approach is to "decentralize Sequencer", i.e. allow anyone to sequence transactions so that if users are censored, they can try to run their own. This comes with its own unique challenges, from possibly degrading UX, to the complexity of running multiple Sequencers
6/ Finally, Rollups can provide mechanism for users that are censored to move their assets out. This is obviously not ideal, but the minimum we should expect. You censor me ? I am out and move my stuff elsewhere
7/ And if you think censorship resistance is a non issue, you clearly were not denied @dydxprotocol recent airdrop 🙃
• • •
Missing some Tweet in this thread? You can try to
force a refresh
3/ Pushing state roots is crucial so that users can withdraw their funds from the bridge. And to be able to do it, you need to provide Merkle Proof of your balance against that state root on L1
1/ With @arbitrum Sequencer down for an hour, Arbitrum chain effectively reduced itself to L1 Ethereum wrt to cost and speed, but it never stopped working. How is it possible ? And why @l2beatcom claims that users should propose blocks when operator is down ? 🧵👇
2/ Arbitrum, as any L2 Optimistic Rollup, posts on Ethereum L2 transaction batches and, periodically, state roots of L2. Anyone can confirm that the latest state root of L2 is indeed the result of executing L2 transactions previously posted. Verify, don't trust !
3/ So, who is posting L2 txs on Ethereum ? Typically sequencer, but if Sequencer is down, users can do it themselves. This is what we mean by "transacting using L1". Users can do it if Sequencer is down, or if the Sequencer is censoring them
After long discussions we, at @l2beatcom ended up with the series of questions that we hope each Rollup provider will be able to answer so that users will be able to properly assess the risk of their funds deposited into the Rollup: 👇
1. Let's start with the obvious - are you using Validity Proofs or Fraud Proofs on L1 to secure the state ? What are the details ? How can users be sure that you are proving what you claim to be proving ?
2. Transaction data will be needed for Fraud Proofs, Emergency Exits, etc... where is the data stored ? If on L1, how users can be sure that they will be able to decode it if needed ? If not, where is it and what entity(s) are securing it ?
1/ Now that @0xPolygon data is available on BigQuery, a deeper look into smart contract usage, gas usage, etc... is available - as an example, have a look at the cumulative gas usage (on a log scale), compared to Ethereum:
h/t @piotrklis_ 👇
2/ It looks like soon enough Polygon users will spend more gas then Ethereum users in the entire Ethereum history 🤯 You may think this is amazing, but how much of that gas is spent on creating new state ?
3/ If Polygon continues their exponential growth, will the state tree also grow exponentially ? And if so, how the geth nodes that they are using will handle that ?
1/ The easiest way to understand the difference between L2 Rollup and a sidechain such as @0xPolygon is to inspect closer the exit procedure. Below is tx withdrawing 450,000 USDC from @0xPolygon child chain: ethtx.info/0x5c5f80a7dab5… 👇
2/ First thing to notice is that to perform the exit user needs to submit the chunk of data (input data) containing, among other info, merkle proof for the exit. This data can only be obtained from Matic nodes, it is impossible to construct it just by observing L1
3/ On a Rollup data would be available on L1, so even if all Matic nodes were down, users would still be able to exit their tokens. That's not the case here - you need to get that data from Matic nodes
1/ If, after reading blog.alphafinance.io/alpha-homora-v… you are still confused how Alpha Homora and IronBank were hacked, here's how the hack was conceived
2/ Normally when you borrow funds from AH bank, your debtShare and totalDebt increases. Specifically if you want to borrow x tokens, your debt share will be calculated as:
share = x * totalShare / totalDebt
and it is added to totalShare
3/ All these numbers are very big integers (as token precisions are 18 digits) and the calculation is correct, but when totalShare = 1 (think 1 wei) and x < totalDebt, new debt share will be 0 (integer division)