Skip to content

Consensys/starknet-snap

Repository files navigation

Starknet Snap Install

Starknet Snap · npm version

The Starknet Snap allows users to deploy Starknet accounts, make transactions on Starknet, and interact with Starknet dapps. A blog post describing the effort is available here:

Blog Post

Table of Contents

Getting Started

Install the Snap

As a user, you can start by installing the snap here:

Starknet Snap

Connect to the dApp

You can also connect to the dApp:

Starknet Dapp

This is a sample dApp that uses the Starknet Snap. The dApp code can be found here. Developers can experiment with integrating this snap using this example.

Important Note

As the Starknet ecosystem is multi-wallet, the best approach for dApp developers in terms of interoperability is to build using the official get-starknet library. This way, developers can seamlessly make their dapp compatible with this snap and gain access to the MetaMask user base.

Development

Prerequisites

  • MetaMask Flask
    • ⚠️ You cannot have other versions of MetaMask installed
  • Node.js 18. We strongly recommend you install via NVM to avoid incompatibility issues between different node projects.
    • Once installed, you should also install Yarn with npm i -g yarn to make working with this repository easier.

Installing

nvm use
yarn setup

Running

Quickstart

⚠️ When the snap updates, you will need to reconnect from the dapp to see changes.

# This will start the starknet-snap, the associated dapp and the get-starknet compatibility layer
yarn start

This will launch the following:

Everything will run together in the same terminal in watch mode. If you want more control, see the next section

Snap

# Running Snap via watch mode
yarn workspace @consensys/starknet-snap watch

Alternatively, you can build and serve the snap manually. This can sometimes be more stable than watch mode but requires a manual rebuild and serve anytime there is a change on the snap.

# Building and serving snap manually
yarn workspace @consensys/starknet-snap build
yarn workspace @consensys/starknet-snap serve

UI

You can run the UI alone by running

# Running Wallet UI
yarn workspace wallet-ui start

This will launch the following:

Dapp Integration Guide

This guide is for a dApp that would be compatible only with MetaMask. To create a dApp compatible with all wallets in the Starknet ecosystem, prefer the get-starknet library. A sample dApp can be found here. If you still want to directly interact with the snap follow the tutorial below:

How to Install

From the dApp, issue the following RPC request to install the Snap. Make sure it is using the latest version.

provider.request({
  method: 'wallet_requestSnaps',
  params: {
    ["npm:@consensys/starknet-snap"]: { version: "2.2.0" }, // Snap's version
  },
});

Interact with Starknet Snap's API

From the dApp, issue the following RPC request to interact with the Snap.

provider.request({
  method: 'wallet_invokeSnap',
  params: {
    snapId: "npm:@consensys/starknet-snap",
    request: {
      method: 'starkNet_getStoredUserAccounts', // Snap method
      params: {
        chainId: "1", // Snap method's parameter
      },
    },
  },
});

Starknet Snap's API

The corresponding request payload and response for the latest Starknet Snap's API are documented in the openrpc spec.

Tutorial & Troubleshooting

If after update your funds are stuck on an old Cairo0 address, follow this tutorial to resolve stuck funds using the old StarkNet Snap.

Licenses

This project is dual-licensed under Apache 2.0 and MIT terms:

Copyright (c) 2024 ConsenSys Software Inc.