Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ We’ll use **three StarkNet accounts** in Argent:
## 3️⃣ Export your operator address private key

The _starknetstaking_ package needs your **operator** address private key to make the _attestations_.
You can obtain it from *Argent Wallet* following ![these steps](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/export-pk.gif)
You can obtain it from *Argent Wallet* following these steps:
![export PK](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/export-pk.gif)

---

Expand Down
2 changes: 1 addition & 1 deletion dappnode_package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"upstreamRepo": "NethermindEth/starknet-staking-v2",
"upstreamArg": "UPSTREAM_VERSION",
"type": "service",
"description": "StarkNet validator attestation tool",
"description": "StarkNet validator attestation tool, see the [Dappnode Docs](https://docs.dappnode.io/docs/user/staking/starknet/solo) for more info",
"author": "Dappnode Association <admin@dappnode.io> (https://github.com/dappnode)",
"categories": [
"Blockchain"
Expand Down
70 changes: 48 additions & 22 deletions getting-started.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
# 🚀 StarkNet Validator Solo Staking Guide

This guide will walk you through the **complete process of becoming a StarkNet validator and Solo Staker**, from wallet setup to running your attestation client on DAppNode.
We’ll use **[Argent Wallet](https://www.argent.xyz/)** and Starknet's block explorer interface for all on-chain interactions.
**StarkNet** is a Layer 2 network built on Ethereum, designed for scalability and performance using STARK proofs.
This guide will walk you through the **complete process of becoming a StarkNet validator and Solo Staker**, from wallet setup to running your attestation client and validator on DAppNode.

We’ll use **[Argent Wallet](https://www.argent.xyz/)** and StarkNet's block explorer interfaces for all on-chain interactions.

---

## 🛠 Prerequisites

✅ [Argent Wallet](https://www.argent.xyz/) installed and funded
✅ Access to a synced StarkNet full node (e.g., [Juno](https://github.com/NethermindEth/juno))
✅ [Argent Wallet](https://www.argent.xyz/) installed
✅ Access to a synced StarkNet full node (e.g., [Juno](https://github.com/dappnode/DAppNodePackage-juno-generic))
✅ Minimum STRK balance:
- **Sepolia:** 1 STRK
- **Mainnet:** 20,000 STRK
Expand All @@ -29,18 +31,39 @@ We’ll use **three StarkNet accounts** in Argent:

---

## 2️⃣ Fund the Accounts
## 2️⃣ Fund and Deploy the Accounts

- Fund your **staker** and **operator** accounts with the required STRK amount.
> On Sepolia, you can use the [StarkNet Faucet](https://starknet-faucet.vercel.app).

- Fund your **staker account** with the required STRK amount.
- On Sepolia, use the [StarkNet Faucet](https://starknet-faucet.vercel.app).
- Deploy your **accounts** in Argent Wallet following these steps:
![account deploy](https://i.imgur.com/LzwWHl0.gif)

---

## 3️⃣ Stake STRK
## 3️⃣ Export your operator address private key

The _starknetstaking_ package needs your **operator** address private key to make the _attestations_.
You can obtain it from *Argent Wallet* following these steps:
![export PK](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/export-pk.gif)

---

To interact with the contracts we will use the block expolorer [Voyager](https://voyager.online/) or [StarkScan](https://starkscan.co/)
## 4️⃣ Approve spending

1. Open the [Staking Contract on Voyager (Sepolia)](https://sepolia.voyager.online/contract/0x03745ab04a431fc02871a139be6b93d9260b0ff3e779ad9c8b377183b23109f1#writeContract).
1. Go to the block exporer STRK Token contract [STRK (Sepolia)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract) or [STRK (Mainnet)](https://sepolia.voyager.online/contract/0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d#writeContract)
2. Connect your **staker** Argent Wallet.
3. Scroll down to the `approve` function.
4. Fill in the calldata:
- **spender** → Starknet Staking Contract [Starknet Addresses](https://docs.starknet.io/resources/chain-info/#staking)
- **amount** → Amount in FRI (1 STRK = `1000000000000000000`)
5. Submit the transaction.



## 5️⃣ Stake STRK

1. Open the [Staking Contract on Voyager (Sepolia)](https://sepolia.voyager.online/contract/0x03745ab04a431fc02871a139be6b93d9260b0ff3e779ad9c8b377183b23109f1#writeContract) or the [Staking Contract on Voyager (Mainnet)](https://voyager.online/contract/0x00ca1702e64c81d9a07b86bd2c540188d92a2c73cf5cc0e508d949015e7e84a7#writeContract).
2. Connect your **staker** Argent Wallet.
3. Scroll down to the `stake` function.
4. Fill in the calldata:
Expand All @@ -49,37 +72,40 @@ To interact with the contracts we will use the block expolorer [Voyager](https:/
- **amount** → Amount in FRI (1 STRK = `1000000000000000000`)
5. Submit the transaction.


📌 **Staking contract addresses:** [StarkNet Docs – Staking](https://docs.starknet.io/resources/chain-info/#staking)

![Voyager write contract stake](https://github.com/dappnode/DAppNodePackage-starknetstaking-generic/raw/main/images/voyager-stake.png)

---

## 4️⃣ Set Up the Attestation Client on DAppNode
## 6️⃣ Install the StarkNet Staking Package on DAppNode

Now that you’ve staked, you need to set up the validator client on your DAppNode.

Once staked, set up your validator’s attestation client.
1. Open your DAppNode UI.
2. Go to the **DAppStore** and search for `starknetstaking`.
3. Click **Install**.

In your `starknetstaking` DAppNode package, configure:
Once installed, open the package configuration screen and provide:

- `OPERATIONAL ADDRESS` → Your operator account
- `PRIVATE KEY` → The private key from your operator account (Export it using Argent Wallet)
- `PRIVATE KEY` → The private key from your operator account (exported from Argent Wallet)

The attestation process will start automatically.
The attestation process will start automatically, and your validator will be live.

---

## 🧠 Notes & Tips

- You can **claim rewards** or **increase stake** later from the same Voyager contract UI.
- Make sure your validator client runs **24/7** to avoid penalties.
- Test your setup on Sepolia before moving to mainnet.
- Always test your setup on Sepolia before moving to mainnet.

---

**References:**
- [Argent Wallet](https://www.argent.xyz/)
- [Voyager StarkNet Explorer](https://voyager.online/)
- [Starkscan Starknet Explorer](https://starkscan.co/)
- [StarkNet Staking Docs](https://docs.starknet.io/architecture/staking/)
- [Juno Full Node](https://github.com/NethermindEth/juno)
- [Argent Wallet](https://www.argent.xyz/)
- [Voyager StarkNet Explorer](https://voyager.online/)
- [Starkscan Starknet Explorer](https://starkscan.co/)
- [StarkNet Staking Docs](https://docs.starknet.io/architecture/staking/)
- [Juno Full Node](https://github.com/NethermindEth/juno)
Binary file added images/deploy.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion setup-wizard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ fields:
service: staking
name: SIGNER_OPERATIONAL_ADDRESS
title: Operational Address
description: Address used to sign attestations (Hot wallet)
description: "Address used to sign attestations (Hot wallet)\ Read the [docs](https://docs.dappnode.io/docs/user/staking/starknet/solo) to learn how to get it"
required: true
pattern: ^0x[0-9a-fA-F]{1,64}$
patternErrorMessage: "Invalid contract address"
Expand Down