# Starknet Js

Reference for building Starknet applications using starknet.js v9.x SDK, including...

- Repository: https://github.com/internet-court/internet-court-skill (7050 stars)
- Category: Business
- License: Apache-2.0
- Last updated: 2026-10-26
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add internet-court/internet-court-skill --skill starknet-js -g -a claude-code -y`
Codex: `npx skills add internet-court/internet-court-skill --skill starknet-js -g -a codex -y`
Cursor: `npx skills add internet-court/internet-court-skill --skill starknet-js -g -a cursor -y`
Gemini CLI: `npx skills add internet-court/internet-court-skill --skill starknet-js -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add internet-court/internet-court-skill`

## Description

Reference for building Starknet applications using starknet.js v9.x SDK, including contract interaction, account management, transaction handling, fee estimation, wallet integration, and paymaster flows.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# starknet.js v9.x SDK

Related modules: [skills catalog](../README.md).

## When to Use

- Building Starknet apps with provider, account, contract, wallet, or paymaster flows.

## When NOT to Use

- Cairo contract authoring, deployment-only runbooks, or security audits.

## Quick Start

```bash
npm install starknet
```

Minimal setup to read from Starknet:

```typescript
import { RpcProvider, Contract } from 'starknet';

const provider = await RpcProvider.create({ nodeUrl: 'https://rpc.starknet.lava.build' });
const contract = new Contract(abi, contractAddress, provider);
const result = await contract.get_balance();
```

## Core Architecture

```
Provider -> Account -> Contract
   |          |          |
Network   Identity   Interaction
```

- **Provider**: Read-only network connection (RpcProvider)
- **Account**: Extends Provider with signing and transaction capabilities
- **Contract**: Type-safe interface to deployed contracts

Use Provider for read operations, Account for write operations.

## Provider Setup

```typescript
import { RpcProvider } from 'starknet';

// Recommended: Auto-detect RPC spec version
const provider = await RpcProvider.create({
  nodeUrl: 'https://rpc.starknet.lava.build'
});
```

**Networks:**
- Mainnet: `https://rpc.starknet.lava.build`
- Sepolia: `https://rpc.starknet-testnet.lava.build`

**Key Methods:**
```typescript
const chainId = await provider.getChainId();
const block = await provider.getBlock('latest');
const nonce = await provider.getNonceForAddress(accountAddress);
await provider.waitForTransaction(txHash);

// Read storage directly
const value = await provider.getStorageAt(contractAddress, storageKey);
```

## Account Management

### Account Creation (4 Steps)

**Step 1: Compute address**
```typescript
import { hash, ec, encode, CallData } from 'starknet';

The rest: https://github.com/internet-court/internet-court-skill/blob/HEAD/vendored/starknet/starknet-js/SKILL.md
