Skip to content

Commit bfa73fe

Browse files
Merge pull request #1949 from OffchainLabs/dl/invert
inverts images wrapped in div with calss invert-on-dark
2 parents 7b5f9b4 + 08c657b commit bfa73fe

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

arbitrum-docs/how-arbitrum-works/02-transaction-lifecycle.mdx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,17 @@ The Sequencer Endpoint is the most direct method for users looking to minimize d
4343

4444
The diagram below shows different ways to submit transactions to the sequencer:
4545

46-
![submit-transaction-to-sequencer](../assets/submit-tx-to-sequencer.png)
46+
<div class="invert-on-dark">
47+
![submit-transaction-to-sequencer](../assets/submit-tx-to-sequencer.png)
48+
</div>
4749

4850
## Bypassing the Sequencer
4951

5052
This section delves into an alternative method for submitting transactions to the Arbitrum chain, bypassing the sequencer. This page focuses on how users can send their transactions directly to the delayed inbox contract on the parent chain rather than through the sequencer. This method offers two distinct paths a transaction can take, with each route interacting with the network differently to achieve transaction inclusion. This approach provides users with greater flexibility and ensures that transactions can still be processed if the sequencer is unavailable or if users choose not to depend on it. This section highlights these alternative submission mechanisms and underscores the robustness and decentralization features inherent in the Arbitrum network.
5153

5254
In **Diagram 3**, we demonstrate how users can submit their transactions using the delayed inbox contract to bypass the sequencer. As illustrated in the diagram, there are two possible paths for transaction handling. When a transaction is submitted to the delayed inbox, the sequencer may automatically pick it up, include it as an ordered transaction, and send it to the sequencer feed. However, if the sequencer does not process the transaction within 24 hours, users have the reliable option to call the `forceInclude` function on the sequencer inbox contract. This action ensures that the sequencer to picks up the transaction and includes it in the ordered transaction list, providing users with a sense of security about their transactions.
5355

54-
![bypassing-the-sequencer](../assets/bypassing-the-sequencer.png)
56+
<div class="invert-on-dark">![bypassing-the-sequencer](../assets/bypassing-the-sequencer.png)</div>
5557

5658
To send a transaction to the delayed inbox instead of submitting it to the sequencer, users can construct their transaction and then call the [`sendL2Message`](https://github.com/OffchainLabs/nitro-contracts/blob/fbbcef09c95f69decabaced3da683f987902f3e2/src/bridge/AbsInbox.sol#L150) function, passing the data of the serialized signed transaction as an argument. This function allows users to send a generic L2 message to the chain, suitable for any message that does not require L1 validation.
5759

arbitrum-docs/how-arbitrum-works/03-sequencer.mdx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ content_type: get-started
99

1010
The <a data-quicklook-from="sequencer">Sequencer</a> is a pivotal component of the <a data-quicklook-from="arbitrum">Arbitrum</a> network and is responsible for efficiently ordering and processing transactions. It plays a crucial role in providing users with fast <a data-quicklook-from="transaction">Transaction</a> confirmations while maintaining the security and integrity of the <a data-quicklook-from="blockchain">Blockchain</a>. In Arbitrum, the Sequencer orders incoming transactions and manages the batching, compression, and posting of transaction data to <a data-quicklook-from="parent-chain">Parent chain</a>, optimizing costs and performance.
1111

12-
![sequencer-operations](../assets/sequencer-operations.png)
12+
<div class="invert-on-dark">![sequencer-operations](../assets/sequencer-operations.png)</div>
1313

1414
In this section, we will explore the operation of the Sequencer in detail. The topics covered include:
1515

@@ -33,7 +33,7 @@ The Sequencer communicates the transaction sequence through two primary channels
3333
1. **Real-Time Sequencer Feed**: A live broadcast that publishes transactions instantly as they are sequenced. Nodes and clients subscribed to this feed receive immediate notifications, allowing them to process transactions without delay.
3434
2. **Batches Posted on the Parent Chain**: At regular intervals, the Sequencer aggregates transactions and posts them to the parent chain for finality. (Refer to the <a data-quicklook-from="batch">Batch</a>-Posting section for detailed information on this process.)
3535

36-
![sequencer-feed](../assets/sequencer-feed.png)
36+
<div class="invert-on-dark">![sequencer-feed](../assets/sequencer-feed.png)</div>
3737

3838
### Real-Time Sequencer Feed
3939

@@ -75,7 +75,7 @@ Developers and users should design their applications and interactions with thes
7575

7676
### **Delayed Messages on the Sequencer Feed**
7777

78-
As illustrated in the diagram, the Sequencer feed not only sends <a data-quicklook-from="child-chain">Child chain</a> transactions posted directly to the Sequencer but also incorporates parent chain-submitted child chain transactions. These include L2 messages submitted on L1 and retryable transactions. The Sequencer agent monitors the finalized messages submitted to the parent chains <a data-quicklook-from="delayed-inbox">Delayed Inbox</a> Contract. Once finalized, it processes them as incoming messages to the feed, ensuring they are added as ordered transactions.
78+
As illustrated in the diagram, the Sequencer feed not only sends <a data-quicklook-from="child-chain">Child chain</a> transactions posted directly to the Sequencer but also incorporates parent chain-submitted child chain transactions. These include L2 messages submitted on L1 and retryable transactions. The Sequencer agent monitors the finalized messages submitted to the parent chain's <a data-quicklook-from="delayed-inbox">Delayed Inbox</a> Contract. Once finalized, it processes them as incoming messages to the feed, ensuring they are added as ordered transactions.
7979

8080
It is important to note that the Nitro node can be configured to add delayed inbox transactions immediately after their submission to the parent chain, even before finalization. However, this approach introduces a risk of child chain reorganization if the transaction fails to finalize on the parent chain. To mitigate this risk, on <a data-quicklook-from="arbitrum-one">Arbitrum One</a> and Nova, the Sequencer only includes these transactions in the feed once they are finalized on the Ethereum chain.
8181

@@ -97,7 +97,7 @@ Understanding Batch-Posting is essential for grasping how Arbitrum achieves scal
9797

9898
The Sequencer in Arbitrum is critical in collecting and organizing child chain transactions before posting them to the parent chain. The batching process is designed to optimize for both cost efficiency and timely transaction inclusion.
9999

100-
![batching](../assets/batching.png)
100+
<div class="invert-on-dark">![batching](../assets/batching.png)</div>
101101

102102
**Transaction Collection and Ordering:**
103103

@@ -122,7 +122,7 @@ This batching mechanism allows the Sequencer to efficiently manage transactions
122122

123123
The Sequencer employs compression when forming transaction batches to optimize the data and cost of batches posted to the parent chain. Arbitrum uses the Brotli compression algorithm due to its high compression ratio and efficiency, crucial for reducing parent chain posting costs.
124124

125-
![compression](../assets/compression.png)
125+
<div class="invert-on-dark">![compression](../assets/compression.png)</div>
126126

127127
### Compression level in the Brotli algorithm
128128

@@ -147,7 +147,9 @@ After batching and compressing transactions, the Sequencer posts these batches t
147147

148148
There are two primary methods the Sequencer uses to send batches to the parent chain, depending on whether the chain supports EIP-4844 (Proto-Danksharding) and the current network conditions:
149149

150-
![submit-to-sequencer-inbox](../assets/submit-to-sequencer-inbox.png)
150+
<div class="invert-on-dark">
151+
![submit-to-sequencer-inbox](../assets/submit-to-sequencer-inbox.png)
152+
</div>
151153

152154
### 1. Using Blobs with `addSequencerL2BatchFromBlobs`
153155

website/src/css/partials/_darkmode.scss

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@
6464
color: white;
6565
}
6666
}
67+
68+
// Invert images wrapped in divs with invert-on-dark class when in dark mode
69+
.invert-on-dark img {
70+
filter: invert(1);
71+
}
6772
}
6873

6974
[data-theme='light'] {

0 commit comments

Comments
 (0)