Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
27 changes: 10 additions & 17 deletions docs/aptos-tooling.mdx
Original file line number Diff line number Diff line change
@@ -1,33 +1,26 @@
---
title: "Aptos tooling"

Check warning on line 2 in docs/aptos-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tooling.mdx#L2

Did you really mean 'Aptos'?
---

## Martian wallet

You can set your [Martian wallet](https://martianwallet.xyz/) to interact through your Aptos nodes deployed with Chainstack.

Check warning on line 7 in docs/aptos-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tooling.mdx#L7

Did you really mean 'Aptos'?

Check warning on line 7 in docs/aptos-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tooling.mdx#L7

Did you really mean 'Chainstack'?
<Steps>
<Step>
Open your Martian wallet and click the network selector.
</Step>
<Step>
In the network selector, click **ADD CUSTOM NETWORK**.
</Step>
<Step>
In the **Enter Node Url** field, enter the endpoint. See also [node access details](/docs/manage-your-node#view-node-access-and-credentials).
</Step>
<Step>
In the **Enter Faucet Url** field, enter the [Aptos testnet faucet](https://aptoslabs.com/testnet-faucet) URL.
</Step>
<Step>
Click **ADD NETWORK**.
</Step>
</Steps>

1. Open your Martian wallet and click the network selector.

2. In the network selector, click **ADD CUSTOM NETWORK**.

3. In the **Enter Node Url** field, enter the endpoint. See also [node access details](/docs/manage-your-node#view-node-access-and-credentials).

4. In the **Enter Faucet Url** field, enter the [Aptos testnet faucet](https://aptoslabs.com/testnet-faucet) URL.

5. Click **ADD NETWORK**.

## REST API

Interact with your Aptos node using the [Aptos Node API](https://fullnode.devnet.aptoslabs.com/v1/spec#/).

Check warning on line 21 in docs/aptos-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tooling.mdx#L21

Did you really mean 'Aptos'?

Use your Chainstack Aptos REST endpoint. Example to get block information by block height:

Check warning on line 23 in docs/aptos-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tooling.mdx#L23

Did you really mean 'Chainstack'?

Check warning on line 23 in docs/aptos-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tooling.mdx#L23

Did you really mean 'Aptos'?

<CodeGroup>
```bash cURL
Expand Down
Original file line number Diff line number Diff line change
@@ -1,74 +1,48 @@
---
title: "Aptos: Publish a module to save & retrieve a message on-chain"

Check warning on line 2 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L2

Did you really mean 'Aptos'?
---

**TLDR:**
* Aptos uses the Move language and “published” modules in place of traditional smart contracts.

Check warning on line 6 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L6

Did you really mean 'Aptos'?
* This tutorial shows you how to set up an Aptos node, initialize a Move project, and publish a simple module that stores a string on-chain.

Check warning on line 7 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L7

Did you really mean 'Aptos'?
* You’ll run through the basics of module creation, compilation, testing, and then sending transactions to set and retrieve data.
* Use the Aptos CLI for everything from local testing to publishing, and wrap up by querying the on-chain data with Aptos’ REST API.

Check warning on line 9 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L9

Did you really mean 'Aptos'?

Check warning on line 9 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L9

Did you really mean 'Aptos'?

## Main article

Aptos uses its own terminology for widely-known Web3 entities. Smart contracts are called Modules and are written in the [Move language](https://move-language.github.io/move/). Modules are also not deployed but *published* on the Aptos chain.

Check warning on line 13 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L13

Did you really mean 'Aptos'?

Check warning on line 13 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L13

Did you really mean 'Aptos'?

The objective of this tutorial is to familiarize you with the Aptos network, the Move language and modules written in it. In the end of this tutorial, you will be able to publish, test, and interact with Move modules in Aptos.

Check warning on line 15 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L15

Did you really mean 'Aptos'?

Check warning on line 15 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L15

Did you really mean 'Aptos'?

Specifically, in this tutorial, you will:

* Initialize an Aptos project using the Aptos CLI.

Check warning on line 19 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L19

Did you really mean 'Aptos'?

Check warning on line 19 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L19

Did you really mean 'Aptos'?
* Publish a module on the Aptos testnet.

Check warning on line 20 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L20

Did you really mean 'Aptos'?

Check warning on line 20 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L20

Did you really mean 'testnet'?
* Interact with the module to save a message.
* Use the Aptos REST API to retrieve the message.

Check warning on line 22 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L22

Did you really mean 'Aptos'?

## Prerequisites

* [Chainstack account ](https://console.chainstack.com/)to deploy an Aptos node.

Check warning on line 26 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L26

Did you really mean 'Aptos'?
* [Martian Aptos wallet](https://martianwallet.xyz/) to receive testnet Aptos token (APT).

Check warning on line 27 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L27

Did you really mean 'Aptos'?

Check warning on line 27 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L27

Did you really mean 'testnet'?
* [Aptos CLI](https://github.com/aptos-labs/aptos-core) to compile, publish, and interact with the Move module.

## Overview

To get from zero to publishing your string via the module to Aptos testnet, do the following:

Check warning on line 32 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L32

Did you really mean 'Aptos'?

Check warning on line 32 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L32

Did you really mean 'testnet'?

<Steps>
<Step>
With Chainstack, create a <Tooltip tip="A public chain project- a project to join public networks">public chain project</Tooltip>.
</Step>
<Step>
With Chainstack, join Aptos testnet.
</Step>
<Step>
With Chainstack, access your Aptos node credentials.
</Step>
<Step>
Set up your Martian wallet to work through the Chainstack Aptos node.
</Step>
<Step>
Fund your account through the [Aptos testnet faucet](https://aptoslabs.com/testnet-faucet).
</Step>
<Step>
Install the [Aptos CLI](https://aptos.dev/tools/aptos-cli/install-cli/).
</Step>
<Step>
Create a Move project.
</Step>
<Step>
Create and configure your Aptos project.
</Step>
<Step>
Create a module in the Move language.
</Step>
<Step>
Compile and test the Move module.
</Step>
<Step>
Publish the Move module.
</Step>
<Step>
Save and retrieve a message on the Aptos chain.
</Step>
</Steps>
1. With Chainstack, create a <Tooltip tip="A public chain project- a project to join public networks">public chain project</Tooltip>.

Check warning on line 34 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L34

Did you really mean 'Chainstack'?
2. With Chainstack, join Aptos testnet.

Check warning on line 35 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L35

Did you really mean 'Chainstack'?

Check warning on line 35 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L35

Did you really mean 'Aptos'?

Check warning on line 35 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L35

Did you really mean 'testnet'?
3. With Chainstack, access your Aptos node credentials.

Check warning on line 36 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L36

Did you really mean 'Chainstack'?

Check warning on line 36 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L36

Did you really mean 'Aptos'?
4. Set up your Martian wallet to work through the Chainstack Aptos node.

Check warning on line 37 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L37

Did you really mean 'Chainstack'?

Check warning on line 37 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L37

Did you really mean 'Aptos'?
5. Fund your account through the [Aptos testnet faucet](https://aptoslabs.com/testnet-faucet).
6. Install the [Aptos CLI](https://aptos.dev/tools/aptos-cli/install-cli/).
7. Create a Move project.
8. Create and configure your Aptos project.

Check warning on line 41 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L41

Did you really mean 'Aptos'?
9. Create a module in the Move language.
10. Compile and test the Move module.
11. Publish the Move module.
12. Save and retrieve a message on the Aptos chain.

Check warning on line 45 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L45

Did you really mean 'Aptos'?

## Step-by-step

Expand All @@ -76,7 +50,7 @@

See [Create a project](/docs/manage-your-project#create-a-project).

### Join the Aptos testnet

Check warning on line 53 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L53

Did you really mean 'Aptos'?

Check warning on line 53 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L53

Did you really mean 'testnet'?

See [Join a public network](/docs/manage-your-networks#join-a-public-network).

Expand All @@ -90,11 +64,11 @@

### Fund your account

Your account needs to pay fees in testnet APT to publish the module and interact with it. Fund your account with the [Aptos testnet faucet](https://aptoslabs.com/testnet-faucet).

Check warning on line 67 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L67

Did you really mean 'testnet'?

### Install the Aptos CLI

Check warning on line 69 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L69

Did you really mean 'Aptos'?

You need the Aptos CLI to interact with your Move module. Set up the [Aptos CLI](https://aptos.dev/tools/aptos-cli/install-cli/).

Check warning on line 71 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L71

Did you really mean 'Aptos'?

### Create a Move project

Expand All @@ -102,7 +76,7 @@

<CodeGroup>
```bash Shell
aptos move init --name save-message

Check warning on line 79 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L79

Did you really mean 'aptos'?
```
</CodeGroup>

Expand All @@ -112,8 +86,8 @@

2. Open your `Move.toml` file and edit it to add `[addresses]` and `[dev-addresses]`, where:

* `dev = "_"` — your default Aptos account.

Check warning on line 89 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L89

Did you really mean 'Aptos'?
* `dev = "0xC0FFEE"` — an alternative Aptos account for tests.

Check warning on line 90 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L90

Did you really mean 'Aptos'?

Example:

Expand All @@ -132,7 +106,7 @@
[dependencies.AptosFramework]
git = 'https://github.com/aptos-labs/aptos-core.git'
rev = 'main'
subdir = 'aptos-move/framework/aptos-framework'

Check warning on line 109 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L109

Did you really mean 'subdir'?
```
</CodeGroup>

Expand All @@ -140,11 +114,11 @@
Note that packages have one-time names. If you want to re-publish the package, you must change its name.
</Warning>

### Create and configure an Aptos project

Check warning on line 117 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L117

Did you really mean 'Aptos'?

1. In your project directory, run `aptos init > custom`. This will start a configuration process, during which you need to set up your Chainstack endpoint and Martian wallet private key. Adding the private key will retrieve your Aptos public address automatically.

Check warning on line 119 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L119

Did you really mean 'Chainstack'?

Check warning on line 119 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L119

Did you really mean 'Aptos'?

2. Add your [Aptos node endpoint](/docs/manage-your-node#view-node-access-and-credentials) deployed with Chainstack.

Check warning on line 121 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L121

Did you really mean 'Chainstack'?

3. At the faucet URL request, type `skip` since you have already funded your account on the previous step.

Expand All @@ -152,7 +126,7 @@

<CodeGroup>
```bash Shell
Aptos CLI is now set up for account ...4474 as profile default! Run `aptos --help` for more information about commands

Check warning on line 129 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L129

Did you really mean 'Aptos'?
{
"Result": "Success"
}
Expand All @@ -177,7 +151,7 @@
//:!:>resource
struct MessageHolder has key {
message: string::String,
message_change_events: event::EventHandle<MessageChangeEvent>,

Check warning on line 154 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L154

Did you really mean 'message_change_events'?
}
//<:!:resource

Expand Down Expand Up @@ -322,13 +296,13 @@

## Conclusion

This tutorial guided you through the basics of creating, publishing, and testing a simple module that saves a string on the Aptos chain.

Check warning on line 299 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L299

Did you really mean 'Aptos'?

### About the author

<CardGroup>
<Card title="Davide Zambiasi" img="/images/docs/profile_images/1533079085001363457/1VvXp1m0_400x400.jpg">
<Icon icon="code" iconType="solid"/>Developer Advocate @ Chainstack

Check warning on line 305 in docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/aptos-tutorial-publish-a-module-to-save-and-retrieve-a-message-on-aptos.mdx#L305

Did you really mean 'Chainstack'?

<Icon icon="screwdriver-wrench" iconType="solid"/> BUIDLs on EVM, The Graph protocol, and Starknet

Expand Down
88 changes: 18 additions & 70 deletions docs/arbitrum-tooling.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Arbitrum tooling"

Check warning on line 2 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L2

Did you really mean 'Arbitrum'?
---

## MetaMask
Expand All @@ -8,14 +8,10 @@

## Hardhat

Configure [Hardhat](https://hardhat.org/) to deploy contracts and interact through your Arbitrum nodes.

Check warning on line 11 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L11

Did you really mean 'Arbitrum'?

<Steps>
<Step>
Install [Hardhat](https://hardhat.org/) and create a project.
</Step>
<Step>
Create a new environment in `hardhat.config.js`:
1. Install [Hardhat](https://hardhat.org/) and create a project.
2. Create a new environment in `hardhat.config.js`:

<CodeGroup>
```javascript Javascript
Expand All @@ -24,7 +20,7 @@
module.exports = {
solidity: "0.7.3",
networks: {
chainstack: {

Check warning on line 23 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L23

Did you really mean 'chainstack'?
url: "YOUR_CHAINSTACK_ENDPOINT",
accounts: ["YOUR_PRIVATE_KEY"]
},
Expand All @@ -37,41 +33,25 @@

* YOUR\_CHAINSTACK\_ENDPOINT — your node HTTPS or WSS endpoint protected either with the key or password. See [node access details](/docs/manage-your-node#view-node-access-and-credentials).
* YOUR\_PRIVATE\_KEY — the private key of the account that you use to deploy the contract
</Step>
<Step>
Run `npx hardhat run scripts/deploy.js --network chainstack` and Hardhat will deploy using Chainstack.
</Step>
</Steps>
3. Run `npx hardhat run scripts/deploy.js --network chainstack` and Hardhat will deploy using Chainstack.

Check warning on line 36 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L36

Did you really mean 'Chainstack'?

See also [Forking EVM-compatible mainnet with Hardhat](https://support.chainstack.com/hc/en-us/articles/900004242406).

## Remix IDE

To make Remix IDE interact with the network through a Chainstack node:

Check warning on line 42 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L42

Did you really mean 'Chainstack'?

<Steps>
<Step>
Get [MetaMask](https://metamask.io/) and set it to interact through a Chainstack node. See [Interacting through MetaMask](/docs/arbitrum-tooling#metamask).
</Step>
<Step>
In Remix IDE, navigate to the **Deploy** tab. Select **Injected Provider - MetaMask** in **Environment**.
</Step>
</Steps>
1. Get [MetaMask](https://metamask.io/) and set it to interact through a Chainstack node. See [Interacting through MetaMask](/docs/arbitrum-tooling#metamask).

Check warning on line 44 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L44

Did you really mean 'Chainstack'?
2. In Remix IDE, navigate to the **Deploy** tab. Select **Injected Provider - MetaMask** in **Environment**.

This will engage MetaMask and make Remix IDE interact with the network through a Chainstack node.

Check warning on line 47 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L47

Did you really mean 'Chainstack'?

## web3.js

Build DApps using [web3.js](https://github.com/ethereum/web3.js/) and Arbitrum nodes deployed with Chainstack.

Check warning on line 51 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L51

Did you really mean 'DApps'?

Check warning on line 51 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L51

Did you really mean 'Arbitrum'?

Check warning on line 51 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L51

Did you really mean 'Chainstack'?

<Steps>
<Step>
Install [web3.js](https://web3js.readthedocs.io/).
</Step>
<Step>
Connect over HTTP or WebSocket.
</Step>
</Steps>
1. Install [web3.js](https://web3js.readthedocs.io/).
2. Connect over HTTP or WebSocket.

### HTTP

Expand Down Expand Up @@ -107,16 +87,10 @@

## web3.py

Build DApps using [web3.py](https://github.com/ethereum/web3.py) and Arbitrum nodes deployed with Chainstack.

Check warning on line 90 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L90

Did you really mean 'DApps'?

Check warning on line 90 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L90

Did you really mean 'Arbitrum'?

Check warning on line 90 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L90

Did you really mean 'Chainstack'?

<Steps>
<Step>
Install [web3.py](https://web3py.readthedocs.io/).
</Step>
<Step>
Connect over HTTP or WebSocket. See also [EVM node connection: HTTP vs WebSocket](https://support.chainstack.com/hc/en-us/articles/900002187586-Ethereum-node-connection-HTTP-vs-WebSocket).
</Step>
</Steps>
1. Install [web3.py](https://web3py.readthedocs.io/).
2. Connect over HTTP or WebSocket. See also [EVM node connection: HTTP vs WebSocket](https://support.chainstack.com/hc/en-us/articles/900002187586-Ethereum-node-connection-HTTP-vs-WebSocket).

### HTTP

Expand All @@ -141,7 +115,7 @@
where

* YOUR\_CHAINSTACK\_ENDPOINT — your node HTTPS endpoint protected either with the key or password
* HOSTNAME — your node HTTPS endpoint hostname

Check warning on line 118 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L118

Did you really mean 'hostname'?
* USERNAME — your node access username (for password-protected endpoints)
* PASSWORD — your node access password (for password-protected endpoints)

Expand Down Expand Up @@ -170,7 +144,7 @@
where

* YOUR\_CHAINSTACK\_ENDPOINT — your node WSS endpoint protected either with the key or password
* HOSTNAME — your node WSS endpoint hostname

Check warning on line 147 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L147

Did you really mean 'hostname'?
* USERNAME — your node access username (for password-protected endpoints)
* PASSWORD — your node access password (for password-protected endpoints)

Expand All @@ -178,14 +152,10 @@

## web3.php

Build DApps using [web3.php](https://github.com/web3p/web3.php) and Arbitrum nodes deployed with Chainstack.

Check warning on line 155 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L155

Did you really mean 'DApps'?

Check warning on line 155 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L155

Did you really mean 'Arbitrum'?

Check warning on line 155 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L155

Did you really mean 'Chainstack'?

<Steps>
<Step>
Install [web3.php](https://github.com/web3p/web3.php).
</Step>
<Step>
Connect over HTTP:
1. Install [web3.php](https://github.com/web3p/web3.php).
2. Connect over HTTP:

<CodeGroup>
```php Php
Expand All @@ -203,9 +173,7 @@
</CodeGroup>

where YOUR\_CHAINSTACK\_ENDPOINT is your node HTTPS endpoint protected either with the key or password
</Step>
<Step>
Use [JSON-RPC methods](https://eth.wiki/json-rpc/API) to interact with the node.
3. Use [JSON-RPC methods](https://eth.wiki/json-rpc/API) to interact with the node.

Example to get the latest block number:

Expand All @@ -221,7 +189,7 @@

$web3 = new Web3(new HttpProvider(new HttpRequestManager("YOUR_CHAINSTACK_ENDPOINT", 5)));

$eth = $web3->eth;

Check warning on line 192 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L192

Did you really mean 'eth'?

$eth->blockNumber(function ($err, $data) {
print "$data \n";
Expand All @@ -229,12 +197,10 @@
?>
```
</CodeGroup>
</Step>
</Steps>

## web3j

Build DApps using [web3j](https://github.com/web3j/web3j) and Arbitrum nodes deployed with Chainstack.

Check warning on line 203 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L203

Did you really mean 'DApps'?

Check warning on line 203 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L203

Did you really mean 'Arbitrum'?

Check warning on line 203 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L203

Did you really mean 'Chainstack'?


Use the `HttpService` object to connect to your node endpoint.
Expand Down Expand Up @@ -308,14 +274,8 @@

Build DApps using [ethers.js](https://github.com/ethers-io/ethers.js/) and Arbitrum nodes deployed with Chainstack.

<Steps>
<Step>
Install [ethers.js](https://www.npmjs.com/package/ethers).
</Step>
<Step>
Connect over HTTP or WebSocket. See also [EVM node connection: HTTP vs WebSocket](https://support.chainstack.com/hc/en-us/articles/900002187586-Ethereum-node-connection-HTTP-vs-WebSocket).
</Step>
</Steps>
1. Install [ethers.js](https://www.npmjs.com/package/ethers).
2. Connect over HTTP or WebSocket. See also [EVM node connection: HTTP vs WebSocket](https://support.chainstack.com/hc/en-us/articles/900002187586-Ethereum-node-connection-HTTP-vs-WebSocket).

### HTTP

Expand Down Expand Up @@ -355,10 +315,10 @@

* PASSWORD — your node access password (for password-protected endpoints)

* NETWORK\_ID — Arbitrum network ID:

Check warning on line 318 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L318

Did you really mean 'Arbitrum'?

* Mainnet: `42161`

Check warning on line 320 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L320

Did you really mean 'Mainnet'?
* Testnet: `421613`

Check warning on line 321 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L321

Did you really mean 'Testnet'?

See also [node access details](/docs/manage-your-node#view-node-access-and-credentials).

Expand All @@ -368,7 +328,7 @@

<CodeGroup>
```javascript Javascript
const { ethers } = require("ethers");

Check warning on line 331 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L331

Did you really mean 'ethers'?

const provider = new ethers.providers.WebSocketProvider('YOUR_CHAINSTACK_ENDPOINT', NETWORK_ID);

Expand All @@ -389,12 +349,8 @@

## Brownie

<Steps>
<Step>
Install [Brownie](https://eth-brownie.readthedocs.io/en/stable/install.html).
</Step>
<Step>
Use the `brownie networks add` command with the node endpoint:
1. Install [Brownie](https://eth-brownie.readthedocs.io/en/stable/install.html).
2. Use the `brownie networks add` command with the node endpoint:

<CodeGroup>
```shell Shell
Expand All @@ -414,8 +370,6 @@

* Mainnet: `42161`
* Testnet: `421613`
</Step>
</Steps>

Example to run the deployment script:

Expand All @@ -427,14 +381,8 @@

## Foundry

<Steps>
<Step>
Install [Foundry](https://getfoundry.sh/).
</Step>
<Step>
Use `--rpc-url` to run the operation through your Chainstack node.
</Step>
</Steps>
1. Install [Foundry](https://getfoundry.sh/).
2. Use `--rpc-url` to run the operation through your Chainstack node.

Check warning on line 385 in docs/arbitrum-tooling.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tooling.mdx#L385

Did you really mean 'Chainstack'?

### Forge

Expand Down
27 changes: 7 additions & 20 deletions docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx
Original file line number Diff line number Diff line change
@@ -1,48 +1,35 @@
---
title: "Arbitrum: L1 to L2 messaging smart contract"

Check warning on line 2 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L2

Did you really mean 'Arbitrum'?
---

<Warning>
### Deprecation notice

As the Goerli testnet has been deprecated, this guide is for historical reference.

Check warning on line 8 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L8

Did you really mean 'Goerli'?

Check warning on line 8 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L8

Did you really mean 'testnet'?
</Warning>

Sending a message from the Ethereum chain (L1) to the Arbitrum chain (L2) does not involve the state challenge period and is as fast as the block confirmation time on L1 and L2 combined.

Check warning on line 11 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L11

Did you really mean 'Ethereum'?

Check warning on line 11 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L11

Did you really mean 'Arbitrum'?

In this tutorial, you will:

* Deploy greeter contracts on Ethereum and on Arbitrum.

Check warning on line 15 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L15

Did you really mean 'Ethereum'?

Check warning on line 15 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L15

Did you really mean 'Arbitrum'?
* Send a message from the greeter contract deployed on Ethereum (L1) to the greeter contract deployed on Arbitrum (L2).

Check warning on line 16 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L16

Did you really mean 'Ethereum'?

Check warning on line 16 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L16

Did you really mean 'Arbitrum'?

## Prerequisites

* [Chainstack account](https://console.chainstack.com/) to deploy an Ethereum node and an Arbitrum node.

Check warning on line 20 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L20

Did you really mean 'Ethereum'?

Check warning on line 20 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L20

Did you really mean 'Arbitrum'?
* [MetaMask](https://metamask.io/) to fund your account on L2 with GoerliETH.

## Overview

To get from zero to your first L1 to L2 message, do the following:
<Steps>
<Step>
With Chainstack, create a public chain project.
</Step>
<Step>
With Chainstack, join the Ethereum Goerli testnet.
</Step>
<Step>
With Chainstack, join the Arbitrum Goerli testnet.
</Step>
<Step>
Set up your MetaMask to work through the Chainstack Ethereum and Arbitrum nodes.
</Step>
<Step>
Fund your account through a faucet on the Ethereum Goerli testnet and on the Arbitrum Goerli testnet.
</Step>
<Step>
Run the tutorial script to deploy the contracts on L1 and L2 and send the message from L1 to L2.
</Step>
</Steps>

1. With Chainstack, create a public chain project.

Check warning on line 27 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L27

Did you really mean 'Chainstack'?
2. With Chainstack, join the Ethereum Goerli testnet.

Check warning on line 28 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L28

Did you really mean 'Chainstack'?

Check warning on line 28 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L28

Did you really mean 'Ethereum'?

Check warning on line 28 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L28

Did you really mean 'Goerli'?

Check warning on line 28 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L28

Did you really mean 'testnet'?
3. With Chainstack, join the Arbitrum Goerli testnet.

Check warning on line 29 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L29

Did you really mean 'Chainstack'?

Check warning on line 29 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L29

Did you really mean 'Arbitrum'?

Check warning on line 29 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L29

Did you really mean 'Goerli'?

Check warning on line 29 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L29

Did you really mean 'testnet'?
4. Set up your MetaMask to work through the Chainstack Ethereum and Arbitrum nodes.

Check warning on line 30 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L30

Did you really mean 'Chainstack'?

Check warning on line 30 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L30

Did you really mean 'Ethereum'?

Check warning on line 30 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L30

Did you really mean 'Arbitrum'?
5. Fund your account through a faucet on the Ethereum Goerli testnet and on the Arbitrum Goerli testnet.

Check warning on line 31 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L31

Did you really mean 'Ethereum'?

Check warning on line 31 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L31

Did you really mean 'Goerli'?

Check warning on line 31 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L31

Did you really mean 'testnet'?

Check warning on line 31 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L31

Did you really mean 'Arbitrum'?

Check warning on line 31 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L31

Did you really mean 'Goerli'?

Check warning on line 31 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L31

Did you really mean 'testnet'?
6. Run the tutorial script to deploy the contracts on L1 and L2 and send the message from L1 to L2.

## Step-by-step

Expand All @@ -50,9 +37,9 @@

See [Create a project](/docs/manage-your-project#create-a-project).

### Join the Ethereum and Arbitrum Goerli testnets

Check warning on line 40 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L40

Did you really mean 'Ethereum'?

Check warning on line 40 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L40

Did you really mean 'Arbitrum'?

Check warning on line 40 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L40

Did you really mean 'Goerli'?

Check warning on line 40 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L40

Did you really mean 'testnets'?

Deploy a node on the Ethereum Goerli testnet and a node on the Arbitrum Goerli testnet.

Check warning on line 42 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L42

Did you really mean 'Ethereum'?

Check warning on line 42 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L42

Did you really mean 'Goerli'?

Check warning on line 42 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L42

Did you really mean 'testnet'?

Check warning on line 42 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L42

Did you really mean 'Arbitrum'?

Check warning on line 42 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L42

Did you really mean 'Goerli'?

Check warning on line 42 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L42

Did you really mean 'testnet'?

See [Join a public network](/docs/manage-your-networks#join-a-public-network).

Expand All @@ -66,14 +53,14 @@

### Fund your account

Your account will need Goerli ether on both the Ethereum Goerli testnet and the Arbitrum Goerli testnet as you will deploy a contract on each of the chains.

Check warning on line 56 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L56

Did you really mean 'Goerli'?

Check warning on line 56 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L56

Did you really mean 'Ethereum'?

Check warning on line 56 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L56

Did you really mean 'Goerli'?

Check warning on line 56 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L56

Did you really mean 'testnet'?

Check warning on line 56 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L56

Did you really mean 'Arbitrum'?

Check warning on line 56 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L56

Did you really mean 'Goerli'?

Check warning on line 56 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L56

Did you really mean 'testnet'?

* Ethereum Goerli faucet

Check warning on line 58 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L58

Did you really mean 'Ethereum'?

Check warning on line 58 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L58

Did you really mean 'Goerli'?
* Arbitrum Goerli faucet: see [Nitro Goerli Rollup](https://developer.offchainlabs.com/public-chains) in the Arbitrum documentation

Check warning on line 59 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L59

Did you really mean 'Arbitrum'?

Check warning on line 59 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L59

Did you really mean 'Goerli'?

Check warning on line 59 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L59

Did you really mean 'Arbitrum'?

The default Arbitrum Goerli faucet may fund your account with 0.001 GoerliETH, which is not enough to deploy the greeter contract on L2.

Check warning on line 61 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L61

Did you really mean 'Arbitrum'?

Check warning on line 61 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L61

Did you really mean 'Goerli'?

If you do not have enough GoerliETH on L2, you may bridge some more from the Ethereum Goerli testnet using the [Arbitrum bridge](https://bridge.arbitrum.io/).

Check warning on line 63 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L63

Did you really mean 'Ethereum'?

Check warning on line 63 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L63

Did you really mean 'Goerli'?

Check warning on line 63 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L63

Did you really mean 'testnet'?

### Clone and prepare the tutorials repository

Expand Down Expand Up @@ -101,9 +88,9 @@

In the `.env` file, add your account key and the endpoints:

* DEVNET\_PRIVKEY — the private key of your account that has GoerliETH both on the Ethereum Goerli testnet and the Arbitrum Goerli testnet.

Check warning on line 91 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L91

Did you really mean 'Ethereum'?

Check warning on line 91 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L91

Did you really mean 'Goerli'?

Check warning on line 91 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L91

Did you really mean 'testnet'?

Check warning on line 91 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L91

Did you really mean 'Arbitrum'?

Check warning on line 91 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L91

Did you really mean 'testnet'?
* L2RPC — the Chainstack HTTPS endpoint of your Arbitrum node deployed on the Arbitrum Goerli testnet.

Check warning on line 92 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L92

Did you really mean 'Chainstack'?

Check warning on line 92 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L92

Did you really mean 'Arbitrum'?

Check warning on line 92 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L92

Did you really mean 'Arbitrum'?

Check warning on line 92 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L92

Did you really mean 'Goerli'?

Check warning on line 92 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L92

Did you really mean 'testnet'?
* L1RPC — the Chainstack HTTPS endpoint of your Ethereum node deployed on the Ethereum Goerli testnet.

Check warning on line 93 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L93

Did you really mean 'Chainstack'?

Check warning on line 93 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L93

Did you really mean 'Ethereum'?

Check warning on line 93 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L93

Did you really mean 'Ethereum'?

Check warning on line 93 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L93

Did you really mean 'Goerli'?

Check warning on line 93 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L93

Did you really mean 'testnet'?

Example:

Expand All @@ -129,24 +116,24 @@

The script will:

* Deploy the L1 greeter contract on the Ethereum Goerli testnet. Example: [0x9B4F541D6A82Beb594Ee2A1EfF14d88f2898176c](https://goerli.etherscan.io/address/0x9B4F541D6A82Beb594Ee2A1EfF14d88f2898176c).

Check warning on line 119 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L119

Did you really mean 'Ethereum'?

Check warning on line 119 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L119

Did you really mean 'Goerli'?

Check warning on line 119 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L119

Did you really mean 'testnet'?
* Deploy the L2 greeter contract on the Arbitrum Goerli testnet. Example: [0x890443aB733bd527F0036aEd3E249358a30Ff3ce](https://goerli-rollup-explorer.arbitrum.io/address/0x890443aB733bd527F0036aEd3E249358a30Ff3ce).

Check warning on line 120 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L120

Did you really mean 'Arbitrum'?

Check warning on line 120 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L120

Did you really mean 'Goerli'?

Check warning on line 120 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L120

Did you really mean 'testnet'?
* On the L1 contract, [set the L2 contract address](https://goerli.etherscan.io/tx/0xbd20609976a96ce791eae71dae0e87a254f542eab1ab400ce8b4681cc4f6b5aa).
* On the L2 contract, [set the L1 contract address](https://goerli-rollup-explorer.arbitrum.io/tx/0x98dcfec500561985cdaf0f3933f1b361b3106edc055e0a2644c0f67396596d42/internal-transactions).
* Retrieve the current gas costs for the transaction off the [ArbRetryableTx contract on L2](https://goerli-rollup-explorer.arbitrum.io/address/0x000000000000000000000000000000000000006E/read-contract#address-tabs). See also Arbitrum documentation: [Messaging Between Layers](https://developer.offchainlabs.com/arbos/l1-to-l2-messaging).

Check warning on line 123 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L123

Did you really mean 'Arbitrum'?
* Using the retrieved gas cost values, [submit the message transaction on L1](https://goerli.etherscan.io/tx/0xa39ecbb53844d009dc121825c26b0608def2c4117d81a6ebeb6000fcf304ac9e). The transaction will send the message to the [inbox contract on L1](https://goerli.etherscan.io/address/0x6BEbC4925716945D46F0Ec336D5C2564F419682C#readProxyContract). See also Arbitrum documentation: [Contract addresses](https://developer.offchainlabs.com/useful-addresses).

Check warning on line 124 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L124

Did you really mean 'Arbitrum'?
* The transaction will then be submitted as a retryable ticket by the [ArbRetryableTx contract on L2](https://goerli-rollup-explorer.arbitrum.io/address/0x000000000000000000000000000000000000006E/). [Example](https://goerli-rollup-explorer.arbitrum.io/tx/0xac1f89c9d449145aaa6a715bfb7a678009654191b379c03d20bd0a27b8f6968f).

Check warning on line 125 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L125

Did you really mean 'retryable'?
* Then the retryable ticket will be redeemed and change the state in the greeter contract on L2 with the message from the greeter contract on L1. [Example](https://goerli-rollup-explorer.arbitrum.io/tx/0x6c8dd56c1ef93064b7b219154327361c051588dfadf716cc23e9d5e3ed610814).

Check warning on line 126 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L126

Did you really mean 'retryable'?

## Conclusion

This tutorial guided you through the basics of creating and deploying a simple greeter contract that sends a message from the Ethereum chain to the Arbitrum chain. The tutorial also provided the examples and an explanation of the step-by-step state changes and the contracts involved in the L1 to L2 messaging.

Check warning on line 130 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L130

Did you really mean 'Ethereum'?

Check warning on line 130 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L130

Did you really mean 'Arbitrum'?

### About the author

<CardGroup>
<Card title="Ake" img="/images/docs/profile_images/1719912994363326464/8_Bi4fdM_400x400.jpg">
<Icon icon="code" iconType="solid"/>Director of Developer Experience @ Chainstack

Check warning on line 136 in docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx

View check run for this annotation

Mintlify / Mintlify Validation - vale-spellcheck

docs/arbitrum-tutorial-l1-to-l2-messaging-smart-contract.mdx#L136

Did you really mean 'Chainstack'?

<Icon icon="screwdriver-wrench" iconType="solid"/> Talk to me all things Web3

Expand Down
Loading