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:
As a user, you can start by installing the snap here:
You can also connect to the 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.
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.
- 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.
- Once installed, you should also install Yarn with
nvm use
yarn setup
# This will start the starknet-snap, the associated dapp and the get-starknet compatibility layer
yarn start
This will launch the following:
- Wallet UI dapp: http://localhost:3000/
- Snap server: http://localhost:8081/
- Get-starknet federation module: http://localhost:8082/
Everything will run together in the same terminal in watch mode. If you want more control, see the next section
# 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
You can run the UI alone by running
# Running Wallet UI
yarn workspace wallet-ui start
This will launch the following:
- Wallet UI dapp: http://localhost:3000/
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:
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
},
});
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
},
},
},
});
The corresponding request payload and response for the latest Starknet Snap's API are documented in the openrpc spec.
If after update your funds are stuck on an old Cairo0 address, follow this tutorial to resolve stuck funds using the old StarkNet Snap.
This project is dual-licensed under Apache 2.0 and MIT terms:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Copyright (c) 2024 ConsenSys Software Inc.