# Arbitrum: Basic Features, Technical Details and Differences from Ethereum

By [Officer's Blog](https://paragraph.com/@officercia) · 2023-06-16

---

### Greetings dear readers!

We continue our series of educational articles and today we’ll look at some professional tips in the auditing smart contracts on [**Arbitrum**](https://arbitrum.io/) blockchain.

In this article we will focus only on those aspects that can be really useful for [auditing](https://github.com/protofire/solhint) [**Arbitrum**](https://arbitrum.io/)**\-based** projects!

> Everything you see below is based on our personal experience!

And today, dear readers, it will be made available to you! We also encourage you to read our earlier article, which contains a wealth of auditors’ and developers’ useful advice:

[https://officercia.mirror.xyz/XCAcCsZ2EU6Aviieqn\_FfXmUnMNc9Z4gySuDTfJlLv4](https://officercia.mirror.xyz/XCAcCsZ2EU6Aviieqn_FfXmUnMNc9Z4gySuDTfJlLv4)

First and foremost, we would like to express our sincere gratitude to the creators of [Arbitrum](https://medium.com/u/dea75b5f2379?source=post_page-----8edaf06e727f--------------------------------) and its ecosystem projects, everyone who supports it, the Authors of all the resource materials, and of course our brilliant auditors who have helped us by revealing much-needed information and lifting the curtain of secrecy!

We can confidently say that such tips can be read publicly in a few places, and our [blog](http://blog.pessimistic.io/) is one of those places. The following will be our observations — only dry facts for auditors, tricks and the best life-hacks shared by our best auditors.

**Let’s get started!** By the way, there are some vacant slots now so if your project needs an audit — feel free to [write](http://pessimistic.io/) to us, visit our public reports page [here](https://github.com/pessimistic-io/audits).

* * *

I — Introduction to Arbitrum
----------------------------

![](https://storage.googleapis.com/papyrus_images/40be1dae25f2129e139b1c388e8f87f450a78c2f464499bf5e1be1647009b92f.webp)

Essentially speaking, [Arbitrum](https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-kalodner.pdf) is a **Layer 2** network on top of **Ethereum mainnet**, with much faster and cheaper [transactions](https://developer.arbitrum.io/tx-lifecycle). It was created by Offchain Labs. The company raised $120 million in a Series B funding round in September 2021.

**Here are some statistics:**

*   _Arbitrum average block time: ~0.26s;_
    
*   _Ethereum average block time: ~12.1s;_
    
*   _Arbitrum average transaction cost: $0.2–0.3._
    

The Ethereum Virtual Machine ([EVM](https://evm.tools/)) is also [supported by Arbitrum](https://mirror.xyz/supersabbir.eth/X0wyLVZ-pWvk9LjYUM9m-OO2Y0zaKwA8o4bZxrlYaNo), allowing Ethereum DeFi developers to integrate their decentralized applications ([dapps](https://dapp.tools/)) with [Arbitrum](https://defiprime.com/arbitrum) with **almost** no modifications required!

Please review the following framework, which is recommended by our team, in order to better understand what we will discuss next and to more clearly differentiate L2 from L1:

[

Evaluating Ethereum L2 Scaling Solutions: A Comparison Framework
----------------------------------------------------------------

We provide a guide for comparison of various alternative Ethereum Layer-2 scaling solutions across a number of factors. ZK rollup, optimistic rollup, sidechains, payment channels, plasma, validium: which one is right for you?

https://blog.matter-labs.io

![](https://storage.googleapis.com/papyrus_images/0b97a2408c2d785ec14d1839014ca308a9d3a09237aced5a6c34289919d5ffbf.png)

](https://blog.matter-labs.io/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955)

**_Let’s analyze why_** [**_Arbitrum_**](https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-kalodner.pdf) **_achieves such results!_**

### Optimistic Rollup

[Arbitrum](https://www.alchemy.com/list-of/web3-security-tools-on-arbitrum) relies on the [**Optimistic Rollup**](https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/) technology (used to scale Ethereum). A bundle of transactions from L2 (**Arbitrum**) is formed into a batch and sent to L1 (Ethereum), where it is then approved by validators.

Batch sending and validation are designed so that Ethereum nodes are not executing every L2 [transaction](http://offchain.medium.com/time-boost-a-new-transaction-ordering-policy-for-arbitrum-5b3066382d62) as in the case of L1, so throughput is much higher and [transactions](https://developer.arbitrum.io/tx-lifecycle) are cheaper.

Currently, both [Arbitrum](https://medium.com/u/dea75b5f2379?source=post_page-----8edaf06e727f--------------------------------) and [Optimism](https://www.optimism.io/) operate with a single centralized [Sequencer](https://developer.arbitrum.io/sequencer) that is in charge of ordering all the [transactions](https://developer.arbitrum.io/tx-lifecycle) it receives and is assumed to work honestly in a first-come, first-serve manner. [With it, there are plans](https://jumpcrypto.com/writing/bridging-and-finality-op-and-arb/) to decentralize the sequencing role with whitelisted or community-voted L2 nodes:

[

Time boost: a new transaction ordering policy for Arbitrum
----------------------------------------------------------

Time boost: a new transaction ordering policy for Arbitrum \[Note (June 2024): This post is out-of-date, and the team's thinking has evolved since it was written. We're keeping it here to preserve ...

https://medium.com

![](https://storage.googleapis.com/papyrus_images/f8d0634a78adf29ea3385fdb92c934f5679213d6379d285e1fa2f25be00b1711.png)

](https://offchain.medium.com/time-boost-a-new-transaction-ordering-policy-for-arbitrum-5b3066382d62)

Client software [can do remote procedure](http://mirror.xyz/0xBE592D533a6D54347057C668c8aBFD565B945bee/R37LzZ_qYZ3t8hZ1gGo02NQv75js86pTVTw_J4hQjLE) calls ([RPCs](https://www.quicknode.com/docs/arbitrum)) to an [Arbitrum node](https://www.alchemy.com/overviews/arbitrum-node), using the standard [Ethereum API](https://ethereum.org/en/developers/docs/apis/backend/), to interact with an [Arbitrum](https://medium.com/u/dea75b5f2379?source=post_page-----8edaf06e727f--------------------------------) chain.

Nodes will forward your transactions to the **Arbitrum** [**Sequencer**](https://offchain.medium.com/todays-arbitrum-sequencer-downtime-what-happened-6382a3066fbc)**,** which will report [transaction](https://docs.chain.link/data-feeds/price-feeds/addresses/?network=arbitrum) results just as an [Ethereum node](https://ethereum.org/en/developers/docs/nodes-and-clients/) would–but much faster, typically around one second.

### Gas in Arbitrum

The volume of gas per [transaction](https://developer.arbitrum.io/tx-lifecycle) in Arbitrum consists of two components:

**L1 Gas:**

*   Paid to [cover](https://developer.arbitrum.io/faqs/gas-faqs#q-gas) the future batches on L1. It is the majority of the commission and depends on the **calldata** size of the transaction and the **calldata** value in L1.
    
*   At the time of the [transaction](https://arbiscan.io/), you can only [estimate its approximate](http://developer.arbitrum.io/learn-more/faq) ratio to the size of the future batches. In other words, the L1 component is meant to compensate the Sequencer for the cost of posting transactions on L1 (but no more). (See [L1 Pricing](https://developer.arbitrum.io/arbos/l1-pricing).)
    
*   In addition to the [three transaction types](https://ethereum.org/en/developers/docs/transactions/#types-of-transactions) currently supported on mainnet, Arbitrum adds additional types listed below and [documented in full detail here](https://developer.arbitrum.io/arbos/geth#transaction-types).
    

**L2 Gas:**

*   Works similarly to commissions in Ethereum Mainnet — it is a transaction execution fee on L2. The L2 component covers the cost of operating the L2 chain; it uses Geth for gas [calculation](https://developer.arbitrum.io/faqs/gas-faqs#q-gas) and thus behaves nearly identically to L1 Ethereum.
    
*   One difference is that unlike on Ethereum, Arbitrum chains enforce a gas price floor, currently 0.1 gwei on Arbitrum One and 0.01 gwei on Nova (See [Gas](https://developer.arbitrum.io/arbos/gas)). L2 Gas price adjusts responsively to chain congestion, ala EIP 1559. See [2-D fees](https://medium.com/offchainlabs/understanding-arbitrum-2-dimensional-fees-fd1d582596c9) for more information on this topic!
    

[https://cointelegraph.com/learn/arbitrum-the-next-generation-layer-2-for-ethereum/amp](https://cointelegraph.com/learn/arbitrum-the-next-generation-layer-2-for-ethereum/amp)

* * *

II — Differences from Ethereum
------------------------------

Because the main obstacles that the auditor may have while auditing projects on [Arbitrum](https://developer.arbitrum.io/tx-lifecycle) are logical, the first [suggestion](https://developer.arbitrum.io/arbitrum-ethereum-differences) for any firm will be in competent development, which results in solid documentation and reliable tests.

**_It sounds too simple to be true, but be sure it works and it only proves itself over time!_**

[https://officercia.mirror.xyz/XCAcCsZ2EU6Aviieqn\_FfXmUnMNc9Z4gySuDTfJlLv4](https://officercia.mirror.xyz/XCAcCsZ2EU6Aviieqn_FfXmUnMNc9Z4gySuDTfJlLv4)

### Checklist & Tips

We will not go into detail in this article because we assume you, dear reader, already have a [sufficient](https://trufflesuite.com/boxes/arbitrum/) understanding of the [Arbitrum](https://developer.arbitrum.io/tx-lifecycle) ecosystem, so we strongly advise you to visit their knowledge-base and study the project [documentation](https://notes.ethereum.org/@MarioHavel/SkQ1l9y7t) for a better understanding:

*   _In the_ [**_Arbitrum_**](https://developer.arbitrum.io/tx-lifecycle) _network,_ **_block.number_** _will return the approximate number in L1 at the time the sequencer receives the L2 transaction. To get the L2 block number (L2 has its own block numbers), you need to use_ **_ArbSys.arbBlockNumber()_**
    
*   **_block.timestamp_** is similar in behavior to L1, but two different blocks in L2 can have the same **block.timestamp,** unlike in L1. For details, see [Block Numbers and Time](https://developer.arbitrum.io/time).
    
*   \*Since the [**PUSH0** opcode](https://medium.com/coinmonks/push0-opcode-a-significant-update-in-the-latest-solidity-version-0-8-20-ea028668028a) is not yet supported, when using the **0.8.20 compiler** and above you need to use an EVM version lower in block than the [Shanghai update](https://cryptobriefing.com/ethereums-shanghai-upgrade-is-live/). Compilers starting from **0.8.19** and below are fully supported.\*
    
*   _Arbitrum chains include a number of special precompiles not present on Ethereum; see_ [_Common Precompiles_](https://developer.arbitrum.io/arbos/common-precompiles) _/_ [_All Precompiles_](https://developer.arbitrum.io/arbos/precompiles)_. Of particular note is the_ [_ArbAddressTable_](https://developer.arbitrum.io/arbos/precompiles#ArbAddressTable)_, which allows contracts to map addresses to integers, saving calldata / fees for addresses expected to be reused as_ [_parameters_](https://developer.arbitrum.io/arbitrum-ethereum-differences)_; see_ [_Arb Address Table tutorial_](https://github.com/OffchainLabs/arbitrum-tutorials/tree/master/packages/address-table) _for example usage._
    
*   _You_ [_can_](https://developer.arbitrum.io/arbitrum-ethereum-differences) _deploy Solidity contracts onto_ [_Arbitrum_](https://trufflesuite.com/boxes/arbitrum/) _just like you do Ethereum; there are only a few minor differences in behavior. See_ [_Solidity Support_](https://developer.arbitrum.io/solidity-support) _for details._
    
*   **_Check out:_** [mainnet transaction receipt fields](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt), [L1 to L2 Messaging](https://developer.arbitrum.io/arbos/l1-to-l2-messaging), [mainnet block fields](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash).
    
*   _Arbitrum’s L2 block hashes should not be relied on as a secure source of_ [_randomness_](https://blog.pessimistic.io/oracles-entropy-chainlink-vrf-secure-integration-tips-13c27d8fde48) _(see_ [_‘blockhash(x);_](https://developer.arbitrum.io/solidity-support)_) Also check out_ [_this resource &_](https://docs.chain.link/data-feeds/price-feeds/addresses/?network=arbitrum) _— tend to use_ [_Chainlink_](https://blog.chain.link/how-to-use-chainlink-price-feeds-on-arbitrum/)_!_
    

…And a few other [minor differences](https://developer.arbitrum.io/arbitrum-ethereum-differences)! We will provide even more details in subsequent articles, but for now, let’s continue with our initial evaluation.

### Arbitrum’s Primary Issues

[One of the primary issues](https://mirror.xyz/0x14C44CBA1C67D505f8274B5d3ECE683ef0Aa8707/KW18QzMrK9kjNus9kONNkqc_rth_b2q_f7Ks_EiRFcg) with [Arbitrum](https://developer.arbitrum.io/tx-lifecycle) is its high gas costs for users when they withdraw funds from the [Arbitrum](https://github.com/OffchainLabs/nitro-contracts) network to the [Ethereum mainnet](https://etherscan.io/).

These gas costs are due to the fact that [Arbitrum](https://developer.arbitrum.io/tx-lifecycle) uses a rollup architecture, which requires users to pay gas fees to transfer assets between the rollup and the [**Ethereum mainnet**](https://etherscan.io/)**:**

[https://mirror.xyz/0xd68543e607bB645f4809e8d129D5876dd73b2032/SA9sd7h\_zgSn\_9KWG57RmQ3BwhsolxOfvMxnXLCDRwc](https://mirror.xyz/0xd68543e607bB645f4809e8d129D5876dd73b2032/SA9sd7h_zgSn_9KWG57RmQ3BwhsolxOfvMxnXLCDRwc)

Another challenge that [Arbitrum](https://notes.ethereum.org/@MarioHavel/SkQ1l9y7t) has faced is network congestion, which has resulted in delayed transaction processing times and [higher](https://mirror.xyz/0x14C44CBA1C67D505f8274B5d3ECE683ef0Aa8707/KW18QzMrK9kjNus9kONNkqc_rth_b2q_f7Ks_EiRFcg) gas fees. This issue is not unique to [Arbitrum](https://github.com/OffchainLabs/nitro-contracts), as it is a [common problem](https://mirror.xyz/0xd68543e607bB645f4809e8d129D5876dd73b2032/SA9sd7h_zgSn_9KWG57RmQ3BwhsolxOfvMxnXLCDRwc) for many Layer 2 scaling solutions that rely on Ethereum’s network to function.

Since [Arbitrum’s](https://www.alchemy.com/list-of/blockchain-security-tools-on-arbitrum) system is currently run by a centralized team of developers, there have also been some worries about its centralization. [Even though](https://mirror.xyz/0xbb0d7786A4C46F95999107fa4482f6797d0be95e/IG_nDO86B9bc1Z8DPs00U7beRXyeJioKFD3wN0jpJ9U) this isn’t necessarily a problem in and of itself, some people are worried about the possibility of censorship or other types of network control.

Despite these challenges, [Arbitrum](https://mirror.xyz/0xbb0d7786A4C46F95999107fa4482f6797d0be95e/IG_nDO86B9bc1Z8DPs00U7beRXyeJioKFD3wN0jpJ9U) has continued to gain traction as a scaling solution for Ethereum, and its developers are actively working to address these issues and improve the network’s performance and usability!

* * *

III — Resources & Tools
-----------------------

### Main Resources:

*   [Bridging and Finality: Optimism and Arbitrum](https://jumpcrypto.com/writing/bridging-and-finality-op-and-arb/)
    
*   [developer.arbitrum.io](https://developer.arbitrum.io/learn-more/faq)
    
*   [Arbitrum CLI Tools](https://github.com/OffchainLabs/arbitrum-cli-tools)
    
*   [How to deploy a smart contract on Arbitrum](https://blog.thirdweb.com/guides/how-to-deploy-a-smart-contract-on-arbitrum/)
    

### Research:

*   [Arbitrum: Scalable, private smart contracts](https://www.usenix.org/system/files/conference/usenixsecurity18/sec18-kalodner.pdf)
    
*   [Building Scalable Decentralized Payment Systems](https://arxiv.org/abs/1904.06441)
    
*   [Agatha: Smart Contract for DNN Computation](https://arxiv.org/abs/2105.04919)
    
*   [Lissy: Experimenting with on-chain order books](https://arxiv.org/abs/2101.06291)
    

### External:

*   [Arbitrum: Quick Dev Notes](https://notes.ethereum.org/@MarioHavel/SkQ1l9y7t)
    
*   [Ethereum scalability problem, what is the difference between Arbitrum and Optimism and why you should pay attention to zk rollups](https://mirror.xyz/0xd68543e607bB645f4809e8d129D5876dd73b2032/SA9sd7h_zgSn_9KWG57RmQ3BwhsolxOfvMxnXLCDRwc)
    
*   [Arbitrum’s problems](https://mirror.xyz/0x14C44CBA1C67D505f8274B5d3ECE683ef0Aa8707/KW18QzMrK9kjNus9kONNkqc_rth_b2q_f7Ks_EiRFcg)
    
*   [Arbitrum Nova](https://mirror.xyz/0xbb0d7786A4C46F95999107fa4482f6797d0be95e/IG_nDO86B9bc1Z8DPs00U7beRXyeJioKFD3wN0jpJ9U)
    

### MEV:

> _There is no mempool on the Arbitrum (keep in mind the centralised Sequencer) so there is nothing to_ [_front-run_](http://telegra.ph/MEV-PACK-06-10)_, but in our opinion this does not negate the possibility for_ [_MEV_](https://frontier.tech/exploration-of-mev-latencies) _to exist here!_

*   [Arbitrum Possible Frontrun Infos — MEV data](https://dune.com/queries/2423276)
    
*   [![User Avatar](https://storage.googleapis.com/papyrus_images/df5ea48f588e641a659cab5d27462fe90cd0810e57853501fbcff7bc3f18125a.jpg)](https://twitter.com/officer_cia)
    
    [Vladimir S. | Officer's Notes](https://twitter.com/officer_cia)
    
    [@officer\_cia](https://twitter.com/officer_cia)
    
    [![Twitter Logo](https://paragraph.com/editor/twitter/logo.png)](https://twitter.com/officer_cia/status/1637983015186976768)
    
    Gm! A lot of you DMed me and asked if I can help with recovering arb airdrops from the never-ending compromised wallets.  
      
    Well, first of all, there are actually no mempool for bots to frontrun (poor MEV).  
      
    Secondly, Arbitrum currently has a centralized sequencer and whitelisted
    
    [![User Avatar](https://storage.googleapis.com/papyrus_images/df5ea48f588e641a659cab5d27462fe90cd0810e57853501fbcff7bc3f18125a.jpg)](https://twitter.com/officer_cia)
    
    [Vladimir S. | Officer's Notes](https://twitter.com/officer_cia)
    
    [@officer\_cia](https://twitter.com/officer_cia)
    
    [![Twitter Logo](https://paragraph.com/editor/twitter/logo.png)](https://twitter.com/officer_cia/status/1620232447802867712)
    
    One amazing researcher made this simple [flashbots.net](https://t.co/PYcRu1vTI1) bundler app to help people with white-hat recoveries of compromised accounts:  
      
    • [flashbots-bundler.surge.sh](https://t.co/LRB3iIUWYM)  
      
    See the thread below ![⬇️](https://abs-0.twimg.com/emoji/v2/72x72/2b07.png)
    
     [![Like Icon](https://paragraph.com/editor/twitter/heart.png) 34](https://twitter.com/officer_cia/status/1637983015186976768)[
    
    8:02 PM • Mar 20, 2023
    
    ](https://twitter.com/officer_cia/status/1637983015186976768)
    
*   [L2 MEV Breakdown](https://taiko.mirror.xyz/VjNjFws6OOVez5YCDMwjy4BUiDqZBHYDvcW4-JZGDkc)
    
*   [MEV.wiki: Arbitrum offchain-labs](https://www.mev.wiki/solutions/mev-minimization/arbitrum-offchain-labs)
    

* * *

We hope that this article was informative and useful for you! Thank you for reading! What instruments should we review? What would you be interested in reading about in our [blog](http://blog.pessimistic.io/)?

[

GitHub - pessimistic-io/audits: Public reports of performed audits
------------------------------------------------------------------

Public reports of performed audits. Contribute to pessimistic-io/audits development by creating an account on GitHub.

https://github.com

![](https://storage.googleapis.com/papyrus_images/e4d916061c683c67783a68f3f0bd016b27e571706427c55de3502e9defc75293.png)

](https://github.com/pessimistic-io/audits)

If you still have questions, please feel free to ask! We will be happy to answer every question you have! The best answers and questions may be included in the next [blog](https://blog.pessimistic.io/) post!

### Stay Safe!

---

*Originally published on [Officer's Blog](https://paragraph.com/@officercia/arbitrum-basic-features-technical-details-and-differences-from-ethereum)*
