Welcome to WakeUp Labs implementation of the front-end interface that enables users to force-include that we proposed here: Arbitrum Forum Proposal.
You can take a look to the follow up or the project in the Arbitrum Forum - Update Thread.
We have developed a web app designed to facilitate an uncommon type of withdrawal that bypasses the Arbitrum sequencer, enabling users to transfer funds from the Arbitrum network (Layer 2) to the Ethereum network (Layer 1). This web app demonstrates the feasibility and functionality of these specialized cross-chain fund transfers, ensuring a seamless and secure user experience.
This project aims to foster the decentralization of the Arbitrum chain by avoiding dependence on a centralized single point of failure in cases where the Sequencer may not function correctly —something currently achievable only by highly technical users—.
We developed a system that leverages Arbitrum's design to bypass the sequencer. Utilizing the Arbitrum SDK, we directly place user transactions into the delayed inbox on Layer 1 (L1). Once a transaction is submitted, we must wait for the sequencer's required 24-hour window to gracefully include the transaction. If the sequencer fails to do so within this time-frame, we use the SDK to force the inclusion of the transaction.
The implementation is fully open source with MIT license.
You can read our technical research here.
Our dApp simplifies the process, providing users with an intuitive interface to follow the required steps to safely execute a withdrawal while bypassing the Sequencer. The steps are as follows:
-
Connect your wallet and set the amount to withdraw from Arbitrum.
-
Check the estimated fees and understand the process costs.
-
Sign the Arbitrum withdrawal transaction.
- This may prompt the wallet once or twice: first to ensure the Arbitrum network is set, then to sign your L2 transaction.
-
Send the signed transaction to Arbitrum's Delayed Inbox (on the Ethereum network).
- This bypasses the Sequencer's reading.
- It may take 15-60 minutes for the Ethereum network to process the transaction.
- The wallet may prompt you again to ensure the Ethereum network is set and to send your L2 transaction to the Delayed Inbox.
-
Force the inclusion of the transaction.
- This bypasses the Sequencer's batching.
- This step is only necessary if the Sequencer hasn't included the transaction within 24 hours.
- The wallet may prompt you again to ensure the Ethereum network is set and to send your L2 transaction.
The Arbitrum Connect SDK supports all types of transactions, but our user interface (UI) is currently limited to handling withdrawals, the most popular and important use case. Here's a diagram of the withdrawal process:
You can read more about the technical specifications here.
Check out the video preview of our dApp here.
Sometimes, examples speak louder than words.
Here is the first implementation of the web app. The core objective is to provide a user-friendly interface that guides users through the step-by-step process of withdrawing funds from the L2 (Arbitrum) to the L1 (Ethereum) network.
Try it out here: https://staging-transaction-enforcer.wakeuplabs.link/
TL;DR
- Node version: 18.18.2
- npm version: 9.8.1
Also, Node 18.18.2 comes with npm 9.8.1, so the project should work properly with it. In any case, npm workspaces were added in npm 7.0.0, so you should have at least that version (9.8.1 strongly recommended).
-
Clone the repository:
git clone https://github.com/wakeuplabs-io/arbitrum-connect.git
-
Install dependencies:
npm install
-
Start the local server:
npm run dev