Revving Up Starknet
From installation to deployment: Demystify scarb, starkliup, STRK faucet, and deploy your first contract on Starknet in a beginner-friendly manner

TL;DR:
Learn how to deploy an OpenZeppelin account on Starknet Sepolia with Scarb 2.21 and starkli 0.4.2. Fix the Blast RPC 403 and the pending block-tag error, then confirm the transaction on Voyager.
who is it for?: Devs new to Starknet who already use Python or a CLI.
What you are installing
| Tool | Job | Version that worked |
|---|---|---|
| Scarb | Compile Cairo to Sierra | 2.21.0 (Cairo 2.21.0) |
| starknet.py | Python client for later calls | 0.30.0 |
| starkli | Keystore, account, declare, deploy | 0.4.2 (77ff6b3) |
starkli 0.4.2 speaks JSON-RPC v0.8 and pays fees in STRK. (remember to avoid the 2 errors below)
1. Install
Scarb. Follow the asdf or install script, then:
scarb --version
starknet.py. From the Python project (I used uv, Python >=3.12):
cd <your-python-project>
uv add starknet.py
That pins starknet-py>=0.30.0.
starkli. The installer script only drops starkliup. starkliup --version does not print a version. With no tag it errors Version tag is missing. No arguments installs the latest release:
curl https://get.starkli.sh | sh
"$HOME/.starkli/bin/starkliup"
echo '. "$HOME/.starkli/env"' >> ~/.zshrc
source ~/.starkli/env
starkli --version
If curl | sh says it cannot detect your shell, skip the script’s PATH edit and add only the source line above. Do not replace your existing PATH.
2. Compile
scarb build needs a crate root. A missing src/lib.cairo fails before Cairo type-checks. On Cairo 2.21, interface signatures also need the address type imported at the top of the file:
use starknet::ContractAddress;
Scarb.toml for your "<name>.cairo" contract:
[package]
name = "contract_name"
version = "0.1.0"
edition = "2023_11"
[dependencies]
starknet = "2.8.5"
[[target.starknet-contract]]
sierra = true
scarb build
Sierra lands at target/dev/spending_policy_SpendingPolicy.contract_class.json. starkli compiles Sierra to CASM itself, so you do not need casm = true for declare.
3. Create the deployer
Ready (or any browser wallet) does not export a CLI signer.
starkli creates a separate OpenZeppelin account. That account pays gas. Your Ready address is only a constructor argument later, so only Ready can register or revoke.
mkdir -p ~/.starkli/sepolia
starkli signer keystore new ~/.starkli/sepolia/keystore.json
export STARKNET_KEYSTORE=~/.starkli/sepolia/keystore.json
starkli account oz init ~/.starkli/sepolia/account.json
export STARKNET_ACCOUNT=~/.starkli/sepolia/account.json
Keep the keystore and password off git and off the command line. This run created:
0x06be8842d0d8cd1660b029018e13cbba161b0db7cf7d687ee9ca36256a2b3d73
Error: starkli account oz init ... --network sepolia → unexpected argument '--network'.
oz init only writes the account file. --network belongs on deploy and declare. -- --network does not fix it.
4. Point at an RPC starkli can speak
export STARKNET_RPC=https://api.cartridge.gg/x/starknet/sepolia/rpc/v0_8
starkli account deploy ~/.starkli/sepolia/account.json --network sepolia
STARKNET_RPC overrides --network. The warning is expected. See starkli providers.
Error 1. First deploy, no STARKNET_RPC. starkli’s free Sepolia vendor is Blast (~/.config/starkli/profiles.toml, vendor = "blast"). Blast now returns HTTP 403: Blast API is no longer available. starkli surfaces that as data did not match any variant of untagged enum JsonRpcResponse.
Error 2. export STARKNET_RPC=https://starknet-sepolia.drpc.org reaches Sepolia (chainId 0x534e5f5345504f4c4941, spec 0.10.3) and then fails:
JSON-RPC error: code=-32602, message="Invalid Params", data="unknown block tag 'pending'"
RPC 0.9+ renamed pending to pre_confirmed. starkli 0.4.2 is still the latest release and still sends pending. There is no newer starkli to upgrade to. Use a node that still serves v0.8.
Checked against live endpoints:
| URL | Spec | pending |
|---|---|---|
https://starknet-sepolia.drpc.org |
0.10.3 | rejected |
https://api.cartridge.gg/x/starknet/sepolia |
0.9.0 | rejected |
https://api.cartridge.gg/x/starknet/sepolia/rpc/v0_8 |
0.8.1 | accepted |
5. Fund, then press Enter
starkli gives an estimated {STRK} for deploying the contract:
Send that from a "funded Ready wallet"(install and setup through the Chrome extension for Ready ) to the deployer address.
Faucet: https://www.diadata.org/map/web3-builder-hub/starknet-faucets/
STRKhas 18 decimals. Token address (confirm on chain info):0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d.
Press Enter only after the transfer is visible. starkli then sends the txn and prints confirmed with txn hash. If you interrupt the wait, run starkli account fetch so the account file records the deployment.
Explorer: Voyager receipt.
6. Declare and deploy the contract
Same RPC and account. Class hash comes from starkli declare. The only constructor argument is the Ready owner address.
export STARKNET_RPC=https://api.cartridge.gg/x/starknet/sepolia/rpc/v0_8
export STARKNET_ACCOUNT=~/.starkli/sepolia/account.json
export STARKNET_KEYSTORE=~/.starkli/sepolia/keystore.json
starkli declare target/dev/spending_policy_SpendingPolicy.contract_class.json
starkli deploy <CLASS_HASH> <READY_ADDRESS>
voila! your openzepplin account is deployed and proof is on voyager. ( that was a hell lot of info to digest in one go, i agree.)
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
starkli: command not found |
Installer added starkliup only, or the shell was opened before ~/.starkli/env |
Run starkliup with no args, then source ~/.starkli/env |
Version tag is missing |
--version means “install this tag” |
Drop the flag |
src/lib.cairo not found |
Scarb crate root missing | mod spending_policy; in src/lib.cairo |
ContractAddress not found |
Cairo 2.21 needs the import | use starknet::ContractAddress; |
unexpected argument '--network' on oz init |
Flag is not valid there | starkli account oz init <file> |
JsonRpcResponse enum error |
Blast free RPC is shut down | Set STARKNET_RPC |
unknown block tag 'pending' |
Endpoint is RPC 0.9+ | Use Cartridge /rpc/v0_8 |
References
- starkli book: providers
- starkli releases (v0.4.2 is current; v0.4.0 moved to JSON-RPC 0.8 and STRK fees)
- Scarb download
- Starknet chain info
- Voyager Sepolia
- Ready session keys
- AVNU gasless paymaster (Sepolia sponsorship is separate from this self-paid account deploy)
About the author
Astrophile? Nerd? Tech-savvy? alchemy of heterogeneous elements, if either above matches your vibe, let's connect and talk!
Comments
Join the discussionNo comments yet. Be the first to comment.

