Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
c3e020c
Re-adding Inside Arbitrum Nitro; and original images - reformatted
pete-vielhaber Aug 6, 2025
ae5ce80
Removing existing a-gentle-intro; being replaced with Inside Arbitrum…
pete-vielhaber Aug 6, 2025
f3fed7b
moving sequencer to deep-dives
pete-vielhaber Aug 6, 2025
e478373
moving state-transition-function to deep-dives
pete-vielhaber Aug 6, 2025
203d721
Moving validation-and-proving to deep-dives
pete-vielhaber Aug 6, 2025
e8d7dd9
Moving gas-and-fees to deep-dives
pete-vielhaber Aug 6, 2025
542ff30
Moving L1-to-L2 and L2-to-L1 messaging to deep-dives
pete-vielhaber Aug 6, 2025
b696331
Moving AnyTrust protocol and Data Availability to deep-dives
pete-vielhaber Aug 6, 2025
657d920
renamed files; added admonitions for deep-dives on Inside Arbitrum Nitro
pete-vielhaber Aug 6, 2025
6621250
Moved stf/validation-proving docs to deep-dives
pete-vielhaber Aug 6, 2025
ea1cd61
renamed stf-inputs; added admonition to stf-inputs in Inside Arbitrum…
pete-vielhaber Aug 6, 2025
79d7071
rollup-protocol
pete-vielhaber Aug 6, 2025
4ea3509
changing verbiage from stake => bond; removed duplication from assert…
pete-vielhaber Aug 6, 2025
8df435e
edited arbos down to precompiles; including a blurb from arbos in Ins…
pete-vielhaber Aug 6, 2025
b964c78
arbos adjustments
pete-vielhaber Aug 6, 2025
e607011
redirects
pete-vielhaber Aug 7, 2025
fc13589
removed stylus-execution-path; included content in arbos with a new s…
pete-vielhaber Aug 7, 2025
e882a9c
removed gentle intros for stf, validation and proving
pete-vielhaber Aug 7, 2025
9e6d289
Removed proving and challenges; dup content; opcodes for WAVM seems l…
pete-vielhaber Aug 7, 2025
d4d7de5
redirects
pete-vielhaber Aug 7, 2025
8b408b9
Refactoring pages for readability
pete-vielhaber Aug 14, 2025
c32820e
Modified sidebars
pete-vielhaber Aug 14, 2025
1b79d45
fixing broken links
pete-vielhaber Aug 14, 2025
b522601
updating broken links
pete-vielhaber Aug 14, 2025
28f35f3
fixing broken links
pete-vielhaber Aug 14, 2025
892bae7
last of the broken links
pete-vielhaber Aug 14, 2025
0bedc3a
Editing BoLD gentle intro
pete-vielhaber Aug 15, 2025
d5c1e5e
fixing broken link
pete-vielhaber Aug 15, 2025
179a8be
add re-written stf gentle intro + stf inputs, bypassing deffective pr…
anegg0 Aug 15, 2025
76b8817
mv re-written stf gentle intro + stf inputs, bypassing deffective pre…
anegg0 Aug 15, 2025
3895a20
simplify stf-inputs deep dive
anegg0 Aug 15, 2025
f451e3a
fix links
anegg0 Aug 15, 2025
13e9630
simplify transaction lifecycle article
anegg0 Aug 16, 2025
3e031b2
Merge branch 'haw-v25' into haw-editorial-refactor
anegg0 Aug 16, 2025
ecde4dd
moved content from 03-eth-vs-arb to build-dapps/arb-vs-eth/01-compari…
pete-vielhaber Aug 20, 2025
3913a8e
Editing contents for duplication
pete-vielhaber Aug 20, 2025
34f2fd2
Merge branch 'haw-v25' into haw-editorial-refactor
pete-vielhaber Aug 20, 2025
a4e8c60
Merge pull request #2589 from OffchainLabs/haw-editorial-refactor
pete-vielhaber Aug 20, 2025
4ea344d
Editing Inside Arbitrum Nitro for readability/grammar/tense
pete-vielhaber Aug 20, 2025
a8bcdd5
Merge branch 'master' into haw-v25
pete-vielhaber Aug 20, 2025
70ebc2d
Merge branch 'master' into haw-v25
pete-vielhaber Aug 20, 2025
c72a242
undoing my oopsie
pete-vielhaber Aug 20, 2025
05227e5
adjusting redirects
pete-vielhaber Aug 20, 2025
42ff89f
making more adjustments to redirects
pete-vielhaber Aug 20, 2025
6120597
redirects
pete-vielhaber Aug 20, 2025
cffc82e
Fixing typo / em-dashes
pete-vielhaber Sep 17, 2025
1d270a3
Fixing typos
pete-vielhaber Sep 17, 2025
8b8a12d
Adding link
pete-vielhaber Sep 17, 2025
fa8a403
Minor style/grammar
pete-vielhaber Sep 18, 2025
6137df2
Minor styling
pete-vielhaber Sep 18, 2025
6c2c5ee
Styling
pete-vielhaber Sep 19, 2025
5374281
Styling
pete-vielhaber Sep 19, 2025
d445842
Merge branch 'master' into haw-v25
pete-vielhaber Sep 19, 2025
0fc2ed6
fixing broken links
pete-vielhaber Sep 19, 2025
3c2952a
updated inside Arbitrum with new upgrades
GreatSoshiant Oct 1, 2025
a24c10e
updated inside Arbitrum structure and contents
GreatSoshiant Oct 2, 2025
a474ff4
Merge branch 'master' into haw-v25
pete-vielhaber Oct 6, 2025
a667b88
updated inside Arbitrum with new format
GreatSoshiant Oct 7, 2025
b03586f
broken links fixed
GreatSoshiant Oct 7, 2025
8043bd3
Merge branch 'master' into haw-v25
GreatSoshiant Oct 7, 2025
a2570d9
edit on inside arb page
GreatSoshiant Oct 7, 2025
56dece7
Merge branch 'haw-v25' of https://github.com/OffchainLabs/arbitrum-do…
GreatSoshiant Oct 7, 2025
923837a
captions added
GreatSoshiant Oct 8, 2025
d5c0af7
inside arbitrum page updated and deleted some diagrams
GreatSoshiant Oct 8, 2025
33242b0
Merge branch 'master' into haw-v25
GreatSoshiant Oct 9, 2025
8c2475e
Minor styling and readability edits
pete-vielhaber Oct 9, 2025
56c0e8d
Fixing some links
pete-vielhaber Oct 9, 2025
47bed83
Took the exisitng structure and content and turned it into a narrative
pete-vielhaber Oct 10, 2025
0d12892
Fixing broken links
pete-vielhaber Oct 10, 2025
9453533
Fixing broken link
pete-vielhaber Oct 10, 2025
5ba6c0b
Updating HAW-transaction-lifecycle diagram
pete-vielhaber Oct 17, 2025
5f8befa
Fixing diagram render issue
pete-vielhaber Oct 17, 2025
747da84
Merge branch 'master' into haw-v25
pete-vielhaber Oct 17, 2025
084354d
Fixing links from merge
pete-vielhaber Oct 17, 2025
f5b9c33
Adding redirects
pete-vielhaber Oct 17, 2025
b209b18
Editing redirects
pete-vielhaber Oct 17, 2025
69ef0c4
Adding more redirects
pete-vielhaber Oct 17, 2025
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
10 changes: 5 additions & 5 deletions docs/build-decentralized-apps/02-how-to-estimate-gas.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Head over to [the Stylus gas docs](/stylus/reference/opcode-hostio-pricing) for

:::

This how-to is intended for users and developers interested in understanding how gas operates in Arbitrum, how it's calculated, and how to estimate it before submitting transactions. More detailed information about these calculations can be found in this [Medium article](https://medium.com/offchainlabs/understanding-arbitrum-2-dimensional-fees-fd1d582596c9) and the [Gas and Fees](/how-arbitrum-works/09-gas-fees.mdx) page.
This how-to is intended for users and developers interested in understanding how gas operates in Arbitrum, how it's calculated, and how to estimate it before submitting transactions. More detailed information about these calculations can be found in this [Medium article](https://medium.com/offchainlabs/understanding-arbitrum-2-dimensional-fees-fd1d582596c9) and the [Gas and Fees](/how-arbitrum-works/deep-dives/gas-and-fees.mdx) page.

## Skip the formula, focus on practical know-how

Expand All @@ -22,7 +22,7 @@ Multiplying the value obtained from `eth_estimateGas` by the child chain gas pri

Alternatively, to obtain the gas limit for your transaction, you can call `NodeInterface.gasEstimateComponents()` and then use the first result, which is `gasEstimate`. Next, to find the total cost, you need to multiply this amount by the child chain gas price, which is available in the third result, `baseFee`.

Note that when working with parent to child chain messages (also known as [retryable tickets](/how-arbitrum-works/10-l1-to-l2-messaging.mdx)), you can use the function [`L1ToL2MessageGasEstimator.estimateAll()`](https://github.com/OffchainLabs/arbitrum-sdk/blob/main/src/lib/message/L1ToL2MessageGasEstimator.ts#L215) of the Arbitrum SDK or [`NodeInterface.estimateRetryableTicket()`](https://github.com/OffchainLabs/@@nitroRepositorySlug=nitro@@/blob/@@nitroVersionTag=v3.7.2@@/nodeInterface/NodeInterface.go#L120) to get all the gas information needed to send a successful transaction.
Note that when working with parent to child chain messages (also known as [retryable tickets](/how-arbitrum-works/deep-dives/l1-to-l2-messaging.mdx)), you can use the function [`L1ToL2MessageGasEstimator.estimateAll()`](https://github.com/OffchainLabs/arbitrum-sdk/blob/main/src/lib/message/L1ToL2MessageGasEstimator.ts#L215) of the Arbitrum SDK or [`NodeInterface.estimateRetryableTicket()`](https://github.com/OffchainLabs/@@nitroRepositorySlug=nitro@@/blob/@@nitroVersionTag=v3.6.8@@/nodeInterface/NodeInterface.go#L120) to get all the gas information needed to send a successful transaction.

## Breaking down the formula

Expand All @@ -36,7 +36,7 @@ As explained in the Medium article, the transaction fees to pay at any given mom
Transaction fees (TXFEES) = L2 Gas Price (P) * Gas Limit (G)
```

This Gas Limit includes the gas of the child chain computation and an additional buffer to cover the parent chain gas to be paid by the Sequencer when [posting the batch including this transaction on the parent chain](/how-arbitrum-works/03-sequencer.mdx).
This Gas Limit includes the gas of the child chain computation and an additional buffer to cover the parent chain gas to be paid by the Sequencer when [posting the batch including this transaction on the parent chain](/how-arbitrum-works/deep-dives/sequencer.mdx).

```
Gas Limit (G) = Gas used on L2 (L2G) + Extra Buffer for L1 cost (B)
Expand All @@ -47,7 +47,7 @@ This buffer takes into account the cost of posting the transaction, batched and
- L1S, which estimates the amount of data the transaction will take up in the batch by compressing the transaction with Brotli.
- L1P, which is the child chain's estimated view of the current parent chain's price of data (per byte), which the child chain dynamically adjusts over time.

More information is available [in this page](/how-arbitrum-works/09-gas-fees.mdx).
More information is available [in this page](/how-arbitrum-works/deep-dives/gas-and-fees.mdx).

```
L1 Estimated Cost (L1C) = L1 price per byte of data (L1P) * Size of data to be posted in bytes (L1S)
Expand Down Expand Up @@ -76,7 +76,7 @@ We'll use one resource available in Arbitrum: the [`NodeInterface`](/build-decen
- L1P (L1 estimated price per byte of data) ⇒ Estimated cost of posting 1 byte of data on the parent chain:
- Call `NodeInterface.GasEstimateComponents()`, get the fourth element `l1BaseFeeEstimate` and multiply it by 16.
- L1S (Size of data to be posted on L1, in bytes) ⇒ This will depend on the data of the transaction. Keep in mind that Arbitrum adds a fixed amount to this number to make up for the static part of the transaction, which is also posted on the parent chain (140 bytes). We can do a small calculation to obtain this value: call `NodeInterface.GasEstimateComponents()` take the second element, `gasEstimateForL1` (this is equivalent to `B` in our formula), multiply it by P and divide it by L1P.
- For Arbitrum Nova (AnyTrust), the size of the data is also a fixed value, as only the Data Availability Certificate (DAC) is posted on the parent chain, [as explained here](/how-arbitrum-works/08-anytrust-protocol.mdx#data-availability-certificates).
- For Arbitrum Nova (AnyTrust), the size of the data is also a fixed value, as only the Data Availability Certificate (DAC) is posted on the parent chain, [as explained here](/how-arbitrum-works/deep-dives/anytrust-protocol.mdx#data-availability-certificates).

:::note
For L1P and L1S, you can also call `NodeInterface.gasEstimateL1Component()` to get `l1BaseFeeEstimate` and `gasEstimateForL1`
Expand Down
8 changes: 4 additions & 4 deletions docs/build-decentralized-apps/03-public-chains.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ Arbitrum chains are child chain solutions built on top of the Ethereum blockchai

### Arbitrum One

**Arbitrum One** is a child chain Optimistic Rollup chain that implements the Arbitrum Rollup protocol and settles to Ethereum's parent chain. It lets you build high-performance Ethereum dApps with low transaction costs and Ethereum-grade security guarantees, introducing no additional trust assumptions. This is made possible by the [Nitro](/how-arbitrum-works/04-state-transition-function/04-modified-geth-on-arbitrum.mdx) technology stack, a "Geth-at-the-core" architecture that gives Arbitrum One (and Nova) advanced calldata compression, separate contexts for common execution and fault proving, Ethereum parent chain gas compatibility, and more.
**Arbitrum One** is a child chain Optimistic Rollup chain that implements the Arbitrum Rollup protocol and settles to Ethereum's parent chain. It lets you build high-performance Ethereum dApps with low transaction costs and Ethereum-grade security guarantees, introducing no additional trust assumptions. This is made possible by the [Nitro](/how-arbitrum-works/deep-dives/geth.mdx) technology stack, a "Geth-at-the-core" architecture that gives Arbitrum One (and Nova) advanced calldata compression, separate contexts for common execution and fault proving, Ethereum parent chain gas compatibility, and more.

### Arbitrum Nova

**Arbitrum Nova** is a high-performance alternative to Arbitrum One's chain. While Arbitrum One implements the purely trustless Rollup protocol, Arbitrum Nova implements the mostly trustless [AnyTrust](/how-arbitrum-works/08-anytrust-protocol.mdx) protocol. The key difference between Rollup and AnyTrust is that the AnyTrust protocol introduces an additional trust assumption in the form of a Data Availability Committee (DAC). This committee (detailed below) is responsible for expediting the process of storing, batching, and posting child chain transaction data to Ethereum's parent chain. This lets you use Arbitrum in scenarios that demand performance and affordability, while Arbitrum One is optimal for scenarios that demand Ethereum's pure trustlessness.
**Arbitrum Nova** is a high-performance alternative to Arbitrum One's chain. While Arbitrum One implements the purely trustless Rollup protocol, Arbitrum Nova implements the mostly trustless [AnyTrust](/how-arbitrum-works/deep-dives/anytrust-protocol.mdx) protocol. The key difference between Rollup and AnyTrust is that the AnyTrust protocol introduces an additional trust assumption in the form of a Data Availability Committee (DAC). This committee (detailed below) is responsible for expediting the process of storing, batching, and posting child chain transaction data to Ethereum's parent chain. This lets you use Arbitrum in scenarios that demand performance and affordability, while Arbitrum One is optimal for scenarios that demand Ethereum's pure trustlessness.

## What Arbitrum testnet chains are available?

Expand Down Expand Up @@ -58,11 +58,11 @@ Finally, Arbitrum Sepolia is a testnet chain. It's designed for testing purposes

### Nitro

Nitro is the technology that powers Arbitrum One, Arbitrum Nova (with AnyTrust configuration),and Arbitrum Sepolia. It's designed to offer high throughput and low cost, making it ideal for scaling Ethereum applications. Nitro is a major upgrade to the “Classic” stack, offering several improvements including advanced calldata compression, separate contexts for common execution and fault proving, Ethereum parent chain gas compatibility, and more. You can find more information about Nitro in [How Arbitrum works](/how-arbitrum-works/01-a-gentle-introduction.mdx).
Nitro is the technology that powers Arbitrum One, Arbitrum Nova (with AnyTrust configuration),and Arbitrum Sepolia. It's designed to offer high throughput and low cost, making it ideal for scaling Ethereum applications. Nitro is a major upgrade to the “Classic” stack, offering several improvements including advanced calldata compression, separate contexts for common execution and fault proving, Ethereum parent chain gas compatibility, and more. You can find more information about Nitro in [How Arbitrum works](/how-arbitrum-works/01-inside-arbitrum-nitro.mdx).

### AnyTrust (variant of Nitro)

AnyTrust is a variant of the Nitro technology stack that lowers costs by accepting a mild trust assumption. The AnyTrust protocol relies on an external Data Availability Committee (DAC) to store data and provide it on demand. The DAC has `N` members, of which AnyTrust assumes at least two are honest. Keeping the data offchain in the happy/common case means the system can charge the user significantly lower fees. You can find more information about AnyTrust in [Anytrust protocol](/how-arbitrum-works/08-anytrust-protocol.mdx).
AnyTrust is a variant of the Nitro technology stack that lowers costs by accepting a mild trust assumption. The AnyTrust protocol relies on an external Data Availability Committee (DAC) to store data and provide it on demand. The DAC has `N` members, of which AnyTrust assumes at least two are honest. Keeping the data offchain in the happy/common case means the system can charge the user significantly lower fees. You can find more information about AnyTrust in [Anytrust protocol](/how-arbitrum-works/deep-dives/anytrust-protocol.mdx).

### Classic (deprecated)

Expand Down
4 changes: 2 additions & 2 deletions docs/build-decentralized-apps/04-cross-chain-messaging.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ The Arbitrum protocol and related tooling makes it easy for developers to build

Arbitrary parent to child chain contract calls can be created via the Inbox's `createRetryableTicket` method; upon publishing the parent chain transaction, the child chain side will typically get included within minutes. Commonly, the child chain execution will automatically succeed, but if reverts, and it can be rexecuted via a call to the `redeem` method of the [`ArbRetryableTx`](/build-decentralized-apps/precompiles/02-reference.mdx#arbretryabletx) precompile.

For details and protocol specification, see [Parent to child chain messages](/how-arbitrum-works/10-l1-to-l2-messaging.mdx).
For details and protocol specification, see [Parent to child chain messages](/how-arbitrum-works/deep-dives/l1-to-l2-messaging.mdx).

For an example of retryable tickets in action, see the [`Greeter`](https://github.com/OffchainLabs/arbitrum-tutorials/tree/master/packages/greeter) tutorial, which uses the [Arbitrum SDK](../../sdk).

## Arbitrum-to-Ethereum messaging

Similarly, child chain contracts can send Arbitrary messages for execution on the parent chain. These are initiated via calls to the [`ArbSys`](/build-decentralized-apps/precompiles/02-reference.mdx#arbsys) precompile contract's `sendTxToL1` method. Upon confirmation (about one week later), they can execute by retrieving the relevant data via a call to `NodeInterface` contract's `constructOutboxProof` method, and then executing them via the `Outbox`'s `executeTransaction` method.

For details and protocol specification, see [Child to parent chain messages](/how-arbitrum-works/11-l2-to-l1-messaging.mdx).
For details and protocol specification, see [Child to parent chain messages](/how-arbitrum-works/deep-dives/l2-to-l1-messaging.mdx).

For a demo, see the [Outbox Tutorial](https://github.com/OffchainLabs/arbitrum-tutorials/tree/master/packages/outbox-execute).
Loading