Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
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
28 changes: 14 additions & 14 deletions docs/build-decentralized-apps/01-quickstart-solidity-remix.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Head over to [the Stylus quickstart](/stylus/quickstart) if you'd like to use Ru

:::

This quickstart is for web developers who want to start building **decentralized applications** (dApps) using <a data-quicklook-from='arbitrum'>Arbitrum</a>. It makes no assumptions about your prior experience with Ethereum, Arbitrum, or Solidity. Familiarity with Javascript and yarn is expected. If you're new to Ethereum, consider studying the [Ethereum documentation](https://ethereum.org/en/developers/docs/) before proceeding.
This quickstart is for web developers who want to start building **decentralized applications** using <a data-quicklook-from='arbitrum'>Arbitrum</a>. It makes no assumptions about your prior experience with Ethereum, Arbitrum, or Solidity. Familiarity with Javascript and yarn is expected. If you're new to Ethereum, consider studying the [Ethereum documentation](https://ethereum.org/en/developers/docs/) before proceeding.

import CustomDetails from '@site/src/components/CustomDetails';
import { VendingMachine } from '@site/src/components/VendingMachine/VendingMachine';
Expand Down Expand Up @@ -85,15 +85,15 @@ We'll address any remaining dependencies as we go.
- The data within Ethereum's blockchain data structure changes one transaction at a time.
- <a data-quicklook-from="smart-contract">Smart contracts</a> are small programs that execute transactions
according to predefined rules. Ethereum's nodes host and execute smart contracts.
- You can use smart contracts to build decentralized apps (dApps) that use Ethereum's network to process transactions and store data. Think of smart contracts as your dApp's backend
- DApps let users carry their data and identity between applications without trusting centralized service providers.
- People who run Ethereum validator nodes[^3] can earn `ETH` for processing and validating transactions on behalf of users and dApps.
- You can use smart contracts to build decentralized apps that use Ethereum's network to process transactions and store data. Think of smart contracts as your app's backend
- Apps let users carry their data and identity between applications without trusting centralized service providers.
- People who run Ethereum validator nodes[^3] can earn `ETH` for processing and validating transactions on behalf of users and apps.
- These transactions can be expensive when the network is under heavy load.
- **Arbitrum**
- Arbitrum is a suite of child chain scaling solutions for dApp developers.
- Arbitrum is a suite of child chain scaling solutions for app developers.
- <a data-quicklook-from="arbitrum-one">Arbitrum One</a> is a child chain that implements the
<a data-quicklook-from="arbitrum-rollup-protocol">Arbitrum Rollup protocol</a>.
- You can use Arbitrum One to build user-friendly dApps with high throughput, low latency, and low transaction costs while inheriting Ethereum's high-security standards[^4].
- You can use Arbitrum One to build user-friendly apps with high throughput, low latency, and low transaction costs while inheriting Ethereum's high-security standards[^4].

<!-- Note: add simple diagrams representing smart contracts development cycle -\-> -->

Expand Down Expand Up @@ -224,7 +224,7 @@ Let's first add our smart contract to Remix following these steps:

<CustomDetails summary="File explorer > Workspaces > Create blank">
<ImageZoom
src="/img/dapps-remix-create-blank-project-2025-01-07.gif"
src="/img/apps-remix-create-blank-project-2025-01-07.gif"
alt=""
className="img-600px"
/>
Expand All @@ -236,7 +236,7 @@ Let's first add our smart contract to Remix following these steps:

<CustomDetails summary="Select vending machine contract > Click compile menu > Compile">
<ImageZoom
src="/img/dapps-remix-paste-vending-machine-contract-2025-01-07.gif"
src="/img/apps-remix-paste-vending-machine-contract-2025-01-07.gif"
alt=""
className="img-600px"
/>
Expand All @@ -247,7 +247,7 @@ Let's first add our smart contract to Remix following these steps:
#### 5. Compile your contract in Remix

<CustomDetails summary="Select vending machine contract > Click compile menu > Compile">
<ImageZoom src="/img/dapps-remix-compile-contract-2025-01-07.gif" alt="" className="img-600px" />
<ImageZoom src="/img/apps-remix-compile-contract-2025-01-07.gif" alt="" className="img-600px" />
</CustomDetails>

<VanillaAdmonition type="note">
Expand Down Expand Up @@ -344,13 +344,13 @@ Next, click Metamask's network selector dropdown and click the **Add Network** b
- Currency Symbol: `ETH`

<CustomDetails summary="Add Localhost 8545 to Metamask">
<ImageZoom src="/img/dapps-metamask-add-localhost-2025-01-13.png" alt="" className="img-600px" />
<ImageZoom src="/img/apps-metamask-add-localhost-2025-01-13.png" alt="" className="img-600px" />
</CustomDetails>

Your wallet won't have a balance on your local testnet's node, but you can import one of the test accounts into Metamask to access to 10,000 testnet `ETH`. Copy the private key of one of the test accounts (it works with or without the `0x` prefix, so e.g., `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80` or `ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80`) and import it into Metamask. Metamask will ask you if you want to connect this new account to Remix, to which you should answer "yes":

<ImageZoom
src="/img/dapps-quickstart-import-metamask.png"
src="/img/apps-quickstart-import-metamask.png"
alt="Connect Metamask to Localhost 8545"
className="img-600px"
/>
Expand All @@ -372,7 +372,7 @@ As we interact with our cupcake vending machine, we'll use Metamask's network se
In the last step, we'll connect Remix to Metamask so we can deploy our smart contract to the local chain using Remix.

<CustomDetails summary="Connect remix to Metamask">
<ImageZoom src="/img/dapps-remix-connect-metamask-2025-01-13.gif" alt="" className="img-600px" />
<ImageZoom src="/img/apps-remix-connect-metamask-2025-01-13.gif" alt="" className="img-600px" />
</CustomDetails>

At this point, we're ready to deploy our smart contract to any chain we want.
Expand All @@ -384,7 +384,7 @@ At this point, we're ready to deploy our smart contract to any chain we want.

<CustomDetails summary="Deploy the VendingMachine contract to the Localhost network">
<ImageZoom
src="/img/dapps-remix-deploy-to-local-chain-2025-01-14.gif"
src="/img/apps-remix-deploy-to-local-chain-2025-01-14.gif"
alt=""
className="img-600px"
/>
Expand All @@ -399,7 +399,7 @@ Then copy and paste your **contract address** below and click **Get cupcake!**.
Our first `VendingMachine` is labeled "Web2" because it demonstrates traditional client-server web application architecture: the back-end lives in a centralized network of servers.

<ImageZoom
src="/img/dapps-quickstart-vending-machine-architecture.png"
src="/img/apps-quickstart-vending-machine-architecture.png"
alt="Architecture diagram"
className="img-600px"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ content_type: concept
displayed_sidebar: buildAppsSidebar
---

Arbitrum's design is to be as compatible and consistent with Ethereum as possible, from its high-level RPCs to its low-level bytecode and everything in between. <a data-quicklook-from="dapp">Decentralized app (dApp)</a> developers with experience building on Ethereum will likely find that little to no new specific knowledge is required to build on Arbitrum.
Arbitrum's design is to be as compatible and consistent with Ethereum as possible, from its high-level RPCs to its low-level bytecode and everything in between. <a data-quicklook-from="dapp">Decentralized app</a> developers with experience building on Ethereum will likely find that little to no new specific knowledge is required to build on Arbitrum.

This article outlines the key differences, benefits, and potential pitfalls that devs should be aware of when working with Arbitrum. This first page serves as an outline, with links to the relevant pages.

Expand Down
4 changes: 2 additions & 2 deletions docs/build-decentralized-apps/oracles/01-overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ Oracles can be classified based on their source, direction of information, trust

Push oracles proactively provide data to smart contracts without being explicitly requested. When a specified event or condition occurs, the push oracle triggers the smart contract with the relevant data. For example, a push oracle might send weather data to a smart contract once the temperature reaches a certain threshold.

<ImageZoom src="/img/dapps-push-oracle.svg" alt="Push oracle" className="img-600px" />
<ImageZoom src="/img/apps-push-oracle.svg" alt="Push oracle" className="img-600px" />

### How do pull oracles work?

Pull oracles require smart contracts to request data explicitly. A smart contract sends a query to the oracle, retrieving and relaying the requested information to the contract. For example, a smart contract might request the current price of a specific digital asset from a pull oracle.

<ImageZoom src="/img/dapps-pull-oracle.svg" alt="Pull oracle" className="img-600px" />
<ImageZoom src="/img/apps-pull-oracle.svg" alt="Pull oracle" className="img-600px" />

### Use cases for oracles

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ If the transaction comes from a `7702-enabled account`, the destination address

The following diagram depicts the process that funds follow during a deposit operation.

<ImageZoom src="/img/dapps-depositing-ether.svg" alt="Depositing Ether" className="img-600px" />
<ImageZoom src="/img/apps-depositing-ether.svg" alt="Depositing Ether" className="img-600px" />

Regarding the parent chain, all deposited funds are held in the Arbitrum Bridge contract. Once finalized, the `ETH` becomes available on the L2 at the aliased or specified address, depending on the sender type.

Expand All @@ -46,4 +46,4 @@ Upon withdrawal, the Ether balance is burned on the Arbitrum side and will later

The following diagram depicts the process that funds follow during a withdrawal operation.

<ImageZoom src="/img/dapps-withdrawing-ether.svg" alt="Withdrawing Ether" className="img-600px" />
<ImageZoom src="/img/apps-withdrawing-ether.svg" alt="Withdrawing Ether" className="img-600px" />
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,15 @@ Our architecture consists of three types of contracts:
2. **Gateways**: Pairs of contracts (one on the parent chain, one on the child chain) that implement a particular type of cross-chain asset bridging.
3. **Routers**: Exactly two contracts (one on the parent chain, one on the child chain) that route each asset to its designated gateway.

<ImageZoom src="/img/dapps-gatewayUML.svg" alt="" className="img-600px" />
<ImageZoom src="/img/apps-gatewayUML.svg" alt="" className="img-600px" />

All Ethereum-to-Arbitrum token transfers are initiated via the router contract on the parent chain, specifically the `L1GatewayRouter` contract. `L1GatewayRouter` forwards the token's deposit call to the appropriate gateway contract on the parent chain, the `L1ArbitrumGateway` contract. `L1GatewayRouter` is responsible for mapping the parent chain token addresses to L1Gateway contracts, thus acting as a parent/child chain address oracle and ensuring each token corresponds to only one gateway. The `L1ArbitrumGateway` then communicates to its counterpart gateway contract on the child chain, the `L2ArbitrumGateway` contract (typically/expectedly via [retryable tickets](/how-arbitrum-works/10-l1-to-l2-messaging.mdx)).

<ImageZoom src="/img/dapps-bridge_deposits.png" alt="" className="img-600px" />
<ImageZoom src="/img/apps-bridge_deposits.png" alt="" className="img-600px" />

Similarly, Arbitrum-to-Ethereum transfers initiate via the router contract on the child chain, specifically the `L2GatewayRouter` contract, which in turn calls the token's gateway contract on the child chain. This `L2ArbitrumGateway` contract in turn communicates to its corresponding gateway contract on the parent chain, the `L1ArbitrumGateway` contract (typically/expectedly via [sending child-to-parent messages to the outbox](/how-arbitrum-works/11-l2-to-l1-messaging.mdx)).

<ImageZoom src="/img/dapps-bridge_withdrawals.png" alt="" className="img-600px" />
<ImageZoom src="/img/apps-bridge_withdrawals.png" alt="" className="img-600px" />

For any given gateway pairing, we require that calls initiate through the corresponding router (`L1GatewayRouter` or `L2GatewayRouter`), and that the gateways conform to the [`TokenGateway`](https://github.com/OffchainLabs/token-bridge-contracts/blob/main/contracts/tokenbridge/libraries/gateway/TokenGateway.sol) interfaces; the `TokenGateway` interfaces should be flexible and extensible enough to support any bridging functionality a particular token may require.

Expand Down
4 changes: 2 additions & 2 deletions docs/for-devs/oracles/api3/api3.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ sidebar_label: 'API3'
description: 'Learn how to query a price feed for your smart contract.'
author: GreatSoshiant
sme: GreatSoshiant
user_story: As an Arbitrum developer, I want to learn how to use oracles in my dApp.
user_story: As an Arbitrum developer, I want to learn how to use oracles in my app.
content_type: get-started
---

[API3](https://api3.org/) is a collaborative project to deliver price feeds to smart contract platforms in a decentralized and trust-minimized way. The Price feeds provided by API3 allow dapps to regain lost value with Oracle Extractable Value built in to the price feed allowing the ability to earn additional revenue for your dapp.
[API3](https://api3.org/) is a collaborative project to deliver price feeds to smart contract platforms in a decentralized and trust-minimized way. The Price feeds provided by API3 allow apps to regain lost value with Oracle Extractable Value built in to the price feed allowing the ability to earn additional revenue for your app.

### Querying the price of `ARB` through API3

Expand Down
4 changes: 2 additions & 2 deletions docs/for-devs/oracles/chainlink/chainlink.mdx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
id: 'chainlink'
title: 'Chainlink'
description: Learn how to integrate oracles into your Arbitrum dapp
description: Learn how to integrate oracles into your Arbitrum app
user_story: As a developer, I want to understand how to use oracles in Arbitrum to get offchain data onchain.
content_type: how-to
---

[Chainlink](https://chain.link/) is a widely-recognized Web3 services platform that specializes in decentralized oracle networks. It lets you build Ethereum and Arbitrum dApps that connect to a variety of offchain data feeds and APIs, including those that provide asset prices, weather data, random number generation, and more.
[Chainlink](https://chain.link/) is a widely-recognized Web3 services platform that specializes in decentralized oracle networks. It lets you build Ethereum and Arbitrum apps that connect to a variety of offchain data feeds and APIs, including those that provide asset prices, weather data, random number generation, and more.

### Querying the price of `ARB` through Chainlink

Expand Down
2 changes: 1 addition & 1 deletion docs/for-devs/oracles/chronicle/chronicle.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
id: 'chronicle'
title: 'Chronicle'
description: Learn how to integrate oracles into your Arbitrum dapp
description: Learn how to integrate oracles into your Arbitrum app
user_story: As a developer, I want to understand how to use oracles in Arbitrum to get offchain data onchain.
content_type: how-to
---
Expand Down
4 changes: 2 additions & 2 deletions docs/for-devs/oracles/dia/dia.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
id: 'dia'
title: 'DIA'
description: Learn how to integrate oracles into your Arbitrum dapp
description: Learn how to integrate oracles into your Arbitrum app
user_story: As a developer, I want to understand how to use oracles in Arbitrum to get offchain data onchain.
content_type: how-to
---
Expand All @@ -12,7 +12,7 @@ You can find an example on how to use DIA in your project on this [page](https:/

### How to use DIA oracles on Arbitrum

**Requesting a custom oracle**: DIA deploys oracles tailored to each dApp’s needs. Each oracle is customizable, including data sources, cleansing filters, pricing, computational methodologies, update mechanisms, and more. This flexibility ensures that the data and oracle remain robust and resilient to the market conditions and provide a global market price and specific individual or cross-chain market prices.
**Requesting a custom oracle**: DIA deploys oracles tailored to each app’s needs. Each oracle is customizable, including data sources, cleansing filters, pricing, computational methodologies, update mechanisms, and more. This flexibility ensures that the data and oracle remain robust and resilient to the market conditions and provide a global market price and specific individual or cross-chain market prices.
→ [Request a Custom Oracle for your dApp | DIA Documentation](https://docs.diadata.org/introduction/intro-to-dia-oracles/request-an-oracle)

### Token Price Feeds
Expand Down
2 changes: 1 addition & 1 deletion docs/for-devs/oracles/trellor/trellor.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
id: 'trellor'
title: 'Trellor'
description: Learn how to integrate oracles into your Arbitrum dapp
description: Learn how to integrate oracles into your Arbitrum app
user_story: As a developer, I want to understand how to use oracles in Arbitrum to get offchain data onchain.
sidebar_label: 'Trellor'
content_type: how-to
Expand Down
2 changes: 1 addition & 1 deletion docs/for-devs/third-party-docs/MetaMask/metamask.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ third_party_content_owner: 'alexandratran'
---

The [MetaMask Delegation Toolkit](https://docs.metamask.io/delegation-toolkit/) is a collection of tools for embedding
MetaMask Smart Accounts into dapps.
MetaMask Smart Accounts into apps.
These [smart accounts](https://docs.metamask.io/delegation-toolkit/concepts/smart-accounts/) support programmable
account behavior and advanced features like delegated permissions, multi-signature approvals, and gas abstraction.

Expand Down
2 changes: 1 addition & 1 deletion docs/for-devs/third-party-docs/Webacy/webacy.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Wallets, protocols, & applications use Webacy throughout their user experience:

### Before a transaction

- Block harmful dApps and links
- Block harmful apps and links
- Review address trust and safety prior to signature
- Protect users from interacting with malicious smart contracts

Expand Down
2 changes: 1 addition & 1 deletion docs/how-arbitrum-works/01-a-gentle-introduction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ The network stays secure if there is at least one honest validator, which means

It's not as complicated as it seems. If two validators disagree, only one is telling the truth. In the event of a dispute, the two validators engage in an interactive game, where they respond to each other in a call-and-response format. This process enables them to narrow their disagreement down to a single computational step—something straightforward, such as multiplying two numbers. This step executes on the parent chain, which shows which party is honest. For a more detailed explanation, [read the explainer on interactive fraud proofs and the challenge protocol](/how-arbitrum-works/05-validation-and-proving/03-proving-and-challenges.mdx#5-interactive-fraud-proofs-and-the-challenge-protocol).

Users only experience delays when they withdraw funds from Arbitrum back to Ethereum. When withdrawing directly from Arbitrum to Ethereum, users usually wait one week to receive their funds on the parent chain. However, users can skip this waiting period if they use a fast <a data-quicklook-from="bridge">bridge</a> application, often for a small fee. Other activities do not have this delay, like depositing funds from Ethereum to Arbitrum or using a decentralized application (<a data-quicklook-from="dapp">dApp</a>) on the Arbitrum chain.
Users only experience delays when they withdraw funds from Arbitrum back to Ethereum. When withdrawing directly from Arbitrum to Ethereum, users usually wait one week to receive their funds on the parent chain. However, users can skip this waiting period if they use a fast <a data-quicklook-from="bridge">bridge</a> application, often for a small fee. Other activities do not have this delay, like depositing funds from Ethereum to Arbitrum or using a <a data-quicklook-from="dapp">decentralized application</a> on the Arbitrum chain.

### How is it cheaper?

Expand Down
Loading