MCPcopy Index your code
hub / github.com/OffchainLabs/nitro

github.com/OffchainLabs/nitro @v2025.01.21

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2025.01.21 ↗ · + Follow
6,172 symbols 25,142 edges 615 files 939 documented · 15%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Logo

Arbitrum Nitro

<a href="https://developer.arbitrum.io/"><strong>Next Generation Ethereum L2 Technology »</strong></a>

About Arbitrum Nitro

Logo

Nitro is the latest iteration of the Arbitrum technology. It is a fully integrated, complete layer 2 optimistic rollup system, including fraud proofs, the sequencer, the token bridges, advanced calldata compression, and more.

See the live docs-site here (or here for markdown docs source.)

See here for security audit reports.

The Nitro stack is built on several innovations. At its core is a new prover, which can do Arbitrum’s classic interactive fraud proofs over WASM code. That means the L2 Arbitrum engine can be written and compiled using standard languages and tools, replacing the custom-designed language and compiler used in previous Arbitrum versions. In normal execution, validators and nodes run the Nitro engine compiled to native code, switching to WASM if a fraud proof is needed. We compile the core of Geth, the EVM engine that practically defines the Ethereum standard, right into Arbitrum. So the previous custom-built EVM emulator is replaced by Geth, the most popular and well-supported Ethereum client.

The last piece of the stack is a slimmed-down version of our ArbOS component, rewritten in Go, which provides the rest of what’s needed to run an L2 chain: things like cross-chain communication, and a new and improved batching and compression system to minimize L1 costs.

Essentially, Nitro runs Geth at layer 2 on top of Ethereum, and can prove fraud over the core engine of Geth compiled to WASM.

Arbitrum One successfully migrated from the Classic Arbitrum stack onto Nitro on 8/31/22. (See state migration and dapp migration for more info).

License

Nitro is currently licensed under a Business Source License, similar to our friends at Uniswap and Aave, with an "Additional Use Grant" to ensure that everyone can have full comfort using and running nodes on all public Arbitrum chains.

The Additional Use Grant also permits the deployment of the Nitro software, in a permissionless fashion and without cost, as a new blockchain provided that the chain settles to either Arbitrum One or Arbitrum Nova.

For those that prefer to deploy the Nitro software either directly on Ethereum (i.e. an L2) or have it settle to another Layer-2 on top of Ethereum, the Arbitrum Expansion Program (the "AEP") was recently established. The AEP allows for the permissionless deployment in the aforementioned fashion provided that 10% of net revenue (as more fully described in the AEP) is contributed back to the Arbitrum community in accordance with the requirements of the AEP.

Contact

Discord - Arbitrum

Twitter: Arbitrum

Extension points exported contracts — how you extend this code

HistoryCommitmentCacher (Interface)
HistoryCommitmentCacher can retrieve history commitment hashes given lookup keys. [7 implementers]
staker/challenge-cache/cache.go
MeteredMachine (Interface)
Note: implementers may panic if uninstrumented [5 implementers]
arbitrator/prover/src/programs/meter.rs
DASReader (Interface)
(no doc) [11 implementers]
arbstate/daprovider/util.go
Closer (Interface)
(no doc) [23 implementers]
das/lifecycle.go
StorageService (Interface)
(no doc) [7 implementers]
das/storage_service.go
DataAvailabilityServiceWriter (Interface)
(no doc) [9 implementers]
das/das.go
QueueStorage (Interface)
Implements queue-alike storage that can - Insert item at specified index - Update item with the condition that existing [4 …
arbnode/dataposter/data_poster.go
AddressReader (Interface)
(no doc) [6 implementers]
statetransfer/interface.go

Core symbols most depended-on inside this repo

Error
called by 534
broadcaster/broadcaster_test.go
String
called by 271
arbnode/resourcemanager/resource_management.go
Bytes
called by 254
cmd/dbconv/dbconv/stats.go
len
called by 210
arbitrator/prover/src/merkle.rs
into
called by 198
arbitrator/prover/src/programs/meter.rs
panic
called by 188
arbitrator/wasm-libraries/wasi-stub/src/lib.rs
Hash
called by 172
util/merkletree/merkleTree.go
Add
called by 143
util/containers/lru.go

Shape

Method 2,870
Function 2,395
Struct 572
Class 120
Interface 99
TypeAlias 44
Enum 41
FuncType 31

Languages

Go78%
Rust21%
C1%
Python1%

Modules by API surface

arbos/storage/storage.go106 symbols
arbitrator/prover/src/machine.rs102 symbols
system_tests/common_test.go85 symbols
util/arbmath/math.go63 symbols
system_tests/program_test.go62 symbols
arbnode/batch_poster.go57 symbols
arbitrator/stylus/src/host.rs57 symbols
arbitrator/wasm-libraries/user-host-trait/src/lib.rs53 symbols
staker/staker.go52 symbols
util/merkletree/merkleTree.go51 symbols
staker/block_validator.go51 symbols
arbnode/transaction_streamer.go48 symbols

For agents

$ claude mcp add nitro \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact