Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
1ea3d14
feat: add DrawioReactFlow interactive diagram system
anegg0 Apr 3, 2026
1376db1
feat: add diagram assets, manifests, and background
anegg0 Apr 3, 2026
162578a
style: add Arbitrum glassmorphic diagram styling
anegg0 Apr 3, 2026
800580f
docs: integrate interactive diagrams into documentation pages
anegg0 Apr 3, 2026
d004f5b
chore: sync static images from master
anegg0 Apr 3, 2026
2bce555
Merge branch 'master' into reactflow-interactive-diagrams
anegg0 Apr 3, 2026
7f3c5d8
chore: remove unused Mermaid diagram files
anegg0 Apr 3, 2026
6af02c5
chore: remove unused Mermaid markdown diagram files
anegg0 Apr 3, 2026
1b34f5e
Merge branch 'master' into reactflow-interactive-diagrams
anegg0 Apr 8, 2026
74a1dff
feat: add diagram hover modal system and interactive diagram improvem…
anegg0 Apr 8, 2026
1d34f4a
fix: remove box-shadow from image nodes in diagrams
anegg0 Apr 8, 2026
238c2e0
fix: normalize process shape border using shorthand border-width
anegg0 Apr 8, 2026
5d9fee1
fix: use uniform border on process shape nodes
anegg0 Apr 8, 2026
8f8d8c2
style: set subtle grey border on diagram nodes
anegg0 Apr 8, 2026
7c62589
refactor: remove Draw.io inline colors from diagram nodes
anegg0 Apr 8, 2026
df68dfb
add mild colors to the diagram nodes
anegg0 Apr 12, 2026
b78d191
re-add original img files
anegg0 Apr 12, 2026
0bed031
Merge branch 'master' into reactflow-interactive-diagrams
anegg0 Apr 12, 2026
7005180
update styling methods and node colors
anegg0 Apr 12, 2026
ffa7608
docs: add delayed inbox modal implementation plan
anegg0 Apr 13, 2026
7b8918a
feat(diagrams): add mode field and parse mode attribute
anegg0 Apr 13, 2026
293eafd
feat(diagrams): configure Delayed Inbox transition as modal
anegg0 Apr 13, 2026
717eecc
feat(diagrams): add DiagramModal component
anegg0 Apr 13, 2026
604c900
feat(diagrams): render DiagramModal for modal-mode transitions
anegg0 Apr 13, 2026
32af717
feat(diagrams): style DiagramModal overlay and header
anegg0 Apr 13, 2026
0aa1ed9
docs(diagrams): document modal transition mode in DrawioReactFlow README
anegg0 Apr 13, 2026
e32eea2
chore: add @types/react-dom to silence LSP warnings on createPortal
anegg0 Apr 13, 2026
1ad1dc5
refactor(diagrams): remove dead hoverContent prop from DiagramFlow
anegg0 Apr 13, 2026
0c8d2fd
delete inactive diagram
anegg0 Apr 22, 2026
efada66
refactor(diagrams): detect trigger nodes from manifest, not fill color
anegg0 Apr 22, 2026
18e3584
docs(diagrams): update README — trigger detection is manifest-driven,…
anegg0 Apr 22, 2026
bb020f3
feat(diagrams): honor drawio waypoints and startArrow for edge routing
anegg0 Apr 22, 2026
11307d6
chore(diagrams): save authored drawio edits and add excalidraw source
anegg0 Apr 22, 2026
61996f5
feat(diagrams): add Excalidraw-to-ReactFlow converter and extension d…
anegg0 Apr 22, 2026
e415512
feat(diagrams): dispatch converter by file extension in NavigableDiag…
anegg0 Apr 22, 2026
723b12e
feat(diagrams): point transaction-lifecycle manifest entry to excalid…
anegg0 Apr 22, 2026
9787a3f
docs(diagrams): document excalidraw format support and dispatcher
anegg0 Apr 22, 2026
013e1ac
feat(diagrams): auto-bind floating excalidraw text to enclosing shapes
anegg0 Apr 22, 2026
69c034d
feat(diagrams): resolve corner-anchored excalidraw arrows using endpo…
anegg0 Apr 22, 2026
12e5959
chore(diagrams): import expanded excalidraw source with nested envelo…
anegg0 Apr 22, 2026
9844dde
feat(diagrams): redirect excalidraw edges bound to text overlays to t…
anegg0 Apr 23, 2026
bdc0f9b
chore(diagrams): update excalidraw source with refined element positions
anegg0 Apr 23, 2026
a7e13ab
feat(diagrams): honor excalidraw textAlign and verticalAlign on bound…
anegg0 Apr 23, 2026
adf3881
chore(diagrams): bind most text strings to their containers in excali…
anegg0 Apr 23, 2026
411e912
feat(diagrams): render excalidraw image elements via embedded files map
anegg0 Apr 23, 2026
a9ff110
chore(diagrams): bind Delayed Inbox casing correctly and refine layout
anegg0 Apr 23, 2026
be34a62
chore(diagrams): refine excalidraw layout
anegg0 Apr 23, 2026
ff2f1a6
feat(diagrams): add sub-side handles at 20/50/80 so excalidraw arrow …
anegg0 Apr 23, 2026
6f666a9
remove drawio diagram and replace with excalidraw version
anegg0 Jun 10, 2026
9e8e2e2
add static/img/haw-bypassing-the-sequencer.drawio
anegg0 Jun 10, 2026
751e0f0
Merge origin/master into reactflow-interactive-diagrams
anegg0 Jun 10, 2026
ff15bd3
Potential fix for pull request finding 'CodeQL / Incomplete multi-cha…
anegg0 Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/how-arbitrum-works/01-inside-arbitrum-nitro.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ user_story: "As a developer, I need to understand how transactions flow through
content_type: concept
---

import DrawioReactFlow from '@site/src/components/DrawioReactFlow';

## Transaction processing journey on Arbitrum

As a developer initiating a <a data-quicklook-from="transaction">transaction</a> on <a data-quicklook-from="arbitrum">Arbitrum</a>, gaining a clear understanding of the end-to-end flow—from initial submission through to finality—is helpful, but it isn't required.

This overview methodically traces the transaction lifecycle, emphasizing how Arbitrum’s architecture ensures precise, efficient, and secure handling at every stage. This article covers the complete <a data-quicklook-from="arbitrum-nitro">Arbitrum Nitro</a> stack, beginning with the <a data-quicklook-from="sequencer">Sequencer</a>, which is responsible for transaction ordering, advancing to the <a data-quicklook-from="state-transition-function">State Transition Function</a> (STF) for execution, and culminating in validation mechanisms that uphold integrity.

<ImageZoom src="/img/haw-transaction-lifecycle.png" className="img-600px" alt="Transaction lifecycle">
Transaction lifecycle
</ImageZoom>
<DrawioReactFlow manifest="/diagrams/haw-transaction-lifecycle.manifest.xml" />

Along the way, you'll learn about Arbitrum's ability to deliver security on par with Ethereum, while achieving fee reductions by a factor of ten and transaction speeds accelerated by a factor of 100 using optimized mechanisms.

Expand Down
4 changes: 3 additions & 1 deletion docs/how-arbitrum-works/deep-dives/transaction-lifecycle.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ user_story: As a current or prospective Arbitrum user, I need to learn more abou
content_type: concept
---

import DrawioReactFlow from '@site/src/components/DrawioReactFlow';

You can submit transactions to <a data-quicklook-from="arbitrum">Arbitrum</a> through two main pathways:

1. **Through the [<a data-quicklook-from="sequencer">Sequencer</a>](/how-arbitrum-works/deep-dives/sequencer.mdx)**: The standard method for most transactions.
Expand All @@ -33,7 +35,7 @@ You can also submit transactions directly to the Delayed Inbox contract on the p

The following diagram shows the different ways you can submit transactions to Arbitrum:

<ImageZoom src="/img/haw-transaction-lifecycle.png" alt="Transaction lifecycle diagram showing various pathways for submitting transactions" className="img-600px" />
<DrawioReactFlow manifest="/diagrams/haw-transaction-lifecycle.manifest.xml" />

## Submitting transactions to the Sequencer

Expand Down
35 changes: 35 additions & 0 deletions docs/how-arbitrum-works/partials/_retryable-tickets-partial.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
## Retryable tickets

Retryable tickets are Arbitrum's canonical method for creating parent-to-child chain messages—parent-chain transactions that initiate a message to be executed on a child chain. A retryable is submittable for a fixed cost (dependent only on its calldata size) paid at the parent chain. Critically, the ticket's _submission_ on the parent chain is separable and asynchronous from its _execution_ on the child chain. This design provides atomicity for cross-chain operations: if the parent chain transaction to request submission succeeds (doesn't revert), then the execution of the retryable on the child chain has a strong guarantee to eventually succeed.

For step-by-step instructions on creating retryable tickets, including parameter estimation and SDK usage, see [Creating retryable tickets](/build-decentralized-apps/bridging/cross-chain-messaging.mdx#ethereum-to-arbitrum-messaging).

### Retryable ticket lifecycle

The lifecycle of a <a data-quicklook-from="retryable-ticket">retryable ticket</a> involves three stages: submission, automatic redemption, and manual redemption.

#### Submission

Creating a retryable ticket is initiated with a call to the `createRetryableTicket` function of the inbox contract. Key parameters include the destination address, call value, gas limits, refund addresses, and calldata. The ticket requires sufficient funds to cover both submission costs and gas for child chain execution. Upon successful submission, a unique `TicketID` is created and the `ArbRetryableTx` precompile emits a `TicketCreated` event.

#### Automatic redemption

Upon successful ticket creation, the system checks if conditions are met for automatic redemption: the user's child chain balance must cover the gas costs, and the provided `maxFeePerGas` must meet or exceed the child chain base fee. If these conditions are met, the system automatically attempts to execute the ticket (auto-redeem).

If auto-redemption succeeds, the ticket executes immediately with the original parameters, and excess fees are refunded. If auto-redemption fails (for example, due to insufficient gas or an increase in gas prices), the ticket remains in the retryable buffer for up to one week, allowing for manual redemption.

#### Manual redemption

If automatic redemption fails, anyone can manually redeem the ticket by calling the `ArbRetryableTx` precompile's `redeem` method. The manual redemption attempt donates its call gas to the execution, and the gas limit is not constrained by the original ticket parameters. This allows tickets to be retried with different gas conditions.

Tickets remain in the retryable buffer for one week. If not successfully redeemed within this period, the ticket expires and is automatically discarded. However, tickets can be kept alive indefinitely by paying a fee to extend the lifetime for another full period before expiration.

If a ticket expires without successful redemption, the escrowed `callValue` is refunded to the `callValueRefundAddress` specified during submission. This protects user funds even if execution never succeeds.

#### Receipt types

Retryable tickets produce two types of receipts:

- **Ticket creation receipt**: Confirms successful ticket creation and includes a `TicketCreated` event with the `ticketId`
- **Redeem attempt receipt**: Records each redemption attempt and includes a `RedeemScheduled` event
Only one successful redemption can occur per ticket. Multiple failed redemption attempts each produce a receipt until one succeeds.
Loading
Loading