From 4e4992d9d5d997ad22b5b6fc5f966a28611d4ec8 Mon Sep 17 00:00:00 2001 From: bendanzhentan <455462586@qq.com> Date: Wed, 22 Nov 2023 15:23:40 +0800 Subject: [PATCH] wip --- README.md | 20 +++++++++++++++++++- assets/optimism-withdraw-flow.png | Bin 0 -> 32174 bytes 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 assets/optimism-withdraw-flow.png diff --git a/README.md b/README.md index 329f875..df61391 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,27 @@ The opbnb-bridge-bot project primarily maintains a Layer2 contract named `L2StandardBridgeBot`. This contract, when called, initiates withdrawal transactions and collects a fixed fee for every withdrawals. The project promises that after the withdrawal transaction has can be proven and finalized after the required time window, a third-party account would complete the corresponding L1 proven withdrawal transactions and L1 finalized withdrawal transactions, thus completing the entire withdrawal process. +## Motivation + +![image](./assets/optimism-withdraw-flow.png) + +A withdrawal request must be completed in three steps: + +1. Send a L2 initiating transaction +2. Send the L1 proven transaction after the proposer submits the next L2 output root +3. Send L1 finalized transaction after the challenge window has passed + +Completing these three steps might not be a good user experience. Firstly, users need to send 3 transactions; secondly, they need to wait 2 periods before sending the next transaction. + +### See also + +- opBNB testnet bridge: https://opbnb-testnet-bridge.bnbchain.org + +- withdrawal example: https://testnet.opbnbscan.com/tx/0xadb6b8d8bffb4dc7177ef1e27e202035f0861a71521c3cdff66a4aeb4464e501 + ## Design Principle and Working Mechanism -This project consists of an on-chain contract `contracts/src/L2StandardBridgeBot.sol` and an off-chain bot. +This project consists of an on-chain contract [`contracts/src/L2StandardBridgeBot.sol`](contracts/src/L2StandardBridgeBot.sol) and [an off-chain bot](./cmd/bot/run.go#L67-L68). The `L2StandardBridgeBot` contract provides a `withdrawTo` function, which charges a fixed fee for every execution and then forwards the call to the `L2StandardBridge.withdraw`. diff --git a/assets/optimism-withdraw-flow.png b/assets/optimism-withdraw-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..9c746c20923b2b7dd5625fb30910ed7d9518b1d9 GIT binary patch literal 32174 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

3Cu-j>tLi(A_863G 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 literal 0 HcmV?d00001