Skip to content

Commit a48176a

Browse files
authored
feat: release new docs (#3406)
* feat: update versioned docs from next docs * chore: update sidebar
1 parent 4473ca0 commit a48176a

8 files changed

Lines changed: 152 additions & 46 deletions

File tree

docs/versioned_docs/version-0.15.0/hardware-requirements.md

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,34 @@ title: Hardware Requirements
44

55
# Hardware Requirements :computer:
66

7-
The following specifications outline the hardware required to run a Juno node. These specifications are categorised into minimal and recommended requirements for different usage scenarios.
7+
Juno can be used either as part of a **validator** setup during Starkent staking v2 ([read more](https://nethermindeth.github.io/starknet-staking-v2/)) or as a **full node** serving RPC requests. Hardware requirements will vary depending on the intended usage.
88

9-
## Minimal requirements
9+
Each hardware component impacts different aspects of node performance:
10+
- **High-speed CPU cores** allow the node to execute Cairo-heavy RPC methods more quickly such as `starknet_traceTransaction` or `starknet_estimateFee`.
11+
- **Multiple CPU cores** (or threads) enable Juno to perform more tasks concurrently, which becomes especially important when serving a high volume of RPC requests.
12+
- **More RAM** reduces the likelihood of slowdowns when handling multiple data-intensive RPC requests.
13+
- **Fast SSD storage** significantly improves the overall node performance. Nearly all internal processes require reading data (for RPC purposes) and writing data (during syncing). Faster disk I/O directly translates into faster request handling and synchronization.
1014

11-
- **CPU**: At least 2 cores
12-
- **RAM**: 4GB or more
13-
- **Storage**: 600GB or more (SSD recommended; note: storage needs will grow over time)
15+
:::tip
16+
Remember to always pair your hardware accordingly. Having a very powerful CPU will provide minimal improvements if paired with a disk with slow read and write speeds.
17+
:::
18+
19+
## Minimum requirements (Validators)
1420

15-
## Recommended requirements
21+
These requirements are the absolute minimum to comfortably run a Juno node. They will allow the node to keep in sync as well as performing validation duties. Additionally, it will be well capable of serving RPC request needs for individuals or small groups.
1622

17-
- **CPU**: High-performance CPU with 4 or more cores
23+
- **CPU**: 4 CPU cores
1824
- **RAM**: 8GB or more
19-
- **Storage**: High-performance SSD with at least 600GB to accommodate future growth
25+
- **Storage**: High-speed NVMe SSD drive
26+
27+
## Recommended requirements (RPC providers)
28+
29+
With this configuration it will be possible for Juno nodes to work as servers to satisfy multiple RPC requests.
30+
31+
- **CPU**: 16 high-speed CPU cores
32+
- **RAM**: 64GB of RAM
33+
- **Storage**: Highest speed NVMe SSD drive
2034

2135
:::tip
22-
We intend the above specifications as a guideline. The minimal requirements support basic node operations, and the recommended settings ensure optimal performance and scalability for future needs.
23-
:::
36+
We intend the above specifications as a guideline. You should set the hardware requirements that fit best for your usage. If unsure, feel free to [reach the team](https://juno.nethermind.io/#community-and-support)!
37+
:::

docs/versioned_docs/version-0.15.0/json-rpc.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
---
32
title: JSON-RPC Interface
43
---
@@ -55,7 +54,7 @@ import TabItem from "@theme/TabItem";
5554
<TabItem value="curl" label="cURL">
5655

5756
```bash
58-
curl --location 'http://localhost:6060' \
57+
curl --location 'http://localhost:6060/v0_9' \
5958
--header 'Content-Type: application/json' \
6059
--data '{
6160
"jsonrpc": "2.0",
@@ -201,6 +200,7 @@ async fn main() {
201200

202201
Juno supports the following Starknet API versions:
203202

203+
- **v0.10.0**: Accessible via endpoints `/v0_10`, `/rpc/v0_10`
204204
- **v0.9.0**: Accessible via endpoints `/v0_9`, `/rpc/v0_9`
205205
- **v0.8.1**: Accessible via endpoints `/v0_8` or `/rpc/v0_8`, or the default `/`
206206
- **v0.7.0**: Accessible via endpoints `/v0_7`, `/rpc/v0_7`
@@ -210,6 +210,22 @@ To use a specific API version, specify the version endpoint in your RPC calls:
210210

211211
<Tabs>
212212

213+
<TabItem value="v10" label="v0.10.0">
214+
215+
```bash
216+
curl --location 'http://localhost:6060/v0_10' \
217+
--header 'Content-Type: application/json' \
218+
--data '{
219+
"jsonrpc": "2.0",
220+
"method": "starknet_chainId",
221+
"params": [],
222+
"id": 1
223+
}'
224+
```
225+
226+
</TabItem>
227+
228+
213229
<TabItem value="v9" label="v0.9.0">
214230

215231
```bash

docs/versioned_docs/version-0.15.0/plugins.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Juno Plugins
2+
title: Plugins
33
---
44

55
Juno supports plugins that satisfy the `JunoPlugin` interface, enabling developers to extend and customize Juno's behaviour and functionality by dynamically loading external plugins during runtime.

docs/versioned_docs/version-0.15.0/running-on-gcp.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Running Juno on GCP
2+
title: Deploy on GCP
33
---
44

55
# Running Juno on GCP :cloud:

docs/versioned_docs/version-0.15.0/snapshots.md

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Snapshots are provided in a compressed `.tar.zst` format for faster downloads an
1010

1111
| Network | Version | Download Link |
1212
| ------------------- | ------------- | ------------------------------------------------------------------------------------------------------------- |
13-
| Mainet | **>=v0.13.0** | [**juno_mainnet.tar.zst**](https://juno-snapshots.nethermind.io/files/mainnet/latest) |
13+
| Mainnet | **>=v0.13.0** | [**juno_mainnet.tar.zst**](https://juno-snapshots.nethermind.io/files/mainnet/latest) |
1414
| Sepolia | **>=v0.13.0** | [**juno_sepolia.tar.zst**](https://juno-snapshots.nethermind.io/files/sepolia/latest) |
1515
| Sepolia-Integration | **>=v0.13.0** | [**juno_sepolia_integration.tar.zst**](https://juno-snapshots.nethermind.io/files/sepolia-integration/latest) |
1616

@@ -57,31 +57,9 @@ brew install zstd
5757
sudo dnf install zstd # or yum install zstd
5858
```
5959

60-
### 3. Stream download and extract
60+
### 3. Download and extract
6161

62-
Create a subfolder inside `$HOME/snapshots` where to stream the download:
63-
64-
```bash
65-
# For Mainnet
66-
mkdir $HOME/snapshots/mainnet/
67-
```
68-
69-
Download and extract the snapshot directly to your target directory:
70-
71-
```bash
72-
# For Mainnet
73-
curl -s -L https://juno-snapshots.nethermind.io/files/mainnet/latest \
74-
| zstd -d | tar -xvf - -C $HOME/snapshots/mainnet
75-
```
76-
77-
For other networks, replace the URL with:
78-
79-
- **Sepolia**: `https://juno-snapshots.nethermind.io/files/sepolia/latest`
80-
- **Sepolia-Integration**: `https://juno-snapshots.nethermind.io/files/sepolia-integration/latest`
81-
82-
#### Alternative method: Download then extract
83-
84-
If you prefer the traditional two-step approach or have limited bandwidth, you can download the snapshot first and extract it later:
62+
Two-step approach where we first download the snapshot and extract it later. Note that this will create the requirement to have twice the space required for the Juno snapshot. If space is not enough you can always try the **alternative method** below.
8563

8664
##### 1. Download the snapshot
8765

@@ -108,6 +86,34 @@ mkdir $HOME/snapshots/mainnet/
10886
zstd -d juno_mainnet.tar.zst -c | tar -xvf - -C $HOME/snapshots/mainnet
10987
```
11088

89+
90+
#### Alternative method: Stream the snapshot directly
91+
:::warning
92+
Streaming can become unreliable if the network conditions are not extremely good, requiring multiple restarts. Resort to this if disk space is at a premium.
93+
:::
94+
95+
Create a subfolder inside `$HOME/snapshots` where to stream the download:
96+
97+
```bash
98+
# For Mainnet
99+
mkdir $HOME/snapshots/mainnet/
100+
```
101+
102+
Download and extract the snapshot directly to your target directory:
103+
104+
```bash
105+
# For Mainnet
106+
curl -s -L https://juno-snapshots.nethermind.io/files/mainnet/latest \
107+
| zstd -d | tar -xvf - -C $HOME/snapshots/mainnet
108+
```
109+
110+
111+
For other networks, replace the URL with:
112+
113+
- **Sepolia**: `https://juno-snapshots.nethermind.io/files/sepolia/latest`
114+
- **Sepolia-Integration**: `https://juno-snapshots.nethermind.io/files/sepolia-integration/latest`
115+
116+
111117
## Running Juno with snapshots
112118

113119
### 1. Run Juno
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
title: Performance Tuning
3+
---
4+
5+
It is important for full nodes to scale accordingly to the hardware where they are being executed. To unlock this, the following are a list of configurations users can update based on their hardware specs to maximize the performance of their Juno node.
6+
7+
The default values of each of these options are set to maximize performance with a machine that matches Juno's minimum requirements – described in the **Hardware Requirement** section.
8+
9+
## Database Compression
10+
11+
Set by the `--db-compression` flag, it applies a compression algorithm over the database **every time** Juno writes to it.
12+
13+
Available options:
14+
- `snappy`: Fast compression with a low compression ratio
15+
- `zstd`: Slower but reduces storage quite a lot
16+
- `minlz`: Alternative compression option
17+
18+
Depending on the compression algorithm used it becomes a trade-off between **disk space** and **CPU** usage every time there is a disk operation.
19+
20+
We recommend `zstd` because it is fast enough that it doesn't delays any process significantly while providing huge database size reduction.
21+
22+
:::info
23+
Note that once the compression is changed the new database is not compressed immediately, but gradually through the node usage by writing new information.
24+
:::
25+
26+
:::info
27+
There is a secret `zstd1` option that provides far greater performance than `zstd` but we are still testing it out and it might become the default later.
28+
:::
29+
30+
## Database Memory Table Size
31+
32+
Set by the `--db-memtable-size` flag (default: 256 MB), this controls the amount of memory allocated for the database memtable. The memtable is an in-memory buffer where writes are stored before being flushed to disk.
33+
34+
A sensible default is **256 MB** for nodes that satisfy the minimum requirements. Increasing this value reduces the frequency of disk flushes, which can improve write throughput during sync.
35+
36+
:::warning
37+
Setting this value too high can cause **uneven write performance**. Larger memtables mean flushes happen less frequently but involve more data at once, leading to bursty I/O patterns. If writes accumulate faster than the database can flush, writes will stall entirely until flushing catches up. A moderate value like 256 MB balances flush frequency with I/O smoothness.
38+
:::
39+
40+
## Database Compaction Concurrency
41+
42+
Set by the `--db-compaction-concurrency` flag, this controls how many concurrent compaction workers the database uses. Compaction is the background process that merges and optimises data on disk.
43+
44+
Format options:
45+
- `N`: Sets the range from 1 to N workers (e.g., `--db-compaction-concurrency=4`)
46+
- `M,N`: Sets the range from M to N workers (e.g., `--db-compaction-concurrency=2,8`)
47+
48+
The default is `1,GOMAXPROCS/2` (half of available CPU cores). Increasing the upper bound on systems with many cores can speed up compaction as well as increase CPU resources usage while syncing parts of the network where there was a lot of usage.
49+
50+
:::info
51+
Note that this effectively improve syncing speed while behind the tip of the chain but after reaching the latest block resource usage will gradually reduce back to minimums.
52+
:::
53+
54+
## Database Cache Size
55+
56+
Set by the `--db-cache-size` flag (default: 1024 MB), this determines the amount of memory allocated for caching frequently accessed data from the database.
57+
58+
A larger cache reduces disk reads and improves query performance. On systems with ample memory, increasing this value (e.g., 2048 or 4096 MB) can significantly improve RPC response times and overall node performance.

docs/versioned_docs/version-0.15.0/websocket.md

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,20 +285,31 @@ $ websocat -v ws://localhost:6061
285285

286286
Juno supports the following Starknet API versions:
287287

288+
- **v0.10.0**: Accessible via endpoint `/ws/v0_10`
288289
- **v0.9.0**: Accessible via endpoint `/ws/v0_9`
289-
- **v0.8.0**: Accessible via endpoint `/ws/v0_8`
290+
- **v0.8.1**: Accessible via endpoint `/ws/v0_8`
290291
- **v0.7.0**: Accessible via endpoint `/ws/v0_7`
291292

292293
To use a specific API version, specify the version endpoint in your WS calls:
293294

294295
<Tabs>
295-
<TabItem value="latest" label="Latest">
296+
<TabItem value="v10" label="v0.10.0">
296297

297298
```bash
298299
# wscat
299300
$ wscat -c ws://localhost:6061/ws/v0_9
300301
> {"jsonrpc": "2.0", "method": "juno_version", "id": 1}
301-
< {"jsonrpc": "2.0", "result": "v0.14.3", "id": 1}
302+
< {"jsonrpc": "2.0", "result": "v0.15.18", "id": 1}
303+
```
304+
305+
</TabItem>
306+
<TabItem value="v9" label="v0.9.0">
307+
308+
```bash
309+
# wscat
310+
$ wscat -c ws://localhost:6061/ws/v0_9
311+
> {"jsonrpc": "2.0", "method": "juno_version", "id": 1}
312+
< {"jsonrpc": "2.0", "result": "v0.15.18", "id": 1}
302313
```
303314

304315
</TabItem>
@@ -308,7 +319,7 @@ $ wscat -c ws://localhost:6061/ws/v0_9
308319
# wscat
309320
$ wscat -c ws://localhost:6061/ws/v0_8
310321
> {"jsonrpc": "2.0", "method": "juno_version", "id": 1}
311-
< {"jsonrpc": "2.0", "result": "v0.14.3", "id": 1}
322+
< {"jsonrpc": "2.0", "result": "v0.15.18", "id": 1}
312323
```
313324

314325
</TabItem>
@@ -318,7 +329,7 @@ $ wscat -c ws://localhost:6061/ws/v0_8
318329
# wscat
319330
$ wscat -c ws://localhost:6061/ws/v0_7
320331
> {"jsonrpc": "2.0", "method": "juno_version", "id": 1}
321-
< {"jsonrpc": "2.0", "result": "v0.14.3", "id": 1}
332+
< {"jsonrpc": "2.0", "result": "v0.15.18", "id": 1}
322333
```
323334

324335
</TabItem>

docs/versioned_sidebars/version-0.15.0-sidebars.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@
99
"hardware-requirements",
1010
"running-juno",
1111
"configuring",
12-
"plugins",
12+
"updating",
13+
"tuning",
1314
"running-on-gcp",
14-
"updating"
15+
"plugins"
1516
]
1617
},
1718
{

0 commit comments

Comments
 (0)