Skip to content

Commit

Permalink
Edit non-EVM intro and Starknet intro
Browse files Browse the repository at this point in the history
  • Loading branch information
alexandratran committed Sep 20, 2024
1 parent df73570 commit 0e4ef69
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 36 deletions.
12 changes: 7 additions & 5 deletions wallet/how-to/use-non-evm-networks/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import CardList from "@site/src/components/CardList"

# Use non-EVM networks

You can connect to non-EVM networks and interact with users' accounts on these networks using existing [MetaMask Snaps](https://metamask.io/snaps/).
You can interact with users' accounts on non-EVM networks by connecting to existing
[MetaMask Snaps](https://metamask.io/snaps/).

Non-EVM networks are blockchain networks that are not compatible with the Ethereum Virtual Machine (EVM).

Non-EVM dapps and MetaMask can't directly interact with each other.
By connecting to dedicated non-EVM Snaps, you can extend the functionality of MetaMask and integrate non-EVM networks into your existing MetaMask workflow.

Expand All @@ -20,11 +20,13 @@ MetaMask provides Snaps for the following networks:
items={[
{
href: "starknet",
title: "📱 Starknet",
title: "Starknet",
description:
"Non-EVM Ethereum Layer 2 using zk-rollups.",
"Layer 2 network for Ethereum using ZK rollups.",
},
]}
/>

See the [full list of available non-EVM Snaps](https://snaps.metamask.io/interoperability).
:::info
See the [full list of available non-EVM Snaps](https://snaps.metamask.io/interoperability).
:::
76 changes: 45 additions & 31 deletions wallet/how-to/use-non-evm-networks/starknet/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,51 +5,65 @@ sidebar_position: 1

# Use Starknet

Starknet is a non-EVM Layer 2 network. To interact with Starknet accounts in MetaMask, you need to use the Starknet Snap.
[Starknet](https://www.starknet.io/) is a non-EVM Layer 2 network.
You can interact with users' Starknet accounts in MetaMask by connecting to the
[Starknet Snap](https://snaps.metamask.io/snap/npm/consensys/starknet-snap/).

You can use the [`get-starknet`](https://github.com/starknet-io/get-starknet) library or the `wallet_invokeSnap` JSON-RPC method to connect to the Starknet Snap.
You can use the [`get-starknet`](https://github.com/starknet-io/get-starknet) library or the
[`wallet_invokeSnap`](/snaps/reference/wallet-api-for-snaps/#wallet_invokesnap) JSON-RPC method from
your dapp to connect to the Starknet Snap.
See [Connect to Starknet](connect-to-starknet.md) to get started.

## Connection options

The [`get-starknet`](architecture) library:

[`get-starknet`](architecture):
- Provides a high-level API that abstracts complex operations.
- Offers standardized error handling.
- Supports [a subset of the Starknet Snap API methods](#supported-methods).
- Standardizes error handling.
- Supports multiple wallets, not limited to MetaMask.
- Manages wallet connections and Starknet interactions.
- Results are in more readable code.
- Provides results in more readable code.

The [`wallet_invokeSnap`](/snaps/reference/wallet-api-for-snaps/#wallet_invokesnap) method:

[`wallet_invokeSnap`](../../../../snaps/reference/wallet-api-for-snaps/#wallet_invokesnap):
- Requires precise method names and parameter structures.
- Supports [all Starknet Snap API methods](#supported-methods).
- Handles both MetaMask-specific and Starknet-specific errors.
- Is designed for operating within the MetaMask framework.
- Manages lower-level Starknet interactions directly.
- Provides results in more detailed, lower-level code.

:::note
:::warning Important

We recommend using the `get-starknet` library for most use cases due to its ease of configuration.

There are [limitations](#limitations) on the methods that are avilabile when using `get-starknet`. For more information on the methods you can use when interacting with users' Starknet accounts, see the [Starknet Snap API documentation](../../../reference/non-evm-apis/starknet-snap-api.md).
We recommend using the `get-starknet` library for most use cases due to its ease of configuration
and multi-wallet support.

:::


## Limitations

Not all methods are supported by both `get-starknet` and `wallet_invokeSnap`. The following table lists which methods are availabile for the two implemnatations.

| Method | `wallet_invokeSnap` | `get-starknet` |
|--------|:---:|:---:|
| [`starkNet_createAccount`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_createAccount) || |
| [`starkNet_displayPrivateKey`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_displayPrivateKey) || |
| [`starkNet_estimateAccountDeployFee`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_estimateAccountDeployFee) || |
| [`starkNet_estimateFee`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_estimateFee) || |
| [`starkNet_extractPublicKey`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_extractPublicKey) |||
| [`starkNet_getErc20TokenBalance`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getErc20TokenBalance) || |
| [`starkNet_getStoredUserAccounts`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getStoredUserAccounts) || |
| [`starkNet_getTransactions`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getTransactions) || |
| [`starkNet_getTransactionStatus`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getTransactionStatus) || |
| [`starkNet_getValue`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getValue) || |
| [`starkNet_recoverAccounts`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_recoverAccounts) || |
| [`starkNet_sendTransaction`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_sendTransaction) || |
| [`starkNet_signMessage`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_signMessage) |||
| [`starkNet_upgradeAccContract`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_upgradeAccContract) |||
| [`starkNet_verifyMessage`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_verifyMessage) |||
## Supported methods

Once connected to the Starknet Snap, your dapp can call
[Starknet Snap API](../../../reference/non-evm-apis/starknet-snap-api.md) methods to interact with
users' Starknet accounts.
Not all methods are supported by both `get-starknet` and `wallet_invokeSnap`.
The following table lists the supported methods for each connection option:

| Method | `get-starknet` | `wallet_invokeSnap` |
|-------------------------------------------------------------------------------------------------------------------------------|:--------------:|:----------------------------------------:|
| [`starkNet_createAccount`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_createAccount) | ||
| [`starkNet_displayPrivateKey`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_displayPrivateKey) | ||
| [`starkNet_estimateAccountDeployFee`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_estimateAccountDeployFee) | ||
| [`starkNet_estimateFee`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_estimateFee) | ||
| [`starkNet_extractPublicKey`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_extractPublicKey) |||
| [`starkNet_getErc20TokenBalance`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getErc20TokenBalance) | ||
| [`starkNet_getStoredUserAccounts`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getStoredUserAccounts) | ||
| [`starkNet_getTransactions`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getTransactions) | ||
| [`starkNet_getTransactionStatus`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getTransactionStatus) | ||
| [`starkNet_getValue`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getValue) | ||
| [`starkNet_recoverAccounts`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_recoverAccounts) | ||
| [`starkNet_sendTransaction`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_sendTransaction) | ||
| [`starkNet_signMessage`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_signMessage) |||
| [`starkNet_upgradeAccContract`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_upgradeAccContract) |||
| [`starkNet_verifyMessage`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_verifyMessage) |||

0 comments on commit 0e4ef69

Please sign in to comment.