You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: wallet/how-to/use-non-evm-networks/starknet/about-get-starknet.md
+24-12Lines changed: 24 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,7 +10,8 @@ network interactions.
10
10
It works with the [Starknet Snap](https://snaps.metamask.io/snap/npm/consensys/starknet-snap/) to
11
11
enable dapps to interact with users' Starknet accounts in MetaMask.
12
12
13
-
When you integrate `get-starknet` into your dapp, it creates a `WalletAccount` object, which acts as
13
+
When you integrate `get-starknet` into your dapp, it creates a [Starknet
14
+
Windows Object (SWO)](https://github.com/starknet-io/get-starknet/blob/get-starknet-core%403.3.0/packages/core/src/StarknetWindowObject.ts), which acts as
14
15
the connection between the dapp and MetaMask, and manages Starknet interactions.
15
16
This allows users to send Starknet transactions, sign Starknet messages, and manage Starknet
16
17
accounts within MetaMask, and this functionality can be extended to multiple wallets in the Starknet
@@ -26,11 +27,13 @@ A dapp with `get-starknet` installed interacts with MetaMask as follows:
26
27
1. After the dapp is connected to MetaMask and the Starknet Snap, `get-starknet` receives a Starknet
27
28
Windows Object (SWO), which represents the MetaMask wallet with Starknet functionality.
28
29
29
-
1.`get-starknet` creates a [`WalletAccount`](http://starknetjs.com/docs/guides/walletAccount/) instance.
30
+
1. You can retrieve an [Account Object](https://starknetjs.com/docs/API/#account) from the Starknet Windows Object (SWO) when you access `swo.account`.
31
+
This Account Object enables you to manage Starknet interactions.
30
32
This instance manages the Starknet account within MetaMask.
31
33
32
34
```mermaid
33
35
sequenceDiagram
36
+
participant user as End User
34
37
participant dapp as Dapp
35
38
participant get as get-starknet
36
39
participant mm as MetaMask
@@ -41,23 +44,32 @@ sequenceDiagram
41
44
get->>mm: Request connection
42
45
mm->>Snap: Activate
43
46
Snap-->>mm: Activated
44
-
mm-->>get: Return SWO
45
-
get->>network: Create WalletAccount
46
-
get-->>dapp: Connection established
47
+
get->>Snap: Request Starknet account address
48
+
Snap-->>mm: Recover account and return Starknet account address
49
+
mm-->>get: Return Starknet account address
50
+
get-->>dapp: Connection established with SWO return
47
51
48
52
dapp->>get: Read blockchain data
49
53
get->>network: Query data
50
54
network-->>get: Return data
51
55
get-->>dapp: Processed data
52
56
53
57
dapp->>get: Write transaction
54
-
get->>mm: Request signature
55
-
mm->>Snap: Sign transaction
56
-
Snap-->>mm: Signed transaction
57
-
mm-->>get: Return signature
58
-
get->>network: Submit transaction
59
-
network-->>get: Transaction result
60
-
get-->>dapp: Transaction confirmation
58
+
get->>mm: Request write transaction
59
+
mm->>Snap: write transaction
60
+
Snap-->>mm: Request confirmation to write transaction
61
+
mm-->>user: Request confirmation
62
+
user-->>mm: Confirm transaction
63
+
mm-->>Snap: Confirm transaction
64
+
65
+
alt If the Account has deployed
66
+
Snap-->>network: deploying account transaction
67
+
end
68
+
Snap-->>network: Submit transaction
69
+
network-->>Snap: Transaction result
70
+
Snap-->>mm: Return Transaction result
71
+
mm-->>get: Return Transaction result
72
+
get-->>dapp: Return Transaction result
61
73
```
62
74
63
75
The `get-starknet` library offers several features that improve how dapps interact with the Starknet
After it is connected to the Starknet Snap, your dapp can interact with the Starknet network through two main integration options: `get-starknet` and `wallet_invokeSnap`.
48
+
Both options provide access to similar functionalities, but offer different ways of interacting with users' Starknet accounts.
49
+
50
+
- `wallet_invokeSnap: Manages direct interactions between the dApp and the Starknet Snap. It facilitates network communication for account creation, transaction signing, fee estimation, and other Starknet-related actions.
51
+
52
+
-`get-starknet`: Provides the same functionalities as `wallet_invokeSnap` and integrates a Starknet Window Object (SWO).
53
+
The SWO simplifies account management and signing, and enhances the experience of handling account states and transactions.
54
+
You interact with the [Account object](https://starknetjs.com/docs/API/classes/Account) in the SWO for operations.
55
+
56
+
The following table lists the core functionalities that each integration option supports:
| Create an account ||[`starkNet_createAccount`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_createAccount)|
61
+
| Estimate a fee |[`estimateFeeBulk`](https://starknetjs.com/docs/API/classes/Account/#estimatefeebulk)|[`starkNet_estimateFee`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_estimateFee)|
62
+
| Estimate the account deploy fee |[`estimateAccountDeployFee`](https://starknetjs.com/docs/API/classes/Account/#estimateaccountdeployfee)|[`starkNet_estimateAccountDeployFee`](../../../reference/non-evm-apis/starknet-snap-api.md#starknet_estimateaccountdeployfee)|
63
+
| Extract the public key |[`getPublicKey`](https://starknetjs.com/docs/api/classes/Signer/#getpubkey)|[`starkNet_extractPublicKey`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_extractPublicKey)|
64
+
| Get an ERC20 token balance |[`callContract`](http://starknetjs.com/docs/API/classes/Provider/#callcontract)|[`starkNet_getErc20TokenBalance`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getErc20TokenBalance)|
65
+
| Recover an account address |[`getAddress`](https://github.com/starknet-io/get-starknet/blob/ff37390b25b8368ebeb5f2323e2d8826964b41ae/packages/core/src/StarknetWindowObject.ts#L95)|[`starkNet_recoverAccounts`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_recoverAccounts)|
66
+
| Get transaction status |[`getTransactionStatus`](https://starknetjs.com/docs/API/classes/Account/#gettransactionstatus)|[`starkNet_getTransactionStatus`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getTransactionStatus)|
67
+
| Sign a message |[`signMessage`](https://starknetjs.com/docs/API/classes/Signer#signmessage)|[`starkNet_signMessage`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_signMessage)|
68
+
| Sign a transaction |[`signTransaction`](https://starknetjs.com/docs/API/classes/Signer#signtransaction)|[`starkNet_signTransaction`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_signTransaction)|
| Execute a transaction |[`execute`](https://starknetjs.com/docs/API/classes/Account/#execute)|[`starkNet_executeTxn`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_executeTxn)|
71
+
| Add an ERC20 token |[`watchAsset`](https://github.com/starknet-io/get-starknet/blob/ff37390b25b8368ebeb5f2323e2d8826964b41ae/packages/core/src/StarknetWindowObject.ts#L58)|[`starkNet_addErc20Token`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_addErc20Token)|
| Get the current network |[`getChainId`](https://starknetjs.com/docs/API/classes/Provider#getchainid)|[`starkNet_getCurrentNetwork`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_getCurrentNetwork)|
74
+
| Declare a contract |[`declareContract`](https://starknetjs.com/docs/API/classes/Account/#declarecontract)|[`starkNet_declareContract`](../../../reference/non-evm-apis/starknet-snap-api.md#starkNet_declareContract)|
0 commit comments