From 27bd9ee47e74983e67bc7a8b6d9ff4531ecdfe1c Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Tue, 16 Jan 2024 13:30:29 -0500 Subject: [PATCH 01/22] Reflect PR 2408 --- docker-compose-auto.yml | 6 +-- docs/develop/nova/local_development.md | 2 +- .../farming/advanced-cli/cli-tips.mdx | 1 - .../farming/advanced-cli/platforms/_linux.mdx | 2 +- .../farming/advanced-cli/platforms/_macos.mdx | 2 +- .../advanced-cli/platforms/_windows.mdx | 2 +- .../staking/operators/register-operator.mdx | 34 +++++++------- .../staking/operators/tips-operator.mdx | 44 +++++++++---------- src/components/DockerFileGenerator/index.jsx | 6 +-- .../SystemdServiceFileGenerator/index.jsx | 6 +-- .../develop/nova/local_development.md | 2 +- .../farming/advanced-cli/cli-tips.mdx | 1 - .../farming/advanced-cli/platforms/_linux.mdx | 2 +- .../farming/advanced-cli/platforms/_macos.mdx | 2 +- .../advanced-cli/platforms/_windows.mdx | 2 +- .../staking/operators/register-operator.mdx | 34 +++++++------- .../staking/operators/tips-operator.mdx | 44 +++++++++---------- 17 files changed, 95 insertions(+), 97 deletions(-) diff --git a/docker-compose-auto.yml b/docker-compose-auto.yml index 821b6e539fc..3fbde51b3da 100644 --- a/docker-compose-auto.yml +++ b/docker-compose-auto.yml @@ -23,14 +23,14 @@ services: "--base-path", "/var/subspace", "--blocks-pruning", "256", "--state-pruning", "archive-canonical", - "--port", "30333", + "--listen-on", "30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", "--rpc-cors", "all", "--rpc-methods", "unsafe", - "--rpc-external", + "--rpc-listen-on", "--no-private-ipv4", - "--validator", + "--farmer", # Replace `INSERT_YOUR_ID` with your node ID (will be shown in telemetry) "--name", "INSERT_YOUR_ID" ] diff --git a/docs/develop/nova/local_development.md b/docs/develop/nova/local_development.md index 6e27203e3ca..5d4fb68a95c 100644 --- a/docs/develop/nova/local_development.md +++ b/docs/develop/nova/local_development.md @@ -33,7 +33,7 @@ After downloading both files that suit your system, start a node using your pref You can do this with the following command: ```bash -./your_subspace_node_path --dev --alice --rpc-port 9444 -- --domain-id 3 --dev --rpc-port 8545 +./your_subspace_node_path --dev --rpc-listen-on 9444 -- --domain-id 3 --dev --rpc-listen-on 8545 ``` This will create a local RPC on port **8545**. diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 838c4440c8f..cdafd82a4d3 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -151,7 +151,6 @@ While it might be tempting to adjust certain parameters that seem related to DSN ``` --out-peers --in-peers ---in-peers-light --dsn-target-connections --dsn-pending-in-connections --dsn-in-connections diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index 40535f04c8c..a2e0b149540 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -98,7 +98,7 @@ import styles from '@site/src/pages/index.module.css'; --blocks-pruning 256 \ --state-pruning archive-canonical \ --no-private-ipv4 \ - --validator \ + --farmer \ --name "INSERT_YOUR_ID" ``` 4. You should see something similar in the terminal: diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index b65591bc3fc..b3d0df261aa 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -68,7 +68,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl --blocks-pruning 256 \ --state-pruning archive-canonical \ --no-private-ipv4 \ - --validator \ + --farmer \ --name "INSERT_YOUR_ID" ``` diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index c5945a71a07..06bd9419f05 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -64,7 +64,7 @@ This is because the application is trying to access the internet. This is expect --blocks-pruning 256 ` --state-pruning archive-canonical ` --no-private-ipv4 ` - --validator ` + --farmer ` --name "INSERT_YOUR_ID" ``` diff --git a/docs/farming-&-staking/staking/operators/register-operator.mdx b/docs/farming-&-staking/staking/operators/register-operator.mdx index 7133f6c5882..e672f84da8b 100644 --- a/docs/farming-&-staking/staking/operators/register-operator.mdx +++ b/docs/farming-&-staking/staking/operators/register-operator.mdx @@ -188,10 +188,10 @@ Stake Wars are using the domain **Nova** with ID **1**. --domain-id your_domain_id \` --chain gemini-3g \` --operator-id your_operator_id \` ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` ---listen-addr /ip4/0.0.0.0/tcp/40333 \` +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` +--listen-on /ip4/0.0.0.0/tcp/40333 \` --keystore-path /keystore`} @@ -208,10 +208,10 @@ Stake Wars are using the domain **Nova** with ID **1**. --domain-id your_domain_id \\ --chain gemini-3g \\ --operator-id your_operator_id \\ ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ ---listen-addr /ip4/0.0.0.0/tcp/40333 \\ +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--listen-on /ip4/0.0.0.0/tcp/40333 \\ --keystore-path /keystore`} @@ -228,10 +228,10 @@ Stake Wars are using the domain **Nova** with ID **1**. --domain-id your_domain_id \\ --chain gemini-3g \\ --operator-id your_operator_id \\ ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ ---listen-addr /ip4/0.0.0.0/tcp/40333 \\ +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--listen-on /ip4/0.0.0.0/tcp/40333 \\ --keystore-path /keystore`} @@ -267,7 +267,7 @@ services: command: [ "--chain", "gemini-3g", "--base-path", "/var/subspace", - "--port", "30333", + "--listen-on", "30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) @@ -277,10 +277,10 @@ services: "--domain-id", "INSERT_YOUR_DOMAIN_ID", # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", - "--listen-addr", "/ip4/0.0.0.0/tcp/40333", - "--bootnodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootnodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootnodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", + "--listen-on", "/ip4/0.0.0.0/tcp/40333", + "--bootstrap-nodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", + "--bootstrap-nodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", + "--bootstrap-nodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", "--keystore-path", "/keystore" ] healthcheck: diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index 5765562fbf4..1627102aa42 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -127,16 +127,16 @@ To run both operator and validator at the same time, provide requrired flags for --blocks-pruning 256 \` --state-pruning archive \` --no-private-ipv4 \` ---validator \` +--farmer \` --name your_node_name \` -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` --keystore-path /keystore \` ---listen-addr /ip4/0.0.0.0/tcp/40333 \` ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--listen-on /ip4/0.0.0.0/tcp/40333 \` +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -150,16 +150,16 @@ To run both operator and validator at the same time, provide requrired flags for --blocks-pruning 256 \\ --state-pruning archive \\ --no-private-ipv4 \\ ---validator \\ +--farmer \\ --name your_node_name \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ --keystore-path /keystore \\ ---listen-addr /ip4/0.0.0.0/tcp/40333 \\ ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--listen-on /ip4/0.0.0.0/tcp/40333 \\ +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -172,16 +172,16 @@ To run both operator and validator at the same time, provide requrired flags for --blocks-pruning 256 \\ --state-pruning archive \\ --no-private-ipv4 \\ ---validator \\ +--farmer \\ --name your_node_name \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ --keystore-path /keystore \\ ---listen-addr /ip4/0.0.0.0/tcp/40333 \\ ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--listen-on /ip4/0.0.0.0/tcp/40333 \\ +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -217,14 +217,14 @@ services: "--base-path", "/var/subspace", "--blocks-pruning", "256", "--state-pruning", "archive-canonical", - "--port", "30333", + "--listen-on", "30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", "--rpc-cors", "all", "--rpc-methods", "unsafe", - "--rpc-external", + "--rpc-listen-on", "--no-private-ipv4", - "--validator", + "--farmer", "--name", "INSERT_YOUR_ID", "--", # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on @@ -232,10 +232,10 @@ services: # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", "--keystore-path", "/keystore", - "--listen-addr", "/ip4/0.0.0.0/tcp/40333", - "--bootnodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootnodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootnodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", + "--listen-on", "/ip4/0.0.0.0/tcp/40333", + "--bootstrap-nodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", + "--bootstrap-nodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", + "--bootstrap-nodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) ] healthcheck: diff --git a/src/components/DockerFileGenerator/index.jsx b/src/components/DockerFileGenerator/index.jsx index be450fe2d1c..52f66085728 100644 --- a/src/components/DockerFileGenerator/index.jsx +++ b/src/components/DockerFileGenerator/index.jsx @@ -115,14 +115,14 @@ services: "--base-path", "/var/subspace", "--blocks-pruning", "256", "--state-pruning", "archive-canonical", - "--port", "30333", + "--listen-on", "30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", "--rpc-cors", "all", "--rpc-methods", "unsafe", - "--rpc-external", + "--rpc-listen-on", "--no-private-ipv4", - "--validator", + "--farmer", "--name", "${formData.nodeName}" ] healthcheck: diff --git a/src/components/SystemdServiceFileGenerator/index.jsx b/src/components/SystemdServiceFileGenerator/index.jsx index b241f61a579..41f3d635663 100644 --- a/src/components/SystemdServiceFileGenerator/index.jsx +++ b/src/components/SystemdServiceFileGenerator/index.jsx @@ -86,9 +86,9 @@ ExecStart=${formData.nodeBinPath} \\ --state-pruning archive-canonical \\ --keep-blocks ${formData.archival === "on" ? "archive-canonical" : "256"} \\ --chain ${chain} \\ - --validator \\ - --no-private-ip \\ - --listen-addr /ip4/0.0.0.0/tcp/${formData.nodePort} \\ + --farmer \\ + --no-private-ipv4 \\ + --listen-on /ip4/0.0.0.0/tcp/${formData.nodePort} \\ --dsn-listen-on /ip4/0.0.0.0/udp/${formData.nodeDsnPort}/quic-v1 \\ --dsn-listen-on /ip4/0.0.0.0/tcp/${formData.nodeDsnPort} \\ ${formData.extraNodeArgs ? "\\\n" + formData.extraNodeArgs : ""} diff --git a/versioned_docs/version-latest/develop/nova/local_development.md b/versioned_docs/version-latest/develop/nova/local_development.md index 6e27203e3ca..5d4fb68a95c 100644 --- a/versioned_docs/version-latest/develop/nova/local_development.md +++ b/versioned_docs/version-latest/develop/nova/local_development.md @@ -33,7 +33,7 @@ After downloading both files that suit your system, start a node using your pref You can do this with the following command: ```bash -./your_subspace_node_path --dev --alice --rpc-port 9444 -- --domain-id 3 --dev --rpc-port 8545 +./your_subspace_node_path --dev --rpc-listen-on 9444 -- --domain-id 3 --dev --rpc-listen-on 8545 ``` This will create a local RPC on port **8545**. diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 838c4440c8f..cdafd82a4d3 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -151,7 +151,6 @@ While it might be tempting to adjust certain parameters that seem related to DSN ``` --out-peers --in-peers ---in-peers-light --dsn-target-connections --dsn-pending-in-connections --dsn-in-connections diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index 40535f04c8c..a2e0b149540 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -98,7 +98,7 @@ import styles from '@site/src/pages/index.module.css'; --blocks-pruning 256 \ --state-pruning archive-canonical \ --no-private-ipv4 \ - --validator \ + --farmer \ --name "INSERT_YOUR_ID" ``` 4. You should see something similar in the terminal: diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index b65591bc3fc..b3d0df261aa 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -68,7 +68,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl --blocks-pruning 256 \ --state-pruning archive-canonical \ --no-private-ipv4 \ - --validator \ + --farmer \ --name "INSERT_YOUR_ID" ``` diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index c5945a71a07..06bd9419f05 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -64,7 +64,7 @@ This is because the application is trying to access the internet. This is expect --blocks-pruning 256 ` --state-pruning archive-canonical ` --no-private-ipv4 ` - --validator ` + --farmer ` --name "INSERT_YOUR_ID" ``` diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx index 7133f6c5882..e672f84da8b 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx @@ -188,10 +188,10 @@ Stake Wars are using the domain **Nova** with ID **1**. --domain-id your_domain_id \` --chain gemini-3g \` --operator-id your_operator_id \` ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` ---listen-addr /ip4/0.0.0.0/tcp/40333 \` +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` +--listen-on /ip4/0.0.0.0/tcp/40333 \` --keystore-path /keystore`} @@ -208,10 +208,10 @@ Stake Wars are using the domain **Nova** with ID **1**. --domain-id your_domain_id \\ --chain gemini-3g \\ --operator-id your_operator_id \\ ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ ---listen-addr /ip4/0.0.0.0/tcp/40333 \\ +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--listen-on /ip4/0.0.0.0/tcp/40333 \\ --keystore-path /keystore`} @@ -228,10 +228,10 @@ Stake Wars are using the domain **Nova** with ID **1**. --domain-id your_domain_id \\ --chain gemini-3g \\ --operator-id your_operator_id \\ ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ ---listen-addr /ip4/0.0.0.0/tcp/40333 \\ +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--listen-on /ip4/0.0.0.0/tcp/40333 \\ --keystore-path /keystore`} @@ -267,7 +267,7 @@ services: command: [ "--chain", "gemini-3g", "--base-path", "/var/subspace", - "--port", "30333", + "--listen-on", "30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) @@ -277,10 +277,10 @@ services: "--domain-id", "INSERT_YOUR_DOMAIN_ID", # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", - "--listen-addr", "/ip4/0.0.0.0/tcp/40333", - "--bootnodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootnodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootnodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", + "--listen-on", "/ip4/0.0.0.0/tcp/40333", + "--bootstrap-nodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", + "--bootstrap-nodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", + "--bootstrap-nodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", "--keystore-path", "/keystore" ] healthcheck: diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index 5765562fbf4..1627102aa42 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -127,16 +127,16 @@ To run both operator and validator at the same time, provide requrired flags for --blocks-pruning 256 \` --state-pruning archive \` --no-private-ipv4 \` ---validator \` +--farmer \` --name your_node_name \` -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` --keystore-path /keystore \` ---listen-addr /ip4/0.0.0.0/tcp/40333 \` ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--listen-on /ip4/0.0.0.0/tcp/40333 \` +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -150,16 +150,16 @@ To run both operator and validator at the same time, provide requrired flags for --blocks-pruning 256 \\ --state-pruning archive \\ --no-private-ipv4 \\ ---validator \\ +--farmer \\ --name your_node_name \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ --keystore-path /keystore \\ ---listen-addr /ip4/0.0.0.0/tcp/40333 \\ ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--listen-on /ip4/0.0.0.0/tcp/40333 \\ +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -172,16 +172,16 @@ To run both operator and validator at the same time, provide requrired flags for --blocks-pruning 256 \\ --state-pruning archive \\ --no-private-ipv4 \\ ---validator \\ +--farmer \\ --name your_node_name \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ --keystore-path /keystore \\ ---listen-addr /ip4/0.0.0.0/tcp/40333 \\ ---bootnodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootnodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootnodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--listen-on /ip4/0.0.0.0/tcp/40333 \\ +--bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -217,14 +217,14 @@ services: "--base-path", "/var/subspace", "--blocks-pruning", "256", "--state-pruning", "archive-canonical", - "--port", "30333", + "--listen-on", "30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", "--rpc-cors", "all", "--rpc-methods", "unsafe", - "--rpc-external", + "--rpc-listen-on", "--no-private-ipv4", - "--validator", + "--farmer", "--name", "INSERT_YOUR_ID", "--", # Replace INSERT_YOUR_DOMAIN_ID with domain ID you want to be operator on @@ -232,10 +232,10 @@ services: # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", "--keystore-path", "/keystore", - "--listen-addr", "/ip4/0.0.0.0/tcp/40333", - "--bootnodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootnodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootnodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", + "--listen-on", "/ip4/0.0.0.0/tcp/40333", + "--bootstrap-nodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", + "--bootstrap-nodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", + "--bootstrap-nodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) ] healthcheck: From 36d3b944de7ebad3777d2a7e8b459f006c7cf943 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Tue, 16 Jan 2024 15:46:04 -0500 Subject: [PATCH 02/22] Reflect PR 2412 --- .../staking/operators/register-operator.mdx | 7 ++----- .../staking/operators/register-operator.mdx | 7 ++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/docs/farming-&-staking/staking/operators/register-operator.mdx b/docs/farming-&-staking/staking/operators/register-operator.mdx index e672f84da8b..3153c847c8d 100644 --- a/docs/farming-&-staking/staking/operators/register-operator.mdx +++ b/docs/farming-&-staking/staking/operators/register-operator.mdx @@ -51,7 +51,7 @@ An operator needs a key pair to participate in bundle production. -1. Start a node on a developer chain by running `./target/release/subspace-node --chain dev -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` +1. Start a node on a developer chain by running `./target/release/subspace-node -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` :::tip You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. @@ -112,7 +112,7 @@ You can adjust the `--keystore-path` if you prefer to generate the keys in a dif 1. Make sure to have [Docker installed](https://www.docker.com/get-started/). You can run `docker -v` in the terminal of your choice to make sure it's installed. 2. Start a developer node by running -`./target/release/subspace-node --chain dev -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` +`./target/release/subspace-node --dev -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` :::tip You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. @@ -186,7 +186,6 @@ Stake Wars are using the domain **Nova** with ID **1**. --base-path your_path_to_node_data \` -- \` --domain-id your_domain_id \` ---chain gemini-3g \` --operator-id your_operator_id \` --bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` --bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` @@ -206,7 +205,6 @@ Stake Wars are using the domain **Nova** with ID **1**. --base-path your_path_to_node_data \\ -- \\ --domain-id your_domain_id \\ ---chain gemini-3g \\ --operator-id your_operator_id \\ --bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ --bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ @@ -226,7 +224,6 @@ Stake Wars are using the domain **Nova** with ID **1**. --base-path your_path_to_node_data \\ -- \\ --domain-id your_domain_id \\ ---chain gemini-3g \\ --operator-id your_operator_id \\ --bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ --bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx index e672f84da8b..3153c847c8d 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx @@ -51,7 +51,7 @@ An operator needs a key pair to participate in bundle production. -1. Start a node on a developer chain by running `./target/release/subspace-node --chain dev -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` +1. Start a node on a developer chain by running `./target/release/subspace-node -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` :::tip You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. @@ -112,7 +112,7 @@ You can adjust the `--keystore-path` if you prefer to generate the keys in a dif 1. Make sure to have [Docker installed](https://www.docker.com/get-started/). You can run `docker -v` in the terminal of your choice to make sure it's installed. 2. Start a developer node by running -`./target/release/subspace-node --chain dev -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` +`./target/release/subspace-node --dev -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` :::tip You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. @@ -186,7 +186,6 @@ Stake Wars are using the domain **Nova** with ID **1**. --base-path your_path_to_node_data \` -- \` --domain-id your_domain_id \` ---chain gemini-3g \` --operator-id your_operator_id \` --bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` --bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` @@ -206,7 +205,6 @@ Stake Wars are using the domain **Nova** with ID **1**. --base-path your_path_to_node_data \\ -- \\ --domain-id your_domain_id \\ ---chain gemini-3g \\ --operator-id your_operator_id \\ --bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ --bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ @@ -226,7 +224,6 @@ Stake Wars are using the domain **Nova** with ID **1**. --base-path your_path_to_node_data \\ -- \\ --domain-id your_domain_id \\ ---chain gemini-3g \\ --operator-id your_operator_id \\ --bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ --bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ From 0a21692d72964d50f0465da061d39eede7e8fbd7 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Tue, 16 Jan 2024 16:54:56 -0500 Subject: [PATCH 03/22] Add a block on NUMA support --- .../farming/advanced-cli/cli-tips.mdx | 21 ++++++++++++++++++- .../farming/advanced-cli/cli-tips.mdx | 21 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx index cdafd82a4d3..70f75bff8cb 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -172,4 +172,23 @@ Increasing the values of the farmer parameters could increase the plotting speed ``` --out-connections --pending-out-connections -``` \ No newline at end of file +``` + + +### NUMA Support + +:::note +NUMA support will be beneficial for farmers with a large, powefull CPUs and lots of RAM memory available. Required RAM amount depends on a processor and number of theads, so we can't provide any specific number. +::: + +Previously plotting/replotting thread pools were created for each farm separately even though only configured number of them can be used at a time (by default just one). +With introduction of NUMA support, the farmer application has a thread pool manager that will create necessary number of thread pools that will be allocated to currently plotting/replotting farms. +When thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead OS is free to move threads between cores, but only withing CPU cores allocated for thread pool. This will ensure plotting for a particular sector only happens on particular CPU/NUMA node. + +#### Enabling NUMA on Windows/Linux machines + +On Linux and Windows farmer will detect NUMA systems and create number of thread pools that corresponds to number of NUMA nodes. This means default behavior will change for large CPUs and will consume more memory as the result, but that can be changed to the previous behavior with CLI options if desired. + +In order to use NUMA, you need to enable it via BIOS of your **motherboard** for farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc** processors, but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. + +To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx index cdafd82a4d3..9a093f7de36 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -172,4 +172,23 @@ Increasing the values of the farmer parameters could increase the plotting speed ``` --out-connections --pending-out-connections -``` \ No newline at end of file +``` + + +### NUMA Support + +:::note +NUMA support will be beneficial for farmers with a large, powefull CPUs and lots of RAM memory available. Required RAM amount depends on a processor and number of theads, so we can't provide any specific number. +::: + +Previously plotting/replotting thread pools were created for each farm separately even though only configured number of them can be used at a time (by default just one). +With introduction of NUMA support, the farmer application has a thread pool manager that will create necessary number of thread pools that will be allocated to currently plotting/replotting farms. +When thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead OS is free to move threads between cores, but only withing CPU cores allocated for thread pool. This will ensure plotting for a particular sector only happens on particular CPU/NUMA node. + +#### Enabling NUMA on Windows/Linux machines + +On Linux and Windows farmer will detect NUMA systems and create number of thread pools that corresponds to number of NUMA nodes. This means default behavior will change for large CPUs and will consume more memory as the result, but that can be changed to the previous behavior with CLI options if desired. + +In order to use NUMA, you need to enable it via BIOS of your **motherboard** for farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc** processors, but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. + +To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file From 93e2bd3723c950cd7be89e9fbc947fa47224f53e Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Tue, 16 Jan 2024 17:21:16 -0500 Subject: [PATCH 04/22] Reflect PR 2405 --- docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx | 4 ++-- .../farming/advanced-cli/platforms/_linux.mdx | 2 +- .../farming/advanced-cli/platforms/_macos.mdx | 4 ++-- .../farming/advanced-cli/platforms/_windows.mdx | 4 ++-- .../staking/operators/register-operator.mdx | 7 ++++--- .../staking/operators/tips-operator.mdx | 9 +++++---- src/components/DockerFileGenerator/index.jsx | 1 + src/components/SystemdServiceFileGenerator/index.jsx | 1 + .../farming-&-staking/farming/advanced-cli/cli-tips.mdx | 2 +- .../farming/advanced-cli/platforms/_linux.mdx | 2 +- .../farming/advanced-cli/platforms/_macos.mdx | 2 +- .../farming/advanced-cli/platforms/_windows.mdx | 2 +- .../staking/operators/register-operator.mdx | 7 ++++--- .../staking/operators/tips-operator.mdx | 7 ++++--- 14 files changed, 30 insertions(+), 24 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 70f75bff8cb..6a81c3b6df4 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -56,7 +56,7 @@ To set your node to use a custom path all you will need to do is add the `--base ```bash # start node and store data in `NODE_DATA_PATH` instead of default location -./NODE_FILE_NAME --base-path NODE_DATA_PATH --chain gemini-3g ...` +./NODE_FILE_NAME run --base-path NODE_DATA_PATH --chain gemini-3g ...` ``` @@ -191,4 +191,4 @@ On Linux and Windows farmer will detect NUMA systems and create number of thread In order to use NUMA, you need to enable it via BIOS of your **motherboard** for farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc** processors, but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. -To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). +To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index a2e0b149540..d04333528e2 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -93,7 +93,7 @@ import styles from '@site/src/pages/index.module.css'; ```bash # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command - ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-08 \ + ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-08 run \ --chain gemini-3g \ --blocks-pruning 256 \ --state-pruning archive-canonical \ diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index b3d0df261aa..af5e5909551 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -63,7 +63,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl ```bash # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command -./subspace-node-macos-aarch64-gemini-3g-2024-jan-08 \ +./subspace-node-macos-aarch64-gemini-3g-2024-jan-08 run \ --chain gemini-3g \ --blocks-pruning 256 \ --state-pruning archive-canonical \ @@ -124,4 +124,4 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. +3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index 06bd9419f05..bac6fe160a8 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -59,7 +59,7 @@ This is because the application is trying to access the internet. This is expect ```powershell # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command -.\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-08.exe ` +.\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-08.exe run` --chain gemini-3g ` --blocks-pruning 256 ` --state-pruning archive-canonical ` @@ -120,4 +120,4 @@ This is because the application is trying to access the internet. This is expect 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. +3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file diff --git a/docs/farming-&-staking/staking/operators/register-operator.mdx b/docs/farming-&-staking/staking/operators/register-operator.mdx index 3153c847c8d..d986abd4c50 100644 --- a/docs/farming-&-staking/staking/operators/register-operator.mdx +++ b/docs/farming-&-staking/staking/operators/register-operator.mdx @@ -180,7 +180,7 @@ Stake Wars are using the domain **Nova** with ID **1**. -{`target/production/subspace-node \` +{`target/production/subspace-node run \` --chain gemini-3g \` --name your_node_name \` --base-path your_path_to_node_data \` @@ -199,7 +199,7 @@ Stake Wars are using the domain **Nova** with ID **1**. -{`target/production/subspace-node \\ +{`target/production/subspace-node run \\ --chain gemini-3g \\ --name your_node_name \\ --base-path your_path_to_node_data \\ @@ -218,7 +218,7 @@ Stake Wars are using the domain **Nova** with ID **1**. -{`target/production/subspace-node \\ +{`target/production/subspace-node run \\ --chain gemini-3g \\ --name your_node_name \\ --base-path your_path_to_node_data \\ @@ -262,6 +262,7 @@ services: - "0.0.0.0:40333:40333/tcp" restart: unless-stopped command: [ + "run", "--chain", "gemini-3g", "--base-path", "/var/subspace", "--listen-on", "30333", diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index 1627102aa42..7fc0ffbfe08 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -122,7 +122,7 @@ To run both operator and validator at the same time, provide requrired flags for -{`target/production/subspace-node \` +{`target/production/subspace-node run \` --chain gemini-3g \` --blocks-pruning 256 \` --state-pruning archive \` @@ -145,7 +145,7 @@ To run both operator and validator at the same time, provide requrired flags for -{`target/production/subspace-node \\ +{`target/production/subspace-node run \\ --chain gemini-3g \\ --blocks-pruning 256 \\ --state-pruning archive \\ @@ -167,7 +167,7 @@ To run both operator and validator at the same time, provide requrired flags for -{`target/production/subspace-node \\ +{`target/production/subspace-node run \\ --chain gemini-3g \\ --blocks-pruning 256 \\ --state-pruning archive \\ @@ -213,6 +213,7 @@ services: - "0.0.0.0:40333:40333/tcp" restart: unless-stopped command: [ + "run", "--chain", "gemini-3g", "--base-path", "/var/subspace", "--blocks-pruning", "256", @@ -290,4 +291,4 @@ To ensure the minimum downtime during your switch, we propose the following: 1. Sync a new operator node using a throwaway key. You can generate a new key, just not insert it into your keystore. 2. Stop the original node and rename the keystore (or whatever you feel comfortable doing to prevent you accidentally starting the original node up with the original signing key). 3. Update the keystore on the new node with the original signing key. -4. Restart the new operator node. +4. Restart the new operator node. \ No newline at end of file diff --git a/src/components/DockerFileGenerator/index.jsx b/src/components/DockerFileGenerator/index.jsx index 52f66085728..7fe4afedcc7 100644 --- a/src/components/DockerFileGenerator/index.jsx +++ b/src/components/DockerFileGenerator/index.jsx @@ -111,6 +111,7 @@ services: restart: unless-stopped command: [ + "run", "--chain", "${network}", "--base-path", "/var/subspace", "--blocks-pruning", "256", diff --git a/src/components/SystemdServiceFileGenerator/index.jsx b/src/components/SystemdServiceFileGenerator/index.jsx index 41f3d635663..4effcdce567 100644 --- a/src/components/SystemdServiceFileGenerator/index.jsx +++ b/src/components/SystemdServiceFileGenerator/index.jsx @@ -81,6 +81,7 @@ After=network.target User=${formData.user} Group=${formData.user} ExecStart=${formData.nodeBinPath} \\ + run \\ --name ${formData.nodeName} \\ --base-path ${formData.nodeData} \\ --state-pruning archive-canonical \\ diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 9a093f7de36..6a81c3b6df4 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -56,7 +56,7 @@ To set your node to use a custom path all you will need to do is add the `--base ```bash # start node and store data in `NODE_DATA_PATH` instead of default location -./NODE_FILE_NAME --base-path NODE_DATA_PATH --chain gemini-3g ...` +./NODE_FILE_NAME run --base-path NODE_DATA_PATH --chain gemini-3g ...` ``` diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index a2e0b149540..d04333528e2 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -93,7 +93,7 @@ import styles from '@site/src/pages/index.module.css'; ```bash # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command - ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-08 \ + ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-08 run \ --chain gemini-3g \ --blocks-pruning 256 \ --state-pruning archive-canonical \ diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index b3d0df261aa..cdfac03b843 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -63,7 +63,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl ```bash # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command -./subspace-node-macos-aarch64-gemini-3g-2024-jan-08 \ +./subspace-node-macos-aarch64-gemini-3g-2024-jan-08 run \ --chain gemini-3g \ --blocks-pruning 256 \ --state-pruning archive-canonical \ diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index 06bd9419f05..d43065ef5a2 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -59,7 +59,7 @@ This is because the application is trying to access the internet. This is expect ```powershell # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command -.\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-08.exe ` +.\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-08.exe run` --chain gemini-3g ` --blocks-pruning 256 ` --state-pruning archive-canonical ` diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx index 3153c847c8d..d986abd4c50 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx @@ -180,7 +180,7 @@ Stake Wars are using the domain **Nova** with ID **1**. -{`target/production/subspace-node \` +{`target/production/subspace-node run \` --chain gemini-3g \` --name your_node_name \` --base-path your_path_to_node_data \` @@ -199,7 +199,7 @@ Stake Wars are using the domain **Nova** with ID **1**. -{`target/production/subspace-node \\ +{`target/production/subspace-node run \\ --chain gemini-3g \\ --name your_node_name \\ --base-path your_path_to_node_data \\ @@ -218,7 +218,7 @@ Stake Wars are using the domain **Nova** with ID **1**. -{`target/production/subspace-node \\ +{`target/production/subspace-node run \\ --chain gemini-3g \\ --name your_node_name \\ --base-path your_path_to_node_data \\ @@ -262,6 +262,7 @@ services: - "0.0.0.0:40333:40333/tcp" restart: unless-stopped command: [ + "run", "--chain", "gemini-3g", "--base-path", "/var/subspace", "--listen-on", "30333", diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index 1627102aa42..8c822135fbf 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -122,7 +122,7 @@ To run both operator and validator at the same time, provide requrired flags for -{`target/production/subspace-node \` +{`target/production/subspace-node run \` --chain gemini-3g \` --blocks-pruning 256 \` --state-pruning archive \` @@ -145,7 +145,7 @@ To run both operator and validator at the same time, provide requrired flags for -{`target/production/subspace-node \\ +{`target/production/subspace-node run \\ --chain gemini-3g \\ --blocks-pruning 256 \\ --state-pruning archive \\ @@ -167,7 +167,7 @@ To run both operator and validator at the same time, provide requrired flags for -{`target/production/subspace-node \\ +{`target/production/subspace-node run \\ --chain gemini-3g \\ --blocks-pruning 256 \\ --state-pruning archive \\ @@ -213,6 +213,7 @@ services: - "0.0.0.0:40333:40333/tcp" restart: unless-stopped command: [ + "run", "--chain", "gemini-3g", "--base-path", "/var/subspace", "--blocks-pruning", "256", From 4774711b64328981990646e66f1153910907510b Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Tue, 16 Jan 2024 17:24:31 -0500 Subject: [PATCH 05/22] Update local_development section to reflect PR 2405 --- docs/develop/nova/local_development.md | 2 +- versioned_docs/version-latest/develop/nova/local_development.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/develop/nova/local_development.md b/docs/develop/nova/local_development.md index 5d4fb68a95c..f42ed27493b 100644 --- a/docs/develop/nova/local_development.md +++ b/docs/develop/nova/local_development.md @@ -33,7 +33,7 @@ After downloading both files that suit your system, start a node using your pref You can do this with the following command: ```bash -./your_subspace_node_path --dev --rpc-listen-on 9444 -- --domain-id 3 --dev --rpc-listen-on 8545 +./your_subspace_node_path run --dev --rpc-listen-on 9444 -- --domain-id 3 --dev --rpc-listen-on 8545 ``` This will create a local RPC on port **8545**. diff --git a/versioned_docs/version-latest/develop/nova/local_development.md b/versioned_docs/version-latest/develop/nova/local_development.md index 5d4fb68a95c..f42ed27493b 100644 --- a/versioned_docs/version-latest/develop/nova/local_development.md +++ b/versioned_docs/version-latest/develop/nova/local_development.md @@ -33,7 +33,7 @@ After downloading both files that suit your system, start a node using your pref You can do this with the following command: ```bash -./your_subspace_node_path --dev --rpc-listen-on 9444 -- --domain-id 3 --dev --rpc-listen-on 8545 +./your_subspace_node_path run --dev --rpc-listen-on 9444 -- --domain-id 3 --dev --rpc-listen-on 8545 ``` This will create a local RPC on port **8545**. From 2e55384ccd39fbfb906fba14b3f12647e4094a61 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Wed, 17 Jan 2024 12:50:57 -0500 Subject: [PATCH 06/22] Reflect PR 2414 --- .../farming/advanced-cli/cli-tips.mdx | 12 ++++++------ .../staking/operators/register-operator.mdx | 2 +- .../staking/operators/tips-operator.mdx | 4 ++-- .../farming/advanced-cli/cli-tips.mdx | 12 ++++++------ .../staking/operators/register-operator.mdx | 2 +- .../staking/operators/tips-operator.mdx | 6 +++--- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 6a81c3b6df4..ebc66599c4b 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -64,27 +64,27 @@ To set your node to use a custom path all you will need to do is add the `--base ### Switching to a new snapshot from older/different versions of Subspace :::info -Unless specifically mentioned by the Development team you should **NOT** have to wipe & purge your configuration on new releases. +Unless specifically mentioned by the Development team you should **NOT** have to wipe your configuration on new releases. ::: In general you should be able to download the latest release, and re-start the Node & Farmer with the same commands as you started to prior version with no errors. -There are some cases where version updates will cause issue with your Node & Farmer and you may have to wipe & purge your node, typically when errors occur. If you have any issues you can always check our [Forums](https://forums.subspace.network) and hop in our [Discord](https://discord.gg/subspace-network) Server to ask for help. +There are some cases where version updates will cause issue with your Node & Farmer and you may have to wipe your node, typically when errors occur. If you have any issues you can always check our [Forums](https://forums.subspace.network) and hop in our [Discord](https://discord.gg/subspace-network) Server to ask for help. -### Wipe & Purge +### Wipe If you were running a node previously, and want to switch to a new network, please perform these steps and then follow the guide again: ```bash # Replace `FARMER_FILE_NAME` with the name of the farmer file you downloaded from releases ./FARMER_FILE_NAME wipe PATH_TO_FARM # Replace `NODE_FILE_NAME` with the name of the node file you downloaded from releases -./NODE_FILE_NAME purge-chain --chain gemini-3g +./NODE_FILE_NAME wipe PATH_TO_NODE ``` It does not matter if the node/farmer executable is the previous one or from the new snapshot, both will work :) Now follow installation guide. -### Docker Wipe & Purge +### Docker Wipe In case of Docker setup run `docker compose down -v` (and manually delete custom directories if you have specified them). @@ -129,7 +129,7 @@ For both the node and the farmer, here are some frequently used commands: - Scrub the farm for errors: `./FARMER_FILE_NAME scrub PATH_TO_FARM` - Erase all farmer-related data: `./FARMER_FILE_NAME wipe PATH_TO_FARM` - Start the node with a custom data path: `./NODE_FILE_NAME --base-path NODE_DATA_PATH --chain gemini-3g` -- Erase all node-related data: `./NODE_FILE_NAME purge-chain --base-path NODE_DATA_PATH --chain gemini-3g` +- Erase all node-related data: `./NODE_FILE_NAME wipe NODE_DATA_PATH` ### Utilizing Multiple Disks diff --git a/docs/farming-&-staking/staking/operators/register-operator.mdx b/docs/farming-&-staking/staking/operators/register-operator.mdx index d986abd4c50..8bb6f1c15fb 100644 --- a/docs/farming-&-staking/staking/operators/register-operator.mdx +++ b/docs/farming-&-staking/staking/operators/register-operator.mdx @@ -159,7 +159,7 @@ Example: Start a node as operator on `gemini-3g` chain: :::info -You need to wipe (`purge-chain`) and sync your node from genesis block, since you need to sync both consensus and domain chains. +You need to **wipe** and sync your node from genesis block, since you need to sync both consensus and domain chains. You do not need to wipe any existing plots. ::: diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index 7fc0ffbfe08..19f829c3aba 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -31,8 +31,8 @@ The key generated above needs to be added to the Keystore so that the operator n To insert the key, use the following command: ```bash -target/production/subspace-node key insert \ ---suri "" --key-type oper --scheme sr25519 --keystore-path /keystore +target/production/subspace-node domain insert-key \ +--base-path /tmp/node --domain-id 0 --keystore-suri "" --key-type oper --scheme sr25519 ``` The command above assumes `/keystore` as the keystore location. diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 6a81c3b6df4..ebc66599c4b 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -64,27 +64,27 @@ To set your node to use a custom path all you will need to do is add the `--base ### Switching to a new snapshot from older/different versions of Subspace :::info -Unless specifically mentioned by the Development team you should **NOT** have to wipe & purge your configuration on new releases. +Unless specifically mentioned by the Development team you should **NOT** have to wipe your configuration on new releases. ::: In general you should be able to download the latest release, and re-start the Node & Farmer with the same commands as you started to prior version with no errors. -There are some cases where version updates will cause issue with your Node & Farmer and you may have to wipe & purge your node, typically when errors occur. If you have any issues you can always check our [Forums](https://forums.subspace.network) and hop in our [Discord](https://discord.gg/subspace-network) Server to ask for help. +There are some cases where version updates will cause issue with your Node & Farmer and you may have to wipe your node, typically when errors occur. If you have any issues you can always check our [Forums](https://forums.subspace.network) and hop in our [Discord](https://discord.gg/subspace-network) Server to ask for help. -### Wipe & Purge +### Wipe If you were running a node previously, and want to switch to a new network, please perform these steps and then follow the guide again: ```bash # Replace `FARMER_FILE_NAME` with the name of the farmer file you downloaded from releases ./FARMER_FILE_NAME wipe PATH_TO_FARM # Replace `NODE_FILE_NAME` with the name of the node file you downloaded from releases -./NODE_FILE_NAME purge-chain --chain gemini-3g +./NODE_FILE_NAME wipe PATH_TO_NODE ``` It does not matter if the node/farmer executable is the previous one or from the new snapshot, both will work :) Now follow installation guide. -### Docker Wipe & Purge +### Docker Wipe In case of Docker setup run `docker compose down -v` (and manually delete custom directories if you have specified them). @@ -129,7 +129,7 @@ For both the node and the farmer, here are some frequently used commands: - Scrub the farm for errors: `./FARMER_FILE_NAME scrub PATH_TO_FARM` - Erase all farmer-related data: `./FARMER_FILE_NAME wipe PATH_TO_FARM` - Start the node with a custom data path: `./NODE_FILE_NAME --base-path NODE_DATA_PATH --chain gemini-3g` -- Erase all node-related data: `./NODE_FILE_NAME purge-chain --base-path NODE_DATA_PATH --chain gemini-3g` +- Erase all node-related data: `./NODE_FILE_NAME wipe NODE_DATA_PATH` ### Utilizing Multiple Disks diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx index d986abd4c50..8bb6f1c15fb 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx @@ -159,7 +159,7 @@ Example: Start a node as operator on `gemini-3g` chain: :::info -You need to wipe (`purge-chain`) and sync your node from genesis block, since you need to sync both consensus and domain chains. +You need to **wipe** and sync your node from genesis block, since you need to sync both consensus and domain chains. You do not need to wipe any existing plots. ::: diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index 8c822135fbf..19f829c3aba 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -31,8 +31,8 @@ The key generated above needs to be added to the Keystore so that the operator n To insert the key, use the following command: ```bash -target/production/subspace-node key insert \ ---suri "" --key-type oper --scheme sr25519 --keystore-path /keystore +target/production/subspace-node domain insert-key \ +--base-path /tmp/node --domain-id 0 --keystore-suri "" --key-type oper --scheme sr25519 ``` The command above assumes `/keystore` as the keystore location. @@ -291,4 +291,4 @@ To ensure the minimum downtime during your switch, we propose the following: 1. Sync a new operator node using a throwaway key. You can generate a new key, just not insert it into your keystore. 2. Stop the original node and rename the keystore (or whatever you feel comfortable doing to prevent you accidentally starting the original node up with the original signing key). 3. Update the keystore on the new node with the original signing key. -4. Restart the new operator node. +4. Restart the new operator node. \ No newline at end of file From 516e5193a6930e310eaf25e0569bffc7e54abf13 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Wed, 17 Jan 2024 13:33:57 -0500 Subject: [PATCH 07/22] Reflect directory changes PR 2377 --- .../farming/advanced-cli/cli-prerequisites.mdx | 12 ++++++++++++ docs/farming-&-staking/staking/intro.md | 17 +++++++++++------ .../farming/advanced-cli/cli-prerequisites.mdx | 14 +++++++++++++- .../farming-&-staking/staking/intro.md | 11 +++++++++++ 4 files changed, 47 insertions(+), 7 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx index 9c5b06937d5..bed922d39c9 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx @@ -80,3 +80,15 @@ You can use any file system with default settings, we advise against their use f In order to disable **CoW** on **BTRFS**, run the command `chattr +C /your_farmer_directory/`. In case of **ZFS**, you can try adjusting the **recordsize** by running `zfs set recordsize=128K tank/dataset`, or creating a separate **dataset** for the farmer with adjusted **recordsize** parameters. + + +### Folder structure + +Starting with Gemini 3h, **Subspace Node** will create a following directory structure: + +- subspace-node/db +- subspace-node/domains/0/keystore +- subspace-node/domains/0/db +- subspace-node/domains/1/keystore +- subspace-node/domains/1/db +- subspace-node/network diff --git a/docs/farming-&-staking/staking/intro.md b/docs/farming-&-staking/staking/intro.md index c4787853895..2808a15f8c8 100644 --- a/docs/farming-&-staking/staking/intro.md +++ b/docs/farming-&-staking/staking/intro.md @@ -63,7 +63,18 @@ Our suggested specs are not necessarily applicable to Stake Wars. We encourage a **Network**: - The minimum symmetric networking speed is set to 500 Mbit/s. +### Folder structure +Starting with Gemini 3h, **Subspace Node** will create a following directory structure: + +- subspace-node/db +- subspace-node/domains/0/keystore +- subspace-node/domains/0/db +- subspace-node/domains/1/keystore +- subspace-node/domains/1/db +- subspace-node/network + +For operators it means that you no longer can create a keystore in a random location, the keystore has to be located in a specific subfolder of the desired domain. ### Staking @@ -83,9 +94,3 @@ Stake epoch is a designated period in domain blocks within a blockchain system t :::note Read [Subspace Subnomicon](https://subnomicon.subspace.network/docs/category/decoupled-execution) to get a full picture behind decoupled execution! ::: - - - - - - diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx index 51e09c2f2c8..f3a0947cd9a 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx @@ -79,4 +79,16 @@ You can use any file system with default settings, we advise against their use f In order to disable **CoW** on **BTRFS**, run the command `chattr +C /your_farmer_directory/`. -In case of **ZFS**, you can try adjusting the **recordsize** by running `zfs set recordsize=128K tank/dataset`, or creating a separate **dataset** for the farmer with adjusted **recordsize** parameters. \ No newline at end of file +In case of **ZFS**, you can try adjusting the **recordsize** by running `zfs set recordsize=128K tank/dataset`, or creating a separate **dataset** for the farmer with adjusted **recordsize** parameters. + + +### Folder structure + +Starting with Gemini 3h, **Subspace Node** will create a following directory structure: + +- subspace-node/db +- subspace-node/domains/0/keystore +- subspace-node/domains/0/db +- subspace-node/domains/1/keystore +- subspace-node/domains/1/db +- subspace-node/network \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/staking/intro.md b/versioned_docs/version-latest/farming-&-staking/staking/intro.md index c8d413227f9..2808a15f8c8 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/intro.md +++ b/versioned_docs/version-latest/farming-&-staking/staking/intro.md @@ -63,7 +63,18 @@ Our suggested specs are not necessarily applicable to Stake Wars. We encourage a **Network**: - The minimum symmetric networking speed is set to 500 Mbit/s. +### Folder structure +Starting with Gemini 3h, **Subspace Node** will create a following directory structure: + +- subspace-node/db +- subspace-node/domains/0/keystore +- subspace-node/domains/0/db +- subspace-node/domains/1/keystore +- subspace-node/domains/1/db +- subspace-node/network + +For operators it means that you no longer can create a keystore in a random location, the keystore has to be located in a specific subfolder of the desired domain. ### Staking From 3612e2c0ced6f96af3debe8dae164e02abeed15b Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Wed, 17 Jan 2024 15:23:00 -0500 Subject: [PATCH 08/22] Ensure guides enforse setting --base-path and --chain flag --- .../farming/advanced-cli/cli-tips.mdx | 22 +++---------------- .../farming/advanced-cli/platforms/_linux.mdx | 8 ++++++- .../farming/advanced-cli/platforms/_macos.mdx | 7 +++++- .../advanced-cli/platforms/_windows.mdx | 7 +++++- src/components/DockerFileGenerator/index.jsx | 2 +- .../farming/advanced-cli/cli-tips.mdx | 22 +++---------------- .../farming/advanced-cli/platforms/_linux.mdx | 10 +++++++-- .../farming/advanced-cli/platforms/_macos.mdx | 9 ++++++-- .../advanced-cli/platforms/_windows.mdx | 9 ++++++-- 9 files changed, 48 insertions(+), 48 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx index ebc66599c4b..6df465cb687 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -45,21 +45,6 @@ In certain situations, especially when the farmer terminates unexpectedly or enc Ensure to replace /path/to/your/plot with your actual plot path. Use this command cautiously as it modifies the plot state to recover from errors. -### Using a Custom Path -You can set a custom path for your node & farmer to use if you want to use an external hard drive, or set a custom path from the default. You can set the node and farmer to different directories if you would like. - - - - -#### Set Node Custom Path. -To set your node to use a custom path all you will need to do is add the `--base-path` parameter. - -```bash -# start node and store data in `NODE_DATA_PATH` instead of default location -./NODE_FILE_NAME run --base-path NODE_DATA_PATH --chain gemini-3g ...` -``` - - ### Switching to a new snapshot from older/different versions of Subspace @@ -80,9 +65,9 @@ If you were running a node previously, and want to switch to a new network, plea # Replace `NODE_FILE_NAME` with the name of the node file you downloaded from releases ./NODE_FILE_NAME wipe PATH_TO_NODE ``` -It does not matter if the node/farmer executable is the previous one or from the new snapshot, both will work :) +It does not matter if the node/farmer executable is the previous one or from the new snapshot, both will work. -Now follow installation guide. +Now follow the installation guide from the beginning. ### Docker Wipe @@ -128,7 +113,6 @@ For both the node and the farmer, here are some frequently used commands: - Display farm information: `./FARMER_FILE_NAME info PATH_TO_FARM` - Scrub the farm for errors: `./FARMER_FILE_NAME scrub PATH_TO_FARM` - Erase all farmer-related data: `./FARMER_FILE_NAME wipe PATH_TO_FARM` -- Start the node with a custom data path: `./NODE_FILE_NAME --base-path NODE_DATA_PATH --chain gemini-3g` - Erase all node-related data: `./NODE_FILE_NAME wipe NODE_DATA_PATH` ### Utilizing Multiple Disks @@ -178,7 +162,7 @@ Increasing the values of the farmer parameters could increase the plotting speed ### NUMA Support :::note -NUMA support will be beneficial for farmers with a large, powefull CPUs and lots of RAM memory available. Required RAM amount depends on a processor and number of theads, so we can't provide any specific number. +NUMA support will be beneficial for farmers with a large, powefull CPUs and lots of RAM memory available. Required RAM amount depends on a processor and number of threads, so we can't provide any specific number. ::: Previously plotting/replotting thread pools were created for each farm separately even though only configured number of them can be used at a time (by default just one). diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index d04333528e2..fc044b2547c 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -94,13 +94,19 @@ import styles from '@site/src/pages/index.module.css'; # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-08 run \ - --chain gemini-3g \ + --base-path path_to_node \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --no-private-ipv4 \ --farmer \ --name "INSERT_YOUR_ID" ``` + +:::note +Setting **--base-path** and specifying **--chain** became mandatory starting with Gemini 3h. +::: + 4. You should see something similar in the terminal: ``` 2022-02-03 10:52:23 Subspace diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index af5e5909551..38ee85fcf17 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -64,7 +64,8 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-macos-aarch64-gemini-3g-2024-jan-08 run \ - --chain gemini-3g \ + --base-path path_to_node \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --no-private-ipv4 \ @@ -72,6 +73,10 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl --name "INSERT_YOUR_ID" ``` +:::note +Setting **--base-path** and specifying **--chain** became mandatory starting with Gemini 3h. +::: + 4. You should see something similar in the terminal: ``` 2022-02-03 10:52:23 Subspace diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index bac6fe160a8..a54fc38924d 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -60,13 +60,18 @@ This is because the application is trying to access the internet. This is expect # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command .\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-08.exe run` - --chain gemini-3g ` + --base-path path_to_node ` + --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` --no-private-ipv4 ` --farmer ` --name "INSERT_YOUR_ID" ``` + +:::note +Setting **--base-path** and specifying **--chain** became mandatory starting with Gemini 3h. +::: 4. You should see something similar in the terminal: ```text diff --git a/src/components/DockerFileGenerator/index.jsx b/src/components/DockerFileGenerator/index.jsx index 7fe4afedcc7..e9a17207baf 100644 --- a/src/components/DockerFileGenerator/index.jsx +++ b/src/components/DockerFileGenerator/index.jsx @@ -20,7 +20,7 @@ function DockerFileGenerator() { }); // Predefine the actual network - const network = 'gemini-3g'; + const network = 'gemini-3h'; // State for the generated output (docker compose content) const [output, setOutput] = useState(''); diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx index ebc66599c4b..6df465cb687 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -45,21 +45,6 @@ In certain situations, especially when the farmer terminates unexpectedly or enc Ensure to replace /path/to/your/plot with your actual plot path. Use this command cautiously as it modifies the plot state to recover from errors. -### Using a Custom Path -You can set a custom path for your node & farmer to use if you want to use an external hard drive, or set a custom path from the default. You can set the node and farmer to different directories if you would like. - - - - -#### Set Node Custom Path. -To set your node to use a custom path all you will need to do is add the `--base-path` parameter. - -```bash -# start node and store data in `NODE_DATA_PATH` instead of default location -./NODE_FILE_NAME run --base-path NODE_DATA_PATH --chain gemini-3g ...` -``` - - ### Switching to a new snapshot from older/different versions of Subspace @@ -80,9 +65,9 @@ If you were running a node previously, and want to switch to a new network, plea # Replace `NODE_FILE_NAME` with the name of the node file you downloaded from releases ./NODE_FILE_NAME wipe PATH_TO_NODE ``` -It does not matter if the node/farmer executable is the previous one or from the new snapshot, both will work :) +It does not matter if the node/farmer executable is the previous one or from the new snapshot, both will work. -Now follow installation guide. +Now follow the installation guide from the beginning. ### Docker Wipe @@ -128,7 +113,6 @@ For both the node and the farmer, here are some frequently used commands: - Display farm information: `./FARMER_FILE_NAME info PATH_TO_FARM` - Scrub the farm for errors: `./FARMER_FILE_NAME scrub PATH_TO_FARM` - Erase all farmer-related data: `./FARMER_FILE_NAME wipe PATH_TO_FARM` -- Start the node with a custom data path: `./NODE_FILE_NAME --base-path NODE_DATA_PATH --chain gemini-3g` - Erase all node-related data: `./NODE_FILE_NAME wipe NODE_DATA_PATH` ### Utilizing Multiple Disks @@ -178,7 +162,7 @@ Increasing the values of the farmer parameters could increase the plotting speed ### NUMA Support :::note -NUMA support will be beneficial for farmers with a large, powefull CPUs and lots of RAM memory available. Required RAM amount depends on a processor and number of theads, so we can't provide any specific number. +NUMA support will be beneficial for farmers with a large, powefull CPUs and lots of RAM memory available. Required RAM amount depends on a processor and number of threads, so we can't provide any specific number. ::: Previously plotting/replotting thread pools were created for each farm separately even though only configured number of them can be used at a time (by default just one). diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index d04333528e2..6bc94bb3eb4 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -94,13 +94,19 @@ import styles from '@site/src/pages/index.module.css'; # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-08 run \ - --chain gemini-3g \ + --base-path path_to_node \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --no-private-ipv4 \ --farmer \ --name "INSERT_YOUR_ID" ``` + +:::note +Setting **--base-path** and specifying **--chain** became mandatory starting with Gemini 3h. +::: + 4. You should see something similar in the terminal: ``` 2022-02-03 10:52:23 Subspace @@ -153,4 +159,4 @@ import styles from '@site/src/pages/index.module.css'; 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. +3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index cdfac03b843..38ee85fcf17 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -64,7 +64,8 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-macos-aarch64-gemini-3g-2024-jan-08 run \ - --chain gemini-3g \ + --base-path path_to_node \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --no-private-ipv4 \ @@ -72,6 +73,10 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl --name "INSERT_YOUR_ID" ``` +:::note +Setting **--base-path** and specifying **--chain** became mandatory starting with Gemini 3h. +::: + 4. You should see something similar in the terminal: ``` 2022-02-03 10:52:23 Subspace @@ -124,4 +129,4 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. +3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index d43065ef5a2..a54fc38924d 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -60,13 +60,18 @@ This is because the application is trying to access the internet. This is expect # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command .\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-08.exe run` - --chain gemini-3g ` + --base-path path_to_node ` + --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` --no-private-ipv4 ` --farmer ` --name "INSERT_YOUR_ID" ``` + +:::note +Setting **--base-path** and specifying **--chain** became mandatory starting with Gemini 3h. +::: 4. You should see something similar in the terminal: ```text @@ -120,4 +125,4 @@ This is because the application is trying to access the internet. This is expect 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. +3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file From ccb2086ce81f5d6796a05f6c9c9bab2a0554333b Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Wed, 17 Jan 2024 16:08:09 -0500 Subject: [PATCH 09/22] Update operators guide to reflect node / domain CLI changes --- .../staking/operators/register-operator.mdx | 57 +++++-------------- .../staking/operators/tips-operator.mdx | 6 +- .../staking/operators/register-operator.mdx | 57 +++++-------------- .../staking/operators/tips-operator.mdx | 6 +- 4 files changed, 36 insertions(+), 90 deletions(-) diff --git a/docs/farming-&-staking/staking/operators/register-operator.mdx b/docs/farming-&-staking/staking/operators/register-operator.mdx index 8bb6f1c15fb..773b833bfe3 100644 --- a/docs/farming-&-staking/staking/operators/register-operator.mdx +++ b/docs/farming-&-staking/staking/operators/register-operator.mdx @@ -51,14 +51,14 @@ An operator needs a key pair to participate in bundle production. -1. Start a node on a developer chain by running `./target/release/subspace-node -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` +1. Start a node on a developer chain by running `./target/release/subspace-node run --dev --base-path PATH_TO_YOUR_NODE -- --domain-id 0 --rpc-cors all` :::tip You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. -You can adjust the `--keystore-path` if you prefer to generate the keys in a different location. +It's important to specify the correct **PATH_TO_NODE** and **domain_id**, and use the same values when you start an **operator node** on one of the next steps. ::: -2. Open another terminal and use the `curl` command to make an **RPC** call to your node. This will generate a new key in the `--keystore-path` location you specified earlier. +2. Open another terminal and use the `curl` command to make an **RPC** call to your node. This will generate a new key in the subfolder of **PATH_TO_NODE** you previously specified. @@ -112,7 +112,7 @@ You can adjust the `--keystore-path` if you prefer to generate the keys in a dif 1. Make sure to have [Docker installed](https://www.docker.com/get-started/). You can run `docker -v` in the terminal of your choice to make sure it's installed. 2. Start a developer node by running -`./target/release/subspace-node --dev -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` +`./target/release/subspace-node run --dev --base-path PATH_TO_YOUR_NODE -- --domain-id 0 --rpc-cors all` :::tip You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. @@ -147,6 +147,12 @@ You will use this key in order to register an operator later. **You have successfully generated an operator key, congratulations!** +The keys were generated in the subfolder of **PATH_TO_NODE** you speficied and will be following [the updated Subspace node folder structure](../intro#folder-structure). If you don't see the generated keypair in the folder with name of the **domain ID** you specified, something went wrong. + +#### Example + +If I wanted to generate a keypair for **the domain ID 1**, my keypair needs to be located under `PATH_TO_NODE/1/keystore`. + ### Start the domain operator node The domain operator node is running with an embedded consensus node, thus you need to specify the args for both the consensus node and the domain operator node: @@ -164,24 +170,20 @@ You do not need to wipe any existing plots. ::: :::note -Ensure you replace `your_domain_id` with your domain identifier in the command and `your_operator_id` with your operator_id. If your keystore is located in a different folder, adjust the `--keystore-path` accordingly. Setting `--base-path` is optional. +Ensure you replace `your_domain_id` with your domain identifier in the command and `your_operator_id` with your operator_id. ::: :::tip You can ignore setting up `your_operator_id` while you're syncing your node. Make sure to set it after syncing and registration. ::: -:::tip -Stake Wars are using the domain **Nova** with ID **1**. -::: - {`target/production/subspace-node run \` ---chain gemini-3g \` +--chain gemini-3h \` --name your_node_name \` --base-path your_path_to_node_data \` -- \` @@ -200,7 +202,7 @@ Stake Wars are using the domain **Nova** with ID **1**. {`target/production/subspace-node run \\ ---chain gemini-3g \\ +--chain gemini-3h \\ --name your_node_name \\ --base-path your_path_to_node_data \\ -- \\ @@ -219,7 +221,7 @@ Stake Wars are using the domain **Nova** with ID **1**. {`target/production/subspace-node run \\ ---chain gemini-3g \\ +--chain gemini-3h \\ --name your_node_name \\ --base-path your_path_to_node_data \\ -- \\ @@ -263,7 +265,7 @@ services: restart: unless-stopped command: [ "run", - "--chain", "gemini-3g", + "--chain", "gemini-3h", "--base-path", "/var/subspace", "--listen-on", "30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", @@ -298,35 +300,6 @@ You should see the node start successfully and begin syncing. ![Staking-13](/img/doc-imgs/operators-staking/Staking-13.png) - -To view the stored node information navigate to: - - - - -FOLDERID_LocalAppData e.g. - -`C:\Users\Alice\AppData\Local` - - - - - -$HOME/Library/Application Support e.g. - -`/Users/Alice/Library/Application Support` - - - - - -$XDG_DATA_HOME or /home/alice/.local/share e.g. - -`$HOME/.local/share` - - - - ### Register an operator on domain :::info diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index 19f829c3aba..174f22e1524 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -18,7 +18,7 @@ An operator needs a key pair to participate in bundle production. You can create a key using the following command: ```bash -target/production/subspace-node key generate --scheme sr25519 +target/production/subspace-node run key generate --scheme sr25519 ``` ![Staking-4](/img/doc-imgs/operators-staking/Staking-4.png) @@ -31,8 +31,8 @@ The key generated above needs to be added to the Keystore so that the operator n To insert the key, use the following command: ```bash -target/production/subspace-node domain insert-key \ ---base-path /tmp/node --domain-id 0 --keystore-suri "" --key-type oper --scheme sr25519 +target/production/subspace-node run domain insert-key \ +--base-path PATH_TO_NODE --domain-id 0 --keystore-suri "" --key-type oper --scheme sr25519 ``` The command above assumes `/keystore` as the keystore location. diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx index 8bb6f1c15fb..773b833bfe3 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx @@ -51,14 +51,14 @@ An operator needs a key pair to participate in bundle production. -1. Start a node on a developer chain by running `./target/release/subspace-node -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` +1. Start a node on a developer chain by running `./target/release/subspace-node run --dev --base-path PATH_TO_YOUR_NODE -- --domain-id 0 --rpc-cors all` :::tip You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. -You can adjust the `--keystore-path` if you prefer to generate the keys in a different location. +It's important to specify the correct **PATH_TO_NODE** and **domain_id**, and use the same values when you start an **operator node** on one of the next steps. ::: -2. Open another terminal and use the `curl` command to make an **RPC** call to your node. This will generate a new key in the `--keystore-path` location you specified earlier. +2. Open another terminal and use the `curl` command to make an **RPC** call to your node. This will generate a new key in the subfolder of **PATH_TO_NODE** you previously specified. @@ -112,7 +112,7 @@ You can adjust the `--keystore-path` if you prefer to generate the keys in a dif 1. Make sure to have [Docker installed](https://www.docker.com/get-started/). You can run `docker -v` in the terminal of your choice to make sure it's installed. 2. Start a developer node by running -`./target/release/subspace-node --dev -- --domain-id 0 --keystore-path tmp/keystore --rpc-cors all` +`./target/release/subspace-node run --dev --base-path PATH_TO_YOUR_NODE -- --domain-id 0 --rpc-cors all` :::tip You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. @@ -147,6 +147,12 @@ You will use this key in order to register an operator later. **You have successfully generated an operator key, congratulations!** +The keys were generated in the subfolder of **PATH_TO_NODE** you speficied and will be following [the updated Subspace node folder structure](../intro#folder-structure). If you don't see the generated keypair in the folder with name of the **domain ID** you specified, something went wrong. + +#### Example + +If I wanted to generate a keypair for **the domain ID 1**, my keypair needs to be located under `PATH_TO_NODE/1/keystore`. + ### Start the domain operator node The domain operator node is running with an embedded consensus node, thus you need to specify the args for both the consensus node and the domain operator node: @@ -164,24 +170,20 @@ You do not need to wipe any existing plots. ::: :::note -Ensure you replace `your_domain_id` with your domain identifier in the command and `your_operator_id` with your operator_id. If your keystore is located in a different folder, adjust the `--keystore-path` accordingly. Setting `--base-path` is optional. +Ensure you replace `your_domain_id` with your domain identifier in the command and `your_operator_id` with your operator_id. ::: :::tip You can ignore setting up `your_operator_id` while you're syncing your node. Make sure to set it after syncing and registration. ::: -:::tip -Stake Wars are using the domain **Nova** with ID **1**. -::: - {`target/production/subspace-node run \` ---chain gemini-3g \` +--chain gemini-3h \` --name your_node_name \` --base-path your_path_to_node_data \` -- \` @@ -200,7 +202,7 @@ Stake Wars are using the domain **Nova** with ID **1**. {`target/production/subspace-node run \\ ---chain gemini-3g \\ +--chain gemini-3h \\ --name your_node_name \\ --base-path your_path_to_node_data \\ -- \\ @@ -219,7 +221,7 @@ Stake Wars are using the domain **Nova** with ID **1**. {`target/production/subspace-node run \\ ---chain gemini-3g \\ +--chain gemini-3h \\ --name your_node_name \\ --base-path your_path_to_node_data \\ -- \\ @@ -263,7 +265,7 @@ services: restart: unless-stopped command: [ "run", - "--chain", "gemini-3g", + "--chain", "gemini-3h", "--base-path", "/var/subspace", "--listen-on", "30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", @@ -298,35 +300,6 @@ You should see the node start successfully and begin syncing. ![Staking-13](/img/doc-imgs/operators-staking/Staking-13.png) - -To view the stored node information navigate to: - - - - -FOLDERID_LocalAppData e.g. - -`C:\Users\Alice\AppData\Local` - - - - - -$HOME/Library/Application Support e.g. - -`/Users/Alice/Library/Application Support` - - - - - -$XDG_DATA_HOME or /home/alice/.local/share e.g. - -`$HOME/.local/share` - - - - ### Register an operator on domain :::info diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index 19f829c3aba..174f22e1524 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -18,7 +18,7 @@ An operator needs a key pair to participate in bundle production. You can create a key using the following command: ```bash -target/production/subspace-node key generate --scheme sr25519 +target/production/subspace-node run key generate --scheme sr25519 ``` ![Staking-4](/img/doc-imgs/operators-staking/Staking-4.png) @@ -31,8 +31,8 @@ The key generated above needs to be added to the Keystore so that the operator n To insert the key, use the following command: ```bash -target/production/subspace-node domain insert-key \ ---base-path /tmp/node --domain-id 0 --keystore-suri "" --key-type oper --scheme sr25519 +target/production/subspace-node run domain insert-key \ +--base-path PATH_TO_NODE --domain-id 0 --keystore-suri "" --key-type oper --scheme sr25519 ``` The command above assumes `/keystore` as the keystore location. From 027217d21304a906ca6b3e9637ed94229e98be84 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Thu, 18 Jan 2024 14:00:53 -0500 Subject: [PATCH 10/22] Improve message on NUMA support --- .../farming/advanced-cli/cli-tips.mdx | 13 ++++++------- .../farming/advanced-cli/cli-tips.mdx | 13 ++++++------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 6df465cb687..d507b625997 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -162,17 +162,16 @@ Increasing the values of the farmer parameters could increase the plotting speed ### NUMA Support :::note -NUMA support will be beneficial for farmers with a large, powefull CPUs and lots of RAM memory available. Required RAM amount depends on a processor and number of threads, so we can't provide any specific number. +NUMA support will benefit farmers with large, powerful CPUs and lots of RAM available. The required RAM amount depends on the processor and the number of threads. ::: -Previously plotting/replotting thread pools were created for each farm separately even though only configured number of them can be used at a time (by default just one). -With introduction of NUMA support, the farmer application has a thread pool manager that will create necessary number of thread pools that will be allocated to currently plotting/replotting farms. -When thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead OS is free to move threads between cores, but only withing CPU cores allocated for thread pool. This will ensure plotting for a particular sector only happens on particular CPU/NUMA node. +Previously plotting/replotting thread pools were created for each farm separately even though only a configured number of them can be used at a time (by default just one). +With the introduction of NUMA support, the farmer application has a thread pool manager that will create a necessary number of thread pools that will be allocated to currently plotting/replotting farms. +When a thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead, OS is free to move threads between cores, but only within CPU cores allocated for thread pool. This will ensure plotting for a particular sector only happens on a particular CPU/NUMA node. #### Enabling NUMA on Windows/Linux machines -On Linux and Windows farmer will detect NUMA systems and create number of thread pools that corresponds to number of NUMA nodes. This means default behavior will change for large CPUs and will consume more memory as the result, but that can be changed to the previous behavior with CLI options if desired. - -In order to use NUMA, you need to enable it via BIOS of your **motherboard** for farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc** processors, but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. +On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to a number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. +To use NUMA, you need to enable it via the BIOS of your motherboard for the farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc processors** but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 6df465cb687..d507b625997 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -162,17 +162,16 @@ Increasing the values of the farmer parameters could increase the plotting speed ### NUMA Support :::note -NUMA support will be beneficial for farmers with a large, powefull CPUs and lots of RAM memory available. Required RAM amount depends on a processor and number of threads, so we can't provide any specific number. +NUMA support will benefit farmers with large, powerful CPUs and lots of RAM available. The required RAM amount depends on the processor and the number of threads. ::: -Previously plotting/replotting thread pools were created for each farm separately even though only configured number of them can be used at a time (by default just one). -With introduction of NUMA support, the farmer application has a thread pool manager that will create necessary number of thread pools that will be allocated to currently plotting/replotting farms. -When thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead OS is free to move threads between cores, but only withing CPU cores allocated for thread pool. This will ensure plotting for a particular sector only happens on particular CPU/NUMA node. +Previously plotting/replotting thread pools were created for each farm separately even though only a configured number of them can be used at a time (by default just one). +With the introduction of NUMA support, the farmer application has a thread pool manager that will create a necessary number of thread pools that will be allocated to currently plotting/replotting farms. +When a thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead, OS is free to move threads between cores, but only within CPU cores allocated for thread pool. This will ensure plotting for a particular sector only happens on a particular CPU/NUMA node. #### Enabling NUMA on Windows/Linux machines -On Linux and Windows farmer will detect NUMA systems and create number of thread pools that corresponds to number of NUMA nodes. This means default behavior will change for large CPUs and will consume more memory as the result, but that can be changed to the previous behavior with CLI options if desired. - -In order to use NUMA, you need to enable it via BIOS of your **motherboard** for farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc** processors, but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. +On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to a number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. +To use NUMA, you need to enable it via the BIOS of your motherboard for the farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc processors** but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file From 2ac349a022627d6cacabf45492777a406d1fe053 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Thu, 18 Jan 2024 17:03:19 -0500 Subject: [PATCH 11/22] Reflect Subnomicon PR 16 --- docs/farming-&-staking/staking/intro.md | 7 ++++--- docs/farming-&-staking/staking/staking.md | 2 +- .../version-latest/farming-&-staking/staking/intro.md | 7 ++++--- .../version-latest/farming-&-staking/staking/staking.md | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/farming-&-staking/staking/intro.md b/docs/farming-&-staking/staking/intro.md index 2808a15f8c8..fd484edd31e 100644 --- a/docs/farming-&-staking/staking/intro.md +++ b/docs/farming-&-staking/staking/intro.md @@ -82,10 +82,11 @@ The Subspace Network relies on staking from both domain operators and farmers to Our staking model consists of two tiers: -- Farmers earn rewards proportional to their pledged storage. Farmers can choose to nominate operators and back them with their own stake, increasing their chance of being elected as a slot leader. Farmers, who have earned storage rewards, nominate operators to execute transactions. This nomination system balances the power between farmers who nominate and operators and both parties share the rewards and the potential penalties (slashing). +- Farmers earn rewards proportional to their pledged storage. Farmers can choose to nominate operators and back them with their own stake, increasing their chance of being elected as a slot leader. Farmers, who have earned storage rewards, nominate operators to execute transactions. This nomination system balances the power between farmers who nominate and operators and both parties share the execution fees and the potential penalties (slashing). -- Operators stake to gain the right to produce bundles within a domain. They are responsible for validating and executing transactions, producing execution receipts, and applying state transitions and earn rewards for their work. The operator's chances to be elected as a slot leader and produce a bundle are weighted by their stake. Operators can be nominated by farmers or other SSC holders. +- Operators stake to gain the right to produce bundles within a domain. They are responsible for validating and executing transactions, producing execution receipts, applying state transitions, submitting a storage fee for the bundle execution and earning fees for their work. The operator's chances to be elected as a slot leader and produce a bundle are weighted by their stake. Operators can be nominated by farmers or other SSC holders. +The nomination pools in Subspace are "lazy": any fees earned by the operator are assigned to the pool and are not deposited to the nominators wallet unless they ask for a withdrawal. Unless withdrawn, the fees are "auto-staked" - they count towards the total stake of the pool, increasing its chance of being elected to produce bundles. ### Stake epoch @@ -93,4 +94,4 @@ Stake epoch is a designated period in domain blocks within a blockchain system t :::note Read [Subspace Subnomicon](https://subnomicon.subspace.network/docs/category/decoupled-execution) to get a full picture behind decoupled execution! -::: +::: \ No newline at end of file diff --git a/docs/farming-&-staking/staking/staking.md b/docs/farming-&-staking/staking/staking.md index 263aba2e105..a3f7dad4799 100644 --- a/docs/farming-&-staking/staking/staking.md +++ b/docs/farming-&-staking/staking/staking.md @@ -147,7 +147,7 @@ Example of withdrawal of 1 TSSC stake amount from nominating an operator `17`. ![Staking-23](/img/doc-imgs/operators-staking/Staking-23.png) -Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. +Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. The curret **unlocking period** is set to 28 800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. ### Calculating your nominator balance diff --git a/versioned_docs/version-latest/farming-&-staking/staking/intro.md b/versioned_docs/version-latest/farming-&-staking/staking/intro.md index 2808a15f8c8..fd484edd31e 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/intro.md +++ b/versioned_docs/version-latest/farming-&-staking/staking/intro.md @@ -82,10 +82,11 @@ The Subspace Network relies on staking from both domain operators and farmers to Our staking model consists of two tiers: -- Farmers earn rewards proportional to their pledged storage. Farmers can choose to nominate operators and back them with their own stake, increasing their chance of being elected as a slot leader. Farmers, who have earned storage rewards, nominate operators to execute transactions. This nomination system balances the power between farmers who nominate and operators and both parties share the rewards and the potential penalties (slashing). +- Farmers earn rewards proportional to their pledged storage. Farmers can choose to nominate operators and back them with their own stake, increasing their chance of being elected as a slot leader. Farmers, who have earned storage rewards, nominate operators to execute transactions. This nomination system balances the power between farmers who nominate and operators and both parties share the execution fees and the potential penalties (slashing). -- Operators stake to gain the right to produce bundles within a domain. They are responsible for validating and executing transactions, producing execution receipts, and applying state transitions and earn rewards for their work. The operator's chances to be elected as a slot leader and produce a bundle are weighted by their stake. Operators can be nominated by farmers or other SSC holders. +- Operators stake to gain the right to produce bundles within a domain. They are responsible for validating and executing transactions, producing execution receipts, applying state transitions, submitting a storage fee for the bundle execution and earning fees for their work. The operator's chances to be elected as a slot leader and produce a bundle are weighted by their stake. Operators can be nominated by farmers or other SSC holders. +The nomination pools in Subspace are "lazy": any fees earned by the operator are assigned to the pool and are not deposited to the nominators wallet unless they ask for a withdrawal. Unless withdrawn, the fees are "auto-staked" - they count towards the total stake of the pool, increasing its chance of being elected to produce bundles. ### Stake epoch @@ -93,4 +94,4 @@ Stake epoch is a designated period in domain blocks within a blockchain system t :::note Read [Subspace Subnomicon](https://subnomicon.subspace.network/docs/category/decoupled-execution) to get a full picture behind decoupled execution! -::: +::: \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/staking/staking.md b/versioned_docs/version-latest/farming-&-staking/staking/staking.md index 263aba2e105..1061a0480fe 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/staking.md +++ b/versioned_docs/version-latest/farming-&-staking/staking/staking.md @@ -147,7 +147,7 @@ Example of withdrawal of 1 TSSC stake amount from nominating an operator `17`. ![Staking-23](/img/doc-imgs/operators-staking/Staking-23.png) -Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. +Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. The curret **unlocking period** is set to 28 800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. ### Calculating your nominator balance @@ -169,4 +169,4 @@ Once the withdrawal is submitted, it's finalized after the **domain epoch** is c To calculate your nominator **balance**: 1. Calculate **share price** by dividing **currentTotalStake** from the domain by operator **currentTotalStake**. -2. Multiply **share price** and your nominator **shares** number. +2. Multiply **share price** and your nominator **shares** number. \ No newline at end of file From 4b7059be4d38dc3d36b2de151b895fa925cb5e05 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Mon, 22 Jan 2024 14:23:07 -0500 Subject: [PATCH 12/22] Remove subspace folder structure description --- .../farming/advanced-cli/cli-prerequisites.mdx | 11 ----------- .../farming/advanced-cli/cli-prerequisites.mdx | 12 ------------ 2 files changed, 23 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx index bed922d39c9..713e6510130 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx @@ -81,14 +81,3 @@ In order to disable **CoW** on **BTRFS**, run the command `chattr +C /your_farme In case of **ZFS**, you can try adjusting the **recordsize** by running `zfs set recordsize=128K tank/dataset`, or creating a separate **dataset** for the farmer with adjusted **recordsize** parameters. - -### Folder structure - -Starting with Gemini 3h, **Subspace Node** will create a following directory structure: - -- subspace-node/db -- subspace-node/domains/0/keystore -- subspace-node/domains/0/db -- subspace-node/domains/1/keystore -- subspace-node/domains/1/db -- subspace-node/network diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx index f3a0947cd9a..9c5b06937d5 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-prerequisites.mdx @@ -80,15 +80,3 @@ You can use any file system with default settings, we advise against their use f In order to disable **CoW** on **BTRFS**, run the command `chattr +C /your_farmer_directory/`. In case of **ZFS**, you can try adjusting the **recordsize** by running `zfs set recordsize=128K tank/dataset`, or creating a separate **dataset** for the farmer with adjusted **recordsize** parameters. - - -### Folder structure - -Starting with Gemini 3h, **Subspace Node** will create a following directory structure: - -- subspace-node/db -- subspace-node/domains/0/keystore -- subspace-node/domains/0/db -- subspace-node/domains/1/keystore -- subspace-node/domains/1/db -- subspace-node/network \ No newline at end of file From 56028eac0b3b48bd14cf835038a2ce741465a260 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Thu, 25 Jan 2024 10:21:16 -0500 Subject: [PATCH 13/22] Updates after feedback and testing --- docker-compose-auto.yml | 3 +- docs/develop/nova/local_development.md | 2 +- .../farming/advanced-cli/platforms/_linux.mdx | 1 - .../farming/advanced-cli/platforms/_macos.mdx | 1 - .../advanced-cli/platforms/_windows.mdx | 1 - .../staking/operators/register-operator.mdx | 145 +++-------------- .../staking/operators/tips-operator.mdx | 62 +++----- src/components/DockerFileGenerator/index.jsx | 3 +- .../SystemdServiceFileGenerator/index.jsx | 1 - .../develop/nova/local_development.md | 2 +- .../farming/advanced-cli/platforms/_linux.mdx | 1 - .../farming/advanced-cli/platforms/_macos.mdx | 1 - .../advanced-cli/platforms/_windows.mdx | 1 - .../staking/operators/register-operator.mdx | 147 +++--------------- .../staking/operators/tips-operator.mdx | 62 +++----- 15 files changed, 91 insertions(+), 342 deletions(-) diff --git a/docker-compose-auto.yml b/docker-compose-auto.yml index 3fbde51b3da..6540fe9daff 100644 --- a/docker-compose-auto.yml +++ b/docker-compose-auto.yml @@ -28,8 +28,7 @@ services: "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", "--rpc-cors", "all", "--rpc-methods", "unsafe", - "--rpc-listen-on", - "--no-private-ipv4", + "--rpc-listen-on", "0.0.0.0:9944", "--farmer", # Replace `INSERT_YOUR_ID` with your node ID (will be shown in telemetry) "--name", "INSERT_YOUR_ID" diff --git a/docs/develop/nova/local_development.md b/docs/develop/nova/local_development.md index f42ed27493b..35c57691015 100644 --- a/docs/develop/nova/local_development.md +++ b/docs/develop/nova/local_development.md @@ -33,7 +33,7 @@ After downloading both files that suit your system, start a node using your pref You can do this with the following command: ```bash -./your_subspace_node_path run --dev --rpc-listen-on 9444 -- --domain-id 3 --dev --rpc-listen-on 8545 +./your_subspace_node_path run --dev --rpc-listen-on 127.0.0.1:9944 -- --domain-id 3 --dev --rpc-listen-on 127.0.0.1:8545 ``` This will create a local RPC on port **8545**. diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index fc044b2547c..07659c7a008 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -98,7 +98,6 @@ import styles from '@site/src/pages/index.module.css'; --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ - --no-private-ipv4 \ --farmer \ --name "INSERT_YOUR_ID" ``` diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index 38ee85fcf17..c61239a4f16 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -68,7 +68,6 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ - --no-private-ipv4 \ --farmer \ --name "INSERT_YOUR_ID" ``` diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index a54fc38924d..02fdf74eb23 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -64,7 +64,6 @@ This is because the application is trying to access the internet. This is expect --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` - --no-private-ipv4 ` --farmer ` --name "INSERT_YOUR_ID" ``` diff --git a/docs/farming-&-staking/staking/operators/register-operator.mdx b/docs/farming-&-staking/staking/operators/register-operator.mdx index 773b833bfe3..c949d21f9a5 100644 --- a/docs/farming-&-staking/staking/operators/register-operator.mdx +++ b/docs/farming-&-staking/staking/operators/register-operator.mdx @@ -45,113 +45,14 @@ The example is not Stake Wars specific, the operator is responsible for finding ### Create operator key (recommended way) -An operator needs a key pair to participate in bundle production. +To create a new operator key, run the following command: +`subspace-node domain key create --base-path /tmp/node --domain-id 0` - - - - -1. Start a node on a developer chain by running `./target/release/subspace-node run --dev --base-path PATH_TO_YOUR_NODE -- --domain-id 0 --rpc-cors all` - -:::tip -You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. -It's important to specify the correct **PATH_TO_NODE** and **domain_id**, and use the same values when you start an **operator node** on one of the next steps. -::: - -2. Open another terminal and use the `curl` command to make an **RPC** call to your node. This will generate a new key in the subfolder of **PATH_TO_NODE** you previously specified. - - - - - - -{`curl.exe -X POST http://127.0.0.1:9945 \` --H "Content-Type: application/json;charset=utf-8" \` --d '{ -"jsonrpc":"2.0", -"id":1, -"method":"author_rotateKeys", -"params": [] -}'`} - - - - - - -{`curl -X POST http://127.0.0.1:9945 \\ --H "Content-Type: application/json;charset=utf-8" \\ --d '{ -"jsonrpc":"2.0", -"id":1, -"method":"author_rotateKeys", -"params": [] -}'`} - - - - - - -{`curl -X POST http://127.0.0.1:9945 \\ --H "Content-Type: application/json;charset=utf-8" \\ --d '{ -"jsonrpc":"2.0", -"id":1, -"method":"author_rotateKeys", -"params": [] -}'`} - - - - - - - - -1. Make sure to have [Docker installed](https://www.docker.com/get-started/). -You can run `docker -v` in the terminal of your choice to make sure it's installed. -2. Start a developer node by running -`./target/release/subspace-node run --dev --base-path PATH_TO_YOUR_NODE -- --domain-id 0 --rpc-cors all` - -:::tip -You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. -You can adjust the `--keystore-path` if you prefer to generate the keys in a different location. -::: - -3. Start a local polkadot interface portal by running a docker contrainer. - -`docker run --rm -it --name polkadot-ui -e WS_URL=ws://0.0.0.0:9945 -p 80:80 jacogr/polkadot-js-apps:latest` - -4. Proceed to the browswer and type `localhost` in the search bar. You should be taken to the polkadot portal. - -![RPC-2](/img/doc-imgs/operators-staking/RPC-2.png) - -5. Navigate to `developer` -> `rpc calls` - -6. Select `author` in `call the selected endpoint` and pick a `rotateKeys()` in the dropdown. - -![RPC-3](/img/doc-imgs/operators-staking/RPC-3.png) - -7. Press on `Submit RPC call`. - -8. You will see a newly generated key on the screen. The key will also be written in a `keystore` location you specified earlier. - -:::tip -You will use this key in order to register an operator later. -::: - - - - +Make sure to use the base **--base-path** for the key generation, and running an operator node and make sure to replace **--domain-id value** with the domainID you would like to be an operator on. **You have successfully generated an operator key, congratulations!** -The keys were generated in the subfolder of **PATH_TO_NODE** you speficied and will be following [the updated Subspace node folder structure](../intro#folder-structure). If you don't see the generated keypair in the folder with name of the **domain ID** you specified, something went wrong. - -#### Example - -If I wanted to generate a keypair for **the domain ID 1**, my keypair needs to be located under `PATH_TO_NODE/1/keystore`. +The keys were generated in the subfolder of **PATH_TO_NODE** under `/domains/domainID/keystore`. If you don't see the generated keypair in the subfolder, something went wrong. ### Start the domain operator node @@ -162,7 +63,7 @@ subspace-node [consensus-chain-args] -- [domain-args] ``` Example: -Start a node as operator on `gemini-3g` chain: +Start a node as operator on `gemini-3h` chain: :::info You need to **wipe** and sync your node from genesis block, since you need to sync both consensus and domain chains. @@ -189,11 +90,10 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` ---listen-on /ip4/0.0.0.0/tcp/40333 \` ---keystore-path /keystore`} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` +--listen-on /ip4/0.0.0.0/tcp/40333`} @@ -208,11 +108,10 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ ---listen-on /ip4/0.0.0.0/tcp/40333 \\ ---keystore-path /keystore`} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--listen-on /ip4/0.0.0.0/tcp/40333`} @@ -227,11 +126,10 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ ---listen-on /ip4/0.0.0.0/tcp/40333 \\ ---keystore-path /keystore`} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--listen-on /ip4/0.0.0.0/tcp/40333`} @@ -267,7 +165,7 @@ services: "run", "--chain", "gemini-3h", "--base-path", "/var/subspace", - "--listen-on", "30333", + "--listen-on", "0.0.0.0:30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) @@ -278,10 +176,9 @@ services: # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", "--listen-on", "/ip4/0.0.0.0/tcp/40333", - "--bootstrap-nodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootstrap-nodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootstrap-nodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", - "--keystore-path", "/keystore" + "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", + "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", + "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7" ] healthcheck: timeout: 5s diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index 174f22e1524..26ff8cd5f37 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -13,34 +13,20 @@ import CodeBlock from '@theme/CodeBlock'; import Link from '@docusaurus/Link'; import styles from '@site/src/pages/index.module.css'; -### Create operator key (alternative, less secure way): -An operator needs a key pair to participate in bundle production. -You can create a key using the following command: - -```bash -target/production/subspace-node run key generate --scheme sr25519 -``` - -![Staking-4](/img/doc-imgs/operators-staking/Staking-4.png) - -Back up the key. Take the `public key (hex)` of the Keypair. The public key is part of the operator config we will be using later on [Staking portal](https://staking.subspace.tools) or [PolkadotJS portal](https://polkadot.js.org/apps/#/explorer). #### Insert key to Keystore: -The key generated above needs to be added to the Keystore so that the operator node can use it to participate in bundle production. +This might be useful if you decicded to switch domains and already have **the secret phrase**. Read more about switching domain in the next section. To insert the key, use the following command: ```bash -target/production/subspace-node run domain insert-key \ ---base-path PATH_TO_NODE --domain-id 0 --keystore-suri "" --key-type oper --scheme sr25519 +target/production/subspace-node domain key insert \ +--base-path PATH_TO_NODE --domain-id DOMAIN_ID --keystore-suri "" --key-type oper --scheme sr25519 ``` -The command above assumes `/keystore` as the keystore location. -`suri` is the secret phrase of the operator key. +The command above will insert the keypair in the subfolder of `PATH_TO_NODE/domains/DOMAIN_ID/keystore`. -:::tip -`tmp` folder on linux based systems will be emptied upon the system reboot. Make sure to store the keypair in a secure and permanent location. -::: +`suri` is the secret phrase of the operator key. ### Switch domains @@ -61,6 +47,10 @@ Only the account who registered **Operator** can swith the domain. ::: +:::note +You need to update the move your keypain to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore) +::: + :::note Stake of your **Nominators** won't be released, but will be moved to the new domain as well. @@ -126,17 +116,15 @@ To run both operator and validator at the same time, provide requrired flags for --chain gemini-3g \` --blocks-pruning 256 \` --state-pruning archive \` ---no-private-ipv4 \` --farmer \` --name your_node_name \` -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` ---keystore-path /keystore \` --listen-on /ip4/0.0.0.0/tcp/40333 \` ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -149,17 +137,15 @@ To run both operator and validator at the same time, provide requrired flags for --chain gemini-3g \\ --blocks-pruning 256 \\ --state-pruning archive \\ ---no-private-ipv4 \\ --farmer \\ --name your_node_name \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---keystore-path /keystore \\ --listen-on /ip4/0.0.0.0/tcp/40333 \\ ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -171,17 +157,15 @@ To run both operator and validator at the same time, provide requrired flags for --chain gemini-3g \\ --blocks-pruning 256 \\ --state-pruning archive \\ ---no-private-ipv4 \\ --farmer \\ --name your_node_name \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---keystore-path /keystore \\ --listen-on /ip4/0.0.0.0/tcp/40333 \\ ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -223,8 +207,7 @@ services: "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", "--rpc-cors", "all", "--rpc-methods", "unsafe", - "--rpc-listen-on", - "--no-private-ipv4", + "--rpc-listen-on", "0.0.0.0:9944", "--farmer", "--name", "INSERT_YOUR_ID", "--", @@ -232,11 +215,10 @@ services: "--domain-id", "INSERT_YOUR_DOMAIN_ID", # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", - "--keystore-path", "/keystore", "--listen-on", "/ip4/0.0.0.0/tcp/40333", - "--bootstrap-nodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootstrap-nodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootstrap-nodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", + "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", + "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", + "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) ] healthcheck: diff --git a/src/components/DockerFileGenerator/index.jsx b/src/components/DockerFileGenerator/index.jsx index e9a17207baf..c347c705440 100644 --- a/src/components/DockerFileGenerator/index.jsx +++ b/src/components/DockerFileGenerator/index.jsx @@ -121,8 +121,7 @@ services: "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", "--rpc-cors", "all", "--rpc-methods", "unsafe", - "--rpc-listen-on", - "--no-private-ipv4", + "--rpc-listen-on", "0.0.0.0:9944", "--farmer", "--name", "${formData.nodeName}" ] diff --git a/src/components/SystemdServiceFileGenerator/index.jsx b/src/components/SystemdServiceFileGenerator/index.jsx index 4effcdce567..88bc95854b9 100644 --- a/src/components/SystemdServiceFileGenerator/index.jsx +++ b/src/components/SystemdServiceFileGenerator/index.jsx @@ -88,7 +88,6 @@ ExecStart=${formData.nodeBinPath} \\ --keep-blocks ${formData.archival === "on" ? "archive-canonical" : "256"} \\ --chain ${chain} \\ --farmer \\ - --no-private-ipv4 \\ --listen-on /ip4/0.0.0.0/tcp/${formData.nodePort} \\ --dsn-listen-on /ip4/0.0.0.0/udp/${formData.nodeDsnPort}/quic-v1 \\ --dsn-listen-on /ip4/0.0.0.0/tcp/${formData.nodeDsnPort} \\ diff --git a/versioned_docs/version-latest/develop/nova/local_development.md b/versioned_docs/version-latest/develop/nova/local_development.md index f42ed27493b..35c57691015 100644 --- a/versioned_docs/version-latest/develop/nova/local_development.md +++ b/versioned_docs/version-latest/develop/nova/local_development.md @@ -33,7 +33,7 @@ After downloading both files that suit your system, start a node using your pref You can do this with the following command: ```bash -./your_subspace_node_path run --dev --rpc-listen-on 9444 -- --domain-id 3 --dev --rpc-listen-on 8545 +./your_subspace_node_path run --dev --rpc-listen-on 127.0.0.1:9944 -- --domain-id 3 --dev --rpc-listen-on 127.0.0.1:8545 ``` This will create a local RPC on port **8545**. diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index 6bc94bb3eb4..747aa223e0a 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -98,7 +98,6 @@ import styles from '@site/src/pages/index.module.css'; --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ - --no-private-ipv4 \ --farmer \ --name "INSERT_YOUR_ID" ``` diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index 38ee85fcf17..c61239a4f16 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -68,7 +68,6 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ - --no-private-ipv4 \ --farmer \ --name "INSERT_YOUR_ID" ``` diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index a54fc38924d..02fdf74eb23 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -64,7 +64,6 @@ This is because the application is trying to access the internet. This is expect --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` - --no-private-ipv4 ` --farmer ` --name "INSERT_YOUR_ID" ``` diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx index 773b833bfe3..148f5e91e45 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx @@ -45,113 +45,14 @@ The example is not Stake Wars specific, the operator is responsible for finding ### Create operator key (recommended way) -An operator needs a key pair to participate in bundle production. +To create a new operator key, run the following command: +`subspace-node domain key create --base-path /tmp/node --domain-id 0` - - - - -1. Start a node on a developer chain by running `./target/release/subspace-node run --dev --base-path PATH_TO_YOUR_NODE -- --domain-id 0 --rpc-cors all` - -:::tip -You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. -It's important to specify the correct **PATH_TO_NODE** and **domain_id**, and use the same values when you start an **operator node** on one of the next steps. -::: - -2. Open another terminal and use the `curl` command to make an **RPC** call to your node. This will generate a new key in the subfolder of **PATH_TO_NODE** you previously specified. - - - - - - -{`curl.exe -X POST http://127.0.0.1:9945 \` --H "Content-Type: application/json;charset=utf-8" \` --d '{ -"jsonrpc":"2.0", -"id":1, -"method":"author_rotateKeys", -"params": [] -}'`} - - - - - - -{`curl -X POST http://127.0.0.1:9945 \\ --H "Content-Type: application/json;charset=utf-8" \\ --d '{ -"jsonrpc":"2.0", -"id":1, -"method":"author_rotateKeys", -"params": [] -}'`} - - - - - - -{`curl -X POST http://127.0.0.1:9945 \\ --H "Content-Type: application/json;charset=utf-8" \\ --d '{ -"jsonrpc":"2.0", -"id":1, -"method":"author_rotateKeys", -"params": [] -}'`} - - - - - - - - -1. Make sure to have [Docker installed](https://www.docker.com/get-started/). -You can run `docker -v` in the terminal of your choice to make sure it's installed. -2. Start a developer node by running -`./target/release/subspace-node run --dev --base-path PATH_TO_YOUR_NODE -- --domain-id 0 --rpc-cors all` - -:::tip -You can use any chain to generate a keypair, we recommend using a `dev` chain for simplicity. -You can adjust the `--keystore-path` if you prefer to generate the keys in a different location. -::: - -3. Start a local polkadot interface portal by running a docker contrainer. - -`docker run --rm -it --name polkadot-ui -e WS_URL=ws://0.0.0.0:9945 -p 80:80 jacogr/polkadot-js-apps:latest` - -4. Proceed to the browswer and type `localhost` in the search bar. You should be taken to the polkadot portal. - -![RPC-2](/img/doc-imgs/operators-staking/RPC-2.png) - -5. Navigate to `developer` -> `rpc calls` - -6. Select `author` in `call the selected endpoint` and pick a `rotateKeys()` in the dropdown. - -![RPC-3](/img/doc-imgs/operators-staking/RPC-3.png) - -7. Press on `Submit RPC call`. - -8. You will see a newly generated key on the screen. The key will also be written in a `keystore` location you specified earlier. - -:::tip -You will use this key in order to register an operator later. -::: - - - - +Make sure to use the base **--base-path** for the key generation, and running an operator node and make sure to replace **--domain-id value** with the domainID you would like to be an operator on. **You have successfully generated an operator key, congratulations!** -The keys were generated in the subfolder of **PATH_TO_NODE** you speficied and will be following [the updated Subspace node folder structure](../intro#folder-structure). If you don't see the generated keypair in the folder with name of the **domain ID** you specified, something went wrong. - -#### Example - -If I wanted to generate a keypair for **the domain ID 1**, my keypair needs to be located under `PATH_TO_NODE/1/keystore`. +The keys were generated in the subfolder of **PATH_TO_NODE** under `/domains/domainID/keystore`. If you don't see the generated keypair in the subfolder, something went wrong. ### Start the domain operator node @@ -162,7 +63,7 @@ subspace-node [consensus-chain-args] -- [domain-args] ``` Example: -Start a node as operator on `gemini-3g` chain: +Start a node as operator on `gemini-3h` chain: :::info You need to **wipe** and sync your node from genesis block, since you need to sync both consensus and domain chains. @@ -189,11 +90,10 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` ---listen-on /ip4/0.0.0.0/tcp/40333 \` ---keystore-path /keystore`} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` +--listen-on /ip4/0.0.0.0/tcp/40333`} @@ -208,11 +108,10 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ ---listen-on /ip4/0.0.0.0/tcp/40333 \\ ---keystore-path /keystore`} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--listen-on /ip4/0.0.0.0/tcp/40333`} @@ -227,11 +126,10 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ ---listen-on /ip4/0.0.0.0/tcp/40333 \\ ---keystore-path /keystore`} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--listen-on /ip4/0.0.0.0/tcp/40333`} @@ -267,7 +165,7 @@ services: "run", "--chain", "gemini-3h", "--base-path", "/var/subspace", - "--listen-on", "30333", + "--listen-on", "0.0.0.0:30333", "--dsn-listen-on", "/ip4/0.0.0.0/udp/30433/quic-v1", "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) @@ -278,10 +176,9 @@ services: # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", "--listen-on", "/ip4/0.0.0.0/tcp/40333", - "--bootstrap-nodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootstrap-nodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootstrap-nodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", - "--keystore-path", "/keystore" + "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", + "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", + "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7" ] healthcheck: timeout: 5s @@ -395,4 +292,4 @@ Alternatively, you can use [Subscan](https://subspace.subscan.io/) which is a li ![Staking-12](/img/doc-imgs/operators-staking/Staking-12.png) -7. Inspect and remember your `domain_id`. \ No newline at end of file +7. Inspect and remember your `domain_id`. \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index 174f22e1524..26ff8cd5f37 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -13,34 +13,20 @@ import CodeBlock from '@theme/CodeBlock'; import Link from '@docusaurus/Link'; import styles from '@site/src/pages/index.module.css'; -### Create operator key (alternative, less secure way): -An operator needs a key pair to participate in bundle production. -You can create a key using the following command: - -```bash -target/production/subspace-node run key generate --scheme sr25519 -``` - -![Staking-4](/img/doc-imgs/operators-staking/Staking-4.png) - -Back up the key. Take the `public key (hex)` of the Keypair. The public key is part of the operator config we will be using later on [Staking portal](https://staking.subspace.tools) or [PolkadotJS portal](https://polkadot.js.org/apps/#/explorer). #### Insert key to Keystore: -The key generated above needs to be added to the Keystore so that the operator node can use it to participate in bundle production. +This might be useful if you decicded to switch domains and already have **the secret phrase**. Read more about switching domain in the next section. To insert the key, use the following command: ```bash -target/production/subspace-node run domain insert-key \ ---base-path PATH_TO_NODE --domain-id 0 --keystore-suri "" --key-type oper --scheme sr25519 +target/production/subspace-node domain key insert \ +--base-path PATH_TO_NODE --domain-id DOMAIN_ID --keystore-suri "" --key-type oper --scheme sr25519 ``` -The command above assumes `/keystore` as the keystore location. -`suri` is the secret phrase of the operator key. +The command above will insert the keypair in the subfolder of `PATH_TO_NODE/domains/DOMAIN_ID/keystore`. -:::tip -`tmp` folder on linux based systems will be emptied upon the system reboot. Make sure to store the keypair in a secure and permanent location. -::: +`suri` is the secret phrase of the operator key. ### Switch domains @@ -61,6 +47,10 @@ Only the account who registered **Operator** can swith the domain. ::: +:::note +You need to update the move your keypain to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore) +::: + :::note Stake of your **Nominators** won't be released, but will be moved to the new domain as well. @@ -126,17 +116,15 @@ To run both operator and validator at the same time, provide requrired flags for --chain gemini-3g \` --blocks-pruning 256 \` --state-pruning archive \` ---no-private-ipv4 \` --farmer \` --name your_node_name \` -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` ---keystore-path /keystore \` --listen-on /ip4/0.0.0.0/tcp/40333 \` ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -149,17 +137,15 @@ To run both operator and validator at the same time, provide requrired flags for --chain gemini-3g \\ --blocks-pruning 256 \\ --state-pruning archive \\ ---no-private-ipv4 \\ --farmer \\ --name your_node_name \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---keystore-path /keystore \\ --listen-on /ip4/0.0.0.0/tcp/40333 \\ ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -171,17 +157,15 @@ To run both operator and validator at the same time, provide requrired flags for --chain gemini-3g \\ --blocks-pruning 256 \\ --state-pruning archive \\ ---no-private-ipv4 \\ --farmer \\ --name your_node_name \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---keystore-path /keystore \\ --listen-on /ip4/0.0.0.0/tcp/40333 \\ ---bootstrap-nodes /ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} @@ -223,8 +207,7 @@ services: "--dsn-listen-on", "/ip4/0.0.0.0/tcp/30433", "--rpc-cors", "all", "--rpc-methods", "unsafe", - "--rpc-listen-on", - "--no-private-ipv4", + "--rpc-listen-on", "0.0.0.0:9944", "--farmer", "--name", "INSERT_YOUR_ID", "--", @@ -232,11 +215,10 @@ services: "--domain-id", "INSERT_YOUR_DOMAIN_ID", # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", - "--keystore-path", "/keystore", "--listen-on", "/ip4/0.0.0.0/tcp/40333", - "--bootstrap-nodes", "/ip4/3.87.28.170/tcp/40333/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootstrap-nodes", "/ip4/140.82.45.36/tcp/40333/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootstrap-nodes", "/ip4/167.179.116.135/tcp/40333/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", + "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", + "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", + "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) ] healthcheck: From d4647beab8881513616ad338ec414195b37d1e05 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Thu, 25 Jan 2024 11:03:24 -0500 Subject: [PATCH 14/22] Reflect PR 2452 --- .../staking/operators/deregister-operator.mdx | 4 +--- .../staking/operators/deregister-operator.mdx | 8 +++----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/farming-&-staking/staking/operators/deregister-operator.mdx b/docs/farming-&-staking/staking/operators/deregister-operator.mdx index 300ef5967d3..7c207f8acc3 100644 --- a/docs/farming-&-staking/staking/operators/deregister-operator.mdx +++ b/docs/farming-&-staking/staking/operators/deregister-operator.mdx @@ -86,10 +86,8 @@ Alternatively, you can use the **PolkadotJS** portal to deregister operator. 7. Select `domains` under `selected contant query` and choose `stakeWithdrawalLockingPeriod`. 8. Click on `+` to run the query. -![Staking-15](/img/doc-imgs/operators-staking/Staking-15.png) - :::info -Number 256 above corresponds to the number of the domain blocks, and not the consensus chain blocks. +The current locking period is set to 14_400 blocks, or 24 hours. ::: diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/deregister-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/deregister-operator.mdx index c2e996d549f..f969a32607f 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/deregister-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/deregister-operator.mdx @@ -86,13 +86,11 @@ Alternatively, you can use the **PolkadotJS** portal to deregister operator. 7. Select `domains` under `selected contant query` and choose `stakeWithdrawalLockingPeriod`. 8. Click on `+` to run the query. -![Staking-15](/img/doc-imgs/operators-staking/Staking-15.png) - :::info -Number 256 above corresponds to the number of the domain blocks, and not the consensus chain blocks. +The current locking period is set to 14_400 blocks, or 24 hours. ::: - ### Operator Stake Withdrawal -**Operator** stake withdrawal works similarly to **Nominator** stake withdrawal. Refer to [this section](../staking.md#stake-withdrawal-using-polkadotjs) to withdraw your stake. \ No newline at end of file +**Operator** stake withdrawal works similarly to **Nominator** stake withdrawal. Refer to [this section](../staking.md#stake-withdrawal-using-polkadotjs) to withdraw your stake. + From 2a3d0559af2e978dd7b85a7f58f17b71d1ad22fb Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Mon, 29 Jan 2024 13:50:27 -0500 Subject: [PATCH 15/22] Make further adjustments after the review --- .../farming/advanced-cli/cli-tips.mdx | 6 +++--- .../farming/advanced-cli/platforms/_linux.mdx | 4 ++-- .../farming/advanced-cli/platforms/_macos.mdx | 4 ++-- .../farming/advanced-cli/platforms/_windows.mdx | 4 ++-- docs/farming-&-staking/staking/intro.md | 8 ++++---- .../staking/operators/register-operator.mdx | 14 +++++++++----- .../staking/operators/tips-operator.mdx | 8 ++++---- docs/farming-&-staking/staking/staking.md | 2 +- .../farming/advanced-cli/cli-tips.mdx | 8 ++++---- .../farming/advanced-cli/platforms/_linux.mdx | 4 ++-- .../farming/advanced-cli/platforms/_macos.mdx | 4 ++-- .../farming/advanced-cli/platforms/_windows.mdx | 4 ++-- .../farming-&-staking/staking/intro.md | 8 ++++---- .../staking/operators/register-operator.mdx | 14 +++++++++----- .../staking/operators/tips-operator.mdx | 8 ++++---- .../farming-&-staking/staking/staking.md | 2 +- 16 files changed, 55 insertions(+), 47 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx index d507b625997..40e7886ca1b 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -63,7 +63,7 @@ If you were running a node previously, and want to switch to a new network, plea # Replace `FARMER_FILE_NAME` with the name of the farmer file you downloaded from releases ./FARMER_FILE_NAME wipe PATH_TO_FARM # Replace `NODE_FILE_NAME` with the name of the node file you downloaded from releases -./NODE_FILE_NAME wipe PATH_TO_NODE +./NODE_FILE_NAME wipe NODE_DATA_PATH ``` It does not matter if the node/farmer executable is the previous one or from the new snapshot, both will work. @@ -167,11 +167,11 @@ NUMA support will benefit farmers with large, powerful CPUs and lots of RAM avai Previously plotting/replotting thread pools were created for each farm separately even though only a configured number of them can be used at a time (by default just one). With the introduction of NUMA support, the farmer application has a thread pool manager that will create a necessary number of thread pools that will be allocated to currently plotting/replotting farms. -When a thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead, OS is free to move threads between cores, but only within CPU cores allocated for thread pool. This will ensure plotting for a particular sector only happens on a particular CPU/NUMA node. +When a thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead, the OS is free to move threads between cores, but only within CPU cores allocated for the thread pool. This will ensure plotting for a particular sector only happens on a particular CPU/NUMA node. #### Enabling NUMA on Windows/Linux machines -On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to a number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. +On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to the number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. To use NUMA, you need to enable it via the BIOS of your motherboard for the farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc processors** but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index 07659c7a008..61c49819463 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -94,7 +94,7 @@ import styles from '@site/src/pages/index.module.css'; # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-08 run \ - --base-path path_to_node \ + --base-path NODE_DATA_PATH \ --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ @@ -158,4 +158,4 @@ Setting **--base-path** and specifying **--chain** became mandatory starting wit 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. +3. You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot. diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index c61239a4f16..e9cc95985a5 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -64,7 +64,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-macos-aarch64-gemini-3g-2024-jan-08 run \ - --base-path path_to_node \ + --base-path NODE_DATA_PATH \ --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ @@ -128,4 +128,4 @@ Setting **--base-path** and specifying **--chain** became mandatory starting wit 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file +3. You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index 02fdf74eb23..cdaf434f4c2 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -60,7 +60,7 @@ This is because the application is trying to access the internet. This is expect # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command .\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-08.exe run` - --base-path path_to_node ` + --base-path NODE_DATA_PATH ` --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` @@ -124,4 +124,4 @@ Setting **--base-path** and specifying **--chain** became mandatory starting wit 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file +3. You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file diff --git a/docs/farming-&-staking/staking/intro.md b/docs/farming-&-staking/staking/intro.md index fd484edd31e..5f4d61f8a94 100644 --- a/docs/farming-&-staking/staking/intro.md +++ b/docs/farming-&-staking/staking/intro.md @@ -65,7 +65,7 @@ Our suggested specs are not necessarily applicable to Stake Wars. We encourage a ### Folder structure -Starting with Gemini 3h, **Subspace Node** will create a following directory structure: +Starting with Gemini 3h, **Subspace Node** will create the following directory structure: - subspace-node/db - subspace-node/domains/0/keystore @@ -74,7 +74,7 @@ Starting with Gemini 3h, **Subspace Node** will create a following directory str - subspace-node/domains/1/db - subspace-node/network -For operators it means that you no longer can create a keystore in a random location, the keystore has to be located in a specific subfolder of the desired domain. +For operators it means that you can no longer create a keystore in a random location, the keystore has to be located in a specific subfolder of the desired domain and will be ### Staking @@ -82,9 +82,9 @@ The Subspace Network relies on staking from both domain operators and farmers to Our staking model consists of two tiers: -- Farmers earn rewards proportional to their pledged storage. Farmers can choose to nominate operators and back them with their own stake, increasing their chance of being elected as a slot leader. Farmers, who have earned storage rewards, nominate operators to execute transactions. This nomination system balances the power between farmers who nominate and operators and both parties share the execution fees and the potential penalties (slashing). +- Farmers earn rewards proportional to their pledged storage. Farmers can choose to nominate operators and back them with their own stake, increasing their chance of being elected as a slot leader. Farmers, who have earned storage rewards, nominate operators to execute transactions. This nomination system balances the power between farmers who nominate and operators with both parties sharing the execution fees and the potential penalties (slashing). -- Operators stake to gain the right to produce bundles within a domain. They are responsible for validating and executing transactions, producing execution receipts, applying state transitions, submitting a storage fee for the bundle execution and earning fees for their work. The operator's chances to be elected as a slot leader and produce a bundle are weighted by their stake. Operators can be nominated by farmers or other SSC holders. +- Operators stake to gain the right to produce bundles within a domain. They are responsible for validating and executing transactions, producing execution receipts, applying state transitions, submitting a storage fee for bundle execution and earning fees for their work. The operator's chances to be elected as a slot leader and produce a bundle are weighted by their stake. Operators can be nominated by farmers or other SSC holders. The nomination pools in Subspace are "lazy": any fees earned by the operator are assigned to the pool and are not deposited to the nominators wallet unless they ask for a withdrawal. Unless withdrawn, the fees are "auto-staked" - they count towards the total stake of the pool, increasing its chance of being elected to produce bundles. diff --git a/docs/farming-&-staking/staking/operators/register-operator.mdx b/docs/farming-&-staking/staking/operators/register-operator.mdx index c949d21f9a5..b8ccfe3fe17 100644 --- a/docs/farming-&-staking/staking/operators/register-operator.mdx +++ b/docs/farming-&-staking/staking/operators/register-operator.mdx @@ -48,11 +48,15 @@ The example is not Stake Wars specific, the operator is responsible for finding To create a new operator key, run the following command: `subspace-node domain key create --base-path /tmp/node --domain-id 0` -Make sure to use the base **--base-path** for the key generation, and running an operator node and make sure to replace **--domain-id value** with the domainID you would like to be an operator on. +Make sure to specify the base **--base-path** for the key generation, and running an operator node and make sure to replace **--domain-id value** with the domain ID you would like to be an operator on. **You have successfully generated an operator key, congratulations!** -The keys were generated in the subfolder of **PATH_TO_NODE** under `/domains/domainID/keystore`. If you don't see the generated keypair in the subfolder, something went wrong. +:::note +Be sure to record and securely store the printed seed phrase. If it is leaked or stolen, both your operator and nominator stakes could be at risk of being slashed. +::: + +The keys were generated in the subfolder of **NODE_DATA_PATH** under `/domains/domainID/keystore`. If you don't see the generated keypair in the subfolder, something went wrong. ### Start the domain operator node @@ -86,7 +90,7 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak {`target/production/subspace-node run \` --chain gemini-3h \` --name your_node_name \` ---base-path your_path_to_node_data \` +--base-path NODE_DATA_PATH \` -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` @@ -104,7 +108,7 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak {`target/production/subspace-node run \\ --chain gemini-3h \\ --name your_node_name \\ ---base-path your_path_to_node_data \\ +--base-path NODE_DATA_PATH \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ @@ -122,7 +126,7 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak {`target/production/subspace-node run \\ --chain gemini-3h \\ --name your_node_name \\ ---base-path your_path_to_node_data \\ +--base-path NODE_DATA_PATH \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index 26ff8cd5f37..32a1f334147 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -15,16 +15,16 @@ import styles from '@site/src/pages/index.module.css'; #### Insert key to Keystore: -This might be useful if you decicded to switch domains and already have **the secret phrase**. Read more about switching domain in the next section. +This might be useful if you decided to switch domains or already have **the secret phrase**. Read more about switching domain in the next section. To insert the key, use the following command: ```bash target/production/subspace-node domain key insert \ ---base-path PATH_TO_NODE --domain-id DOMAIN_ID --keystore-suri "" --key-type oper --scheme sr25519 +--base-path NODE_DATA_PATH --domain-id DOMAIN_ID --keystore-suri "" ``` -The command above will insert the keypair in the subfolder of `PATH_TO_NODE/domains/DOMAIN_ID/keystore`. +The command above will insert the keypair in the subfolder of `NODE_DATA_PATH/domains/DOMAIN_ID/keystore`. `suri` is the secret phrase of the operator key. @@ -48,7 +48,7 @@ Only the account who registered **Operator** can swith the domain. ::: :::note -You need to update the move your keypain to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore) +You need to move your keypair to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore) ::: :::note diff --git a/docs/farming-&-staking/staking/staking.md b/docs/farming-&-staking/staking/staking.md index a3f7dad4799..a2c940502f8 100644 --- a/docs/farming-&-staking/staking/staking.md +++ b/docs/farming-&-staking/staking/staking.md @@ -147,7 +147,7 @@ Example of withdrawal of 1 TSSC stake amount from nominating an operator `17`. ![Staking-23](/img/doc-imgs/operators-staking/Staking-23.png) -Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. The curret **unlocking period** is set to 28 800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. +Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. The current **unlocking period** is set to 28,800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. ### Calculating your nominator balance diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx index d507b625997..9c8baaf6a0c 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -63,7 +63,7 @@ If you were running a node previously, and want to switch to a new network, plea # Replace `FARMER_FILE_NAME` with the name of the farmer file you downloaded from releases ./FARMER_FILE_NAME wipe PATH_TO_FARM # Replace `NODE_FILE_NAME` with the name of the node file you downloaded from releases -./NODE_FILE_NAME wipe PATH_TO_NODE +./NODE_FILE_NAME wipe NODE_DATA_PATH ``` It does not matter if the node/farmer executable is the previous one or from the new snapshot, both will work. @@ -167,11 +167,11 @@ NUMA support will benefit farmers with large, powerful CPUs and lots of RAM avai Previously plotting/replotting thread pools were created for each farm separately even though only a configured number of them can be used at a time (by default just one). With the introduction of NUMA support, the farmer application has a thread pool manager that will create a necessary number of thread pools that will be allocated to currently plotting/replotting farms. -When a thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead, OS is free to move threads between cores, but only within CPU cores allocated for thread pool. This will ensure plotting for a particular sector only happens on a particular CPU/NUMA node. +When a thread pool is created, it is assigned to a set of CPU cores and will only be able to use those cores. Pinning doesn’t pin threads to cores 1:1, instead, the OS is free to move threads between cores, but only within CPU cores allocated for the thread pool. This will ensure plotting for a particular sector only happens on a particular CPU/NUMA node. #### Enabling NUMA on Windows/Linux machines -On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to a number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. +On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to the number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. To use NUMA, you need to enable it via the BIOS of your motherboard for the farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc processors** but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. -To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file +To read more about NUMA support and the benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index 747aa223e0a..2043c54bd99 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -94,7 +94,7 @@ import styles from '@site/src/pages/index.module.css'; # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-08 run \ - --base-path path_to_node \ + --base-path NODE_DATA_PATH \ --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ @@ -158,4 +158,4 @@ Setting **--base-path** and specifying **--chain** became mandatory starting wit 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file +3. You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index c61239a4f16..e9cc95985a5 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -64,7 +64,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-macos-aarch64-gemini-3g-2024-jan-08 run \ - --base-path path_to_node \ + --base-path NODE_DATA_PATH \ --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ @@ -128,4 +128,4 @@ Setting **--base-path** and specifying **--chain** became mandatory starting wit 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file +3. You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index 02fdf74eb23..cdaf434f4c2 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -60,7 +60,7 @@ This is because the application is trying to access the internet. This is expect # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command .\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-08.exe run` - --base-path path_to_node ` + --base-path NODE_DATA_PATH ` --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` @@ -124,4 +124,4 @@ Setting **--base-path** and specifying **--chain** became mandatory starting wit 2022-06-02T00:02:09.492868Z INFO subspace_farmer::archiving: Plotted segment segment_index=5 ``` -3. You are now Farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file +3. You are now farming! Just wait for your node to fully sync, and for your farmer to fully plot. \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/staking/intro.md b/versioned_docs/version-latest/farming-&-staking/staking/intro.md index fd484edd31e..5f4d61f8a94 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/intro.md +++ b/versioned_docs/version-latest/farming-&-staking/staking/intro.md @@ -65,7 +65,7 @@ Our suggested specs are not necessarily applicable to Stake Wars. We encourage a ### Folder structure -Starting with Gemini 3h, **Subspace Node** will create a following directory structure: +Starting with Gemini 3h, **Subspace Node** will create the following directory structure: - subspace-node/db - subspace-node/domains/0/keystore @@ -74,7 +74,7 @@ Starting with Gemini 3h, **Subspace Node** will create a following directory str - subspace-node/domains/1/db - subspace-node/network -For operators it means that you no longer can create a keystore in a random location, the keystore has to be located in a specific subfolder of the desired domain. +For operators it means that you can no longer create a keystore in a random location, the keystore has to be located in a specific subfolder of the desired domain and will be ### Staking @@ -82,9 +82,9 @@ The Subspace Network relies on staking from both domain operators and farmers to Our staking model consists of two tiers: -- Farmers earn rewards proportional to their pledged storage. Farmers can choose to nominate operators and back them with their own stake, increasing their chance of being elected as a slot leader. Farmers, who have earned storage rewards, nominate operators to execute transactions. This nomination system balances the power between farmers who nominate and operators and both parties share the execution fees and the potential penalties (slashing). +- Farmers earn rewards proportional to their pledged storage. Farmers can choose to nominate operators and back them with their own stake, increasing their chance of being elected as a slot leader. Farmers, who have earned storage rewards, nominate operators to execute transactions. This nomination system balances the power between farmers who nominate and operators with both parties sharing the execution fees and the potential penalties (slashing). -- Operators stake to gain the right to produce bundles within a domain. They are responsible for validating and executing transactions, producing execution receipts, applying state transitions, submitting a storage fee for the bundle execution and earning fees for their work. The operator's chances to be elected as a slot leader and produce a bundle are weighted by their stake. Operators can be nominated by farmers or other SSC holders. +- Operators stake to gain the right to produce bundles within a domain. They are responsible for validating and executing transactions, producing execution receipts, applying state transitions, submitting a storage fee for bundle execution and earning fees for their work. The operator's chances to be elected as a slot leader and produce a bundle are weighted by their stake. Operators can be nominated by farmers or other SSC holders. The nomination pools in Subspace are "lazy": any fees earned by the operator are assigned to the pool and are not deposited to the nominators wallet unless they ask for a withdrawal. Unless withdrawn, the fees are "auto-staked" - they count towards the total stake of the pool, increasing its chance of being elected to produce bundles. diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx index 148f5e91e45..8644adad70a 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx @@ -48,11 +48,15 @@ The example is not Stake Wars specific, the operator is responsible for finding To create a new operator key, run the following command: `subspace-node domain key create --base-path /tmp/node --domain-id 0` -Make sure to use the base **--base-path** for the key generation, and running an operator node and make sure to replace **--domain-id value** with the domainID you would like to be an operator on. +Make sure to specify the base **--base-path** for the key generation, and running an operator node and make sure to replace **--domain-id value** with the domain ID you would like to be an operator on. **You have successfully generated an operator key, congratulations!** -The keys were generated in the subfolder of **PATH_TO_NODE** under `/domains/domainID/keystore`. If you don't see the generated keypair in the subfolder, something went wrong. +:::note +Be sure to record and securely store the printed seed phrase. If it is leaked or stolen, both your operator and nominator stakes could be at risk of being slashed. +::: + +The keys were generated in the subfolder of **NODE_DATA_PATH** under `/domains/domainID/keystore`. If you don't see the generated keypair in the subfolder, something went wrong. ### Start the domain operator node @@ -86,7 +90,7 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak {`target/production/subspace-node run \` --chain gemini-3h \` --name your_node_name \` ---base-path your_path_to_node_data \` +--base-path NODE_DATA_PATH \` -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` @@ -104,7 +108,7 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak {`target/production/subspace-node run \\ --chain gemini-3h \\ --name your_node_name \\ ---base-path your_path_to_node_data \\ +--base-path NODE_DATA_PATH \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ @@ -122,7 +126,7 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak {`target/production/subspace-node run \\ --chain gemini-3h \\ --name your_node_name \\ ---base-path your_path_to_node_data \\ +--base-path NODE_DATA_PATH \\ -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index 26ff8cd5f37..32a1f334147 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -15,16 +15,16 @@ import styles from '@site/src/pages/index.module.css'; #### Insert key to Keystore: -This might be useful if you decicded to switch domains and already have **the secret phrase**. Read more about switching domain in the next section. +This might be useful if you decided to switch domains or already have **the secret phrase**. Read more about switching domain in the next section. To insert the key, use the following command: ```bash target/production/subspace-node domain key insert \ ---base-path PATH_TO_NODE --domain-id DOMAIN_ID --keystore-suri "" --key-type oper --scheme sr25519 +--base-path NODE_DATA_PATH --domain-id DOMAIN_ID --keystore-suri "" ``` -The command above will insert the keypair in the subfolder of `PATH_TO_NODE/domains/DOMAIN_ID/keystore`. +The command above will insert the keypair in the subfolder of `NODE_DATA_PATH/domains/DOMAIN_ID/keystore`. `suri` is the secret phrase of the operator key. @@ -48,7 +48,7 @@ Only the account who registered **Operator** can swith the domain. ::: :::note -You need to update the move your keypain to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore) +You need to move your keypair to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore) ::: :::note diff --git a/versioned_docs/version-latest/farming-&-staking/staking/staking.md b/versioned_docs/version-latest/farming-&-staking/staking/staking.md index 1061a0480fe..3b07cefcf7c 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/staking.md +++ b/versioned_docs/version-latest/farming-&-staking/staking/staking.md @@ -147,7 +147,7 @@ Example of withdrawal of 1 TSSC stake amount from nominating an operator `17`. ![Staking-23](/img/doc-imgs/operators-staking/Staking-23.png) -Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. The curret **unlocking period** is set to 28 800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. +Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. The current **unlocking period** is set to 28,800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. ### Calculating your nominator balance From 94c6fb4b630acc94b919a58e6389d1fa56619b46 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Mon, 29 Jan 2024 17:19:56 -0500 Subject: [PATCH 16/22] Resolve merge conflict, improve grammar and wording --- .../farming/advanced-cli/cli-tips.mdx | 18 ----------------- docs/farming-&-staking/staking/intro.md | 2 +- .../staking/operators/register-operator.mdx | 4 +++- .../staking/operators/tips-operator.mdx | 2 +- .../farming/advanced-cli/cli-tips.mdx | 20 +------------------ .../farming-&-staking/staking/intro.md | 2 +- .../staking/operators/register-operator.mdx | 4 +++- .../staking/operators/tips-operator.mdx | 2 +- 8 files changed, 11 insertions(+), 43 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx index c71aa450cd0..7267cc2a31c 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -45,8 +45,6 @@ In certain situations, especially when the farmer terminates unexpectedly or enc Ensure to replace /path/to/your/plot with your actual plot path. Use this command cautiously as it modifies the plot state to recover from errors. -<<<<<<< HEAD -======= ### Specify Exact CPU Cores for Plotting/Replotting This option will override any custom logic that the **subspace farmer** might otherwise use. You can specify the plotting CPU cores by adding `--plotting-cpu-cores`, followed by the desired cores parameters. Cores should be listed as comma-separated values, with whitespace used to separate different thread pools or encoding instances. @@ -56,22 +54,6 @@ Similarly, you can customize the replotting CPU cores using `--replotting-cpu-co Note that setting `--plotting-cpu-cores` requires `--replotting-cpu-cores` to be configured with the same number of CPU core groups. If the `--replotting-cpu-cores` setting is omitted, the node will default to using the same thread pool as for plotting. -### Using a Custom Path -You can set a custom path for your node & farmer to use if you want to use an external hard drive, or set a custom path from the default. You can set the node and farmer to different directories if you would like. - - - - -#### Set Node Custom Path. -To set your node to use a custom path all you will need to do is add the `--base-path` parameter. - -```bash -# start node and store data in `NODE_DATA_PATH` instead of default location -./NODE_FILE_NAME --base-path NODE_DATA_PATH --chain gemini-3g ...` -``` - - ->>>>>>> origin ### Switching to a new snapshot from older/different versions of Subspace diff --git a/docs/farming-&-staking/staking/intro.md b/docs/farming-&-staking/staking/intro.md index 5f4d61f8a94..8e2bbc6fa01 100644 --- a/docs/farming-&-staking/staking/intro.md +++ b/docs/farming-&-staking/staking/intro.md @@ -74,7 +74,7 @@ Starting with Gemini 3h, **Subspace Node** will create the following directory s - subspace-node/domains/1/db - subspace-node/network -For operators it means that you can no longer create a keystore in a random location, the keystore has to be located in a specific subfolder of the desired domain and will be +For operators it means that you can find your key pair under `/domains/domainID/keystore`. ### Staking diff --git a/docs/farming-&-staking/staking/operators/register-operator.mdx b/docs/farming-&-staking/staking/operators/register-operator.mdx index b8ccfe3fe17..fe7ccc1bd31 100644 --- a/docs/farming-&-staking/staking/operators/register-operator.mdx +++ b/docs/farming-&-staking/staking/operators/register-operator.mdx @@ -43,7 +43,9 @@ In the example above the number 3 corresponds to the domainId. The example is not Stake Wars specific, the operator is responsible for finding out the correct domain ID they want to operate on. **Stake Wars are using the domain with ID 1**. ::: -### Create operator key (recommended way) +### Create operator key + +An operator needs a key pair to participate in bundle production. To create a new operator key, run the following command: `subspace-node domain key create --base-path /tmp/node --domain-id 0` diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index 32a1f334147..d6728c8c8a2 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -48,7 +48,7 @@ Only the account who registered **Operator** can swith the domain. ::: :::note -You need to move your keypair to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore) +You need to move your keypair to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore). ::: :::note diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx index c51fd3a1524..7267cc2a31c 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -45,8 +45,6 @@ In certain situations, especially when the farmer terminates unexpectedly or enc Ensure to replace /path/to/your/plot with your actual plot path. Use this command cautiously as it modifies the plot state to recover from errors. -<<<<<<< HEAD -======= ### Specify Exact CPU Cores for Plotting/Replotting This option will override any custom logic that the **subspace farmer** might otherwise use. You can specify the plotting CPU cores by adding `--plotting-cpu-cores`, followed by the desired cores parameters. Cores should be listed as comma-separated values, with whitespace used to separate different thread pools or encoding instances. @@ -56,22 +54,6 @@ Similarly, you can customize the replotting CPU cores using `--replotting-cpu-co Note that setting `--plotting-cpu-cores` requires `--replotting-cpu-cores` to be configured with the same number of CPU core groups. If the `--replotting-cpu-cores` setting is omitted, the node will default to using the same thread pool as for plotting. -### Using a Custom Path -You can set a custom path for your node & farmer to use if you want to use an external hard drive, or set a custom path from the default. You can set the node and farmer to different directories if you would like. - - - - -#### Set Node Custom Path. -To set your node to use a custom path all you will need to do is add the `--base-path` parameter. - -```bash -# start node and store data in `NODE_DATA_PATH` instead of default location -./NODE_FILE_NAME --base-path NODE_DATA_PATH --chain gemini-3g ...` -``` - - ->>>>>>> origin ### Switching to a new snapshot from older/different versions of Subspace @@ -201,4 +183,4 @@ When a thread pool is created, it is assigned to a set of CPU cores and will onl On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to the number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. To use NUMA, you need to enable it via the BIOS of your motherboard for the farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc processors** but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. -To read more about NUMA support and the benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file +To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/staking/intro.md b/versioned_docs/version-latest/farming-&-staking/staking/intro.md index 5f4d61f8a94..8e2bbc6fa01 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/intro.md +++ b/versioned_docs/version-latest/farming-&-staking/staking/intro.md @@ -74,7 +74,7 @@ Starting with Gemini 3h, **Subspace Node** will create the following directory s - subspace-node/domains/1/db - subspace-node/network -For operators it means that you can no longer create a keystore in a random location, the keystore has to be located in a specific subfolder of the desired domain and will be +For operators it means that you can find your key pair under `/domains/domainID/keystore`. ### Staking diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx index 8644adad70a..afe8af94572 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx @@ -43,7 +43,9 @@ In the example above the number 3 corresponds to the domainId. The example is not Stake Wars specific, the operator is responsible for finding out the correct domain ID they want to operate on. **Stake Wars are using the domain with ID 1**. ::: -### Create operator key (recommended way) +### Create operator key + +An operator needs a key pair to participate in bundle production. To create a new operator key, run the following command: `subspace-node domain key create --base-path /tmp/node --domain-id 0` diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index 32a1f334147..d6728c8c8a2 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -48,7 +48,7 @@ Only the account who registered **Operator** can swith the domain. ::: :::note -You need to move your keypair to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore) +You need to move your keypair to a new location, if you switch domains. Follow the [insert key to keystore section](#insert-key-to-keystore). ::: :::note From 4e2020dcf9029e397a2d80fd9eb8cfc9075b87ce Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Mon, 29 Jan 2024 17:27:47 -0500 Subject: [PATCH 17/22] Add a few small clarifications --- docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx | 2 +- docs/farming-&-staking/staking/intro.md | 2 +- .../farming-&-staking/farming/advanced-cli/cli-tips.mdx | 2 +- .../version-latest/farming-&-staking/staking/intro.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 7267cc2a31c..6b44c846595 100644 --- a/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -183,4 +183,4 @@ When a thread pool is created, it is assigned to a set of CPU cores and will onl On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to the number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. To use NUMA, you need to enable it via the BIOS of your motherboard for the farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc processors** but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. -To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file +To read more about NUMA support and the benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file diff --git a/docs/farming-&-staking/staking/intro.md b/docs/farming-&-staking/staking/intro.md index 8e2bbc6fa01..ffced0ff15b 100644 --- a/docs/farming-&-staking/staking/intro.md +++ b/docs/farming-&-staking/staking/intro.md @@ -74,7 +74,7 @@ Starting with Gemini 3h, **Subspace Node** will create the following directory s - subspace-node/domains/1/db - subspace-node/network -For operators it means that you can find your key pair under `/domains/domainID/keystore`. +For operators it means that you can find your key pair under `NODE_DATA_PATH/domains/domainID/keystore`. ### Staking diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx index 7267cc2a31c..6b44c846595 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/cli-tips.mdx @@ -183,4 +183,4 @@ When a thread pool is created, it is assigned to a set of CPU cores and will onl On Linux and Windows, the farmer will detect NUMA systems and create a number of thread pools that correspond to the number of NUMA nodes. This means the default behavior will change for large CPUs and consume more memory as a result, but that can be changed to the previous behavior with CLI options if desired. To use NUMA, you need to enable it via the BIOS of your motherboard for the farmer to know it exists. This option is present in motherboards for **Threadripper/Epyc processors** but might exist in others too. If you don’t enable it, both OS and farmer will think you have a single UMA processor and will not be able to apply optimizations. -To read more about NUMA support and benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file +To read more about NUMA support and the benefits it provides for large CPUs read [this forum post](https://forum.subspace.network/t/numa-support-is-coming/2299?u=nazar-pc). \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/staking/intro.md b/versioned_docs/version-latest/farming-&-staking/staking/intro.md index 8e2bbc6fa01..ffced0ff15b 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/intro.md +++ b/versioned_docs/version-latest/farming-&-staking/staking/intro.md @@ -74,7 +74,7 @@ Starting with Gemini 3h, **Subspace Node** will create the following directory s - subspace-node/domains/1/db - subspace-node/network -For operators it means that you can find your key pair under `/domains/domainID/keystore`. +For operators it means that you can find your key pair under `NODE_DATA_PATH/domains/domainID/keystore`. ### Staking From 90daf3c1e386848e907e934d9ee6a051bd4e1b26 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Tue, 30 Jan 2024 14:43:26 -0500 Subject: [PATCH 18/22] Adjust chain from 3g to 3h --- docker-compose-auto.yml | 2 +- .../farming/advanced-cli/platforms/_linux.mdx | 2 +- .../farming/advanced-cli/platforms/_macos.mdx | 2 +- .../farming/advanced-cli/platforms/_windows.mdx | 2 +- docs/farming-&-staking/staking/operators/tips-operator.mdx | 6 +++--- .../farming/advanced-cli/platforms/_linux.mdx | 2 +- .../farming/advanced-cli/platforms/_macos.mdx | 2 +- .../farming/advanced-cli/platforms/_windows.mdx | 2 +- .../farming-&-staking/staking/operators/tips-operator.mdx | 6 +++--- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docker-compose-auto.yml b/docker-compose-auto.yml index 6540fe9daff..1cd3f4f5595 100644 --- a/docker-compose-auto.yml +++ b/docker-compose-auto.yml @@ -19,7 +19,7 @@ services: - "0.0.0.0:30433:30433/tcp" restart: unless-stopped command: [ - "--chain", "gemini-3g", + "--chain", "gemini-3h", "--base-path", "/var/subspace", "--blocks-pruning", "256", "--state-pruning", "archive-canonical", diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index d6d0e163c45..ebdd4686260 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -94,7 +94,7 @@ import styles from '@site/src/pages/index.module.css'; # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-29-2 \ - --chain gemini-3g \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --farmer \ diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index e3fd2a34fc6..9e90b980c92 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -64,7 +64,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-macos-aarch64-gemini-3g-2024-jan-29-2 \ - --chain gemini-3g \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --farmer \ diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index 40471f99a74..b71084748bc 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -60,7 +60,7 @@ This is because the application is trying to access the internet. This is expect # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command .\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-29-2.exe ` - --chain gemini-3g ` + --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` --farmer ` diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index d6728c8c8a2..de2f635055d 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -113,7 +113,7 @@ To run both operator and validator at the same time, provide requrired flags for {`target/production/subspace-node run \` ---chain gemini-3g \` +--chain gemini-3h \` --blocks-pruning 256 \` --state-pruning archive \` --farmer \` @@ -134,7 +134,7 @@ To run both operator and validator at the same time, provide requrired flags for {`target/production/subspace-node run \\ ---chain gemini-3g \\ +--chain gemini-3h \\ --blocks-pruning 256 \\ --state-pruning archive \\ --farmer \\ @@ -154,7 +154,7 @@ To run both operator and validator at the same time, provide requrired flags for {`target/production/subspace-node run \\ ---chain gemini-3g \\ +--chain gemini-3h \\ --blocks-pruning 256 \\ --state-pruning archive \\ --farmer \\ diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index 60dbfdd8892..8622967ae91 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -94,7 +94,7 @@ import styles from '@site/src/pages/index.module.css'; # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-29-2 \ - --chain gemini-3g \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --farmer \ diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index e3fd2a34fc6..9e90b980c92 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -64,7 +64,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-macos-aarch64-gemini-3g-2024-jan-29-2 \ - --chain gemini-3g \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --farmer \ diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index 40471f99a74..b71084748bc 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -60,7 +60,7 @@ This is because the application is trying to access the internet. This is expect # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command .\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-29-2.exe ` - --chain gemini-3g ` + --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` --farmer ` diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index d6728c8c8a2..de2f635055d 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -113,7 +113,7 @@ To run both operator and validator at the same time, provide requrired flags for {`target/production/subspace-node run \` ---chain gemini-3g \` +--chain gemini-3h \` --blocks-pruning 256 \` --state-pruning archive \` --farmer \` @@ -134,7 +134,7 @@ To run both operator and validator at the same time, provide requrired flags for {`target/production/subspace-node run \\ ---chain gemini-3g \\ +--chain gemini-3h \\ --blocks-pruning 256 \\ --state-pruning archive \\ --farmer \\ @@ -154,7 +154,7 @@ To run both operator and validator at the same time, provide requrired flags for {`target/production/subspace-node run \\ ---chain gemini-3g \\ +--chain gemini-3h \\ --blocks-pruning 256 \\ --state-pruning archive \\ --farmer \\ From 1a5b4129703071eb210ef352c47861131d18cd3e Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Tue, 30 Jan 2024 14:59:18 -0500 Subject: [PATCH 19/22] Update stake withdraw instructions --- docs/farming-&-staking/staking/staking.md | 25 +++++++++++++----- .../doc-imgs/operators-staking/Staking-29.png | Bin 0 -> 73420 bytes .../farming-&-staking/staking/staking.md | 23 +++++++++++----- 3 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 static/img/doc-imgs/operators-staking/Staking-29.png diff --git a/docs/farming-&-staking/staking/staking.md b/docs/farming-&-staking/staking/staking.md index a2c940502f8..99331b645f9 100644 --- a/docs/farming-&-staking/staking/staking.md +++ b/docs/farming-&-staking/staking/staking.md @@ -134,11 +134,12 @@ Any **operator** or **nominator** can initiate withdrawal. They can withdraw the - If an operator is initiating a withdrawal, then their remaining balance should be at least the minimum operator stake, otherwise the request is rejected. - If a nominator is initiating a withdrawal, and the remaining balance is less than the operator-defined minimum nominator stake, then the total nominator stake is unlocked otherwise, only the requested amount is unlocked. - -1. Select the account you want to use in `using the selected account`. -2. Select `domains` under `submit the following extrinsic` and choose `withdrawStake(operatorId, withdraw)` in the dropdown. -3. Choose an operator by selecting an `operatorId` - in the example, it's set to `17`. -4. Choose the withdrawal amount in the `withdraw` field - you can specify to withdraw `all` or `some` staking amount. +1. Proceed to [PolkadotJS](https://polkadot.js.org/apps/#/explorer). +2. Navigate to Developer -> Extrinsics. +3. Select the account you want to use in `using the selected account`. +4. Select `domains` under `submit the following extrinsic` and choose `withdrawStake(operatorId, withdraw)` 5n the dropdown. +6. Choose an operator by selecting an `operatorId` - in the example, it's set to `17`. +7. Choose the withdrawal amount in the `withdraw` field - you can specify to withdraw `all` or `some` staking amount. :::note Example of withdrawal of 1 TSSC stake amount from nominating an operator `17`. @@ -147,8 +148,18 @@ Example of withdrawal of 1 TSSC stake amount from nominating an operator `17`. ![Staking-23](/img/doc-imgs/operators-staking/Staking-23.png) -Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. The current **unlocking period** is set to 28,800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. +Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **locking period** is complete. The current **locking period** is set to 28,800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. + +After the **locking period**, the withdrawn amount can be unlocked in the user's account with the `unlock_funds` extrinsic. + +1. Proceed to [PolkadotJS](https://polkadot.js.org/apps/#/explorer). +2. Navigate to Developer -> Extrinsics. +3. Select the account you want to use in `using the selected account`. +4. Select `domains` under `submit the following extrinsic` and choose `unlockFinds(operatorId)` in the dropdown. +5. Provide the `operatorID` you were staking with. +6. Submit the transaction, your funds should be unclocked and available once the epoch is complete (up to 10 minutes). +![Staking-29](/img/doc-imgs/operators-staking/Staking-29.png) ### Calculating your nominator balance @@ -169,4 +180,4 @@ Once the withdrawal is submitted, it's finalized after the **domain epoch** is c To calculate your nominator **balance**: 1. Calculate **share price** by dividing **currentTotalStake** from the domain by operator **currentTotalStake**. -2. Multiply **share price** and your nominator **shares** number. +2. Multiply **share price** and your nominator **shares** number. \ No newline at end of file diff --git a/static/img/doc-imgs/operators-staking/Staking-29.png b/static/img/doc-imgs/operators-staking/Staking-29.png new file mode 100644 index 0000000000000000000000000000000000000000..e30ea710d46c389078bee668bbfd036a2fd51664 GIT binary patch literal 73420 zcmd43by!qe8#fGy(kU@?he~%0AR*l#AU#7#w+u>14=sX#bV#U3sH8~E015~QN+Z$; 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%0DSF&tqI=*jFl%SoyZO# zezyoYN#M#ye=HpT8tnD-ckQsuNW68RHrpehHXZ;HV#?i~C{RJy`YyTH0tNxyNgqJq zYGQ$;rLD&JViv@z)=)o1WUQ0ang$jXe-fypdI^fnp}-{V!W9QvRw4+|PUNWO;sp!= z9oKbafs&PknY8B4y}EmH>{&NK$Z>(X&n5DPn)U9KPE8)DX?1hUlJ8;=>eogfr56p<$)*-~Qaux*_5{^Bq1VbXi? zRHgx%CIOILH&OYc97Hlj0HhP`)G<1jcw$uM$0=ZEy)BroOs^}C{^rO#KFtASzd1u7 z8Kd9<32c2sv2z7f=!*L%){teyBL1DOuUqy!CM%Rx1ftlFB~#0L8vebF8??;?EkWn; zk(C*>{}VA7VPD*hCn6TD71X%Vh(i8cpI|0l!3c#`_UQ+3wMG+l@{8u`IRYhj;ALHpx2b7ofYwR^s7xS4f^3I*0HA&wm1+;_MjdX7TM0f`^*}FCmq2TY-ho`& z%G47X0*QBh1R=FzixPBXNbMqe+4q2peSfh6S>YdmFMS+8@V1|l7MX;^9pHG_G?xRa z6TB1wUBJnToKQhB7P>>}%V`08FX1@GbH+pRKFN6l)ey6PJCDqF-EF|I+~)QF%*VVR zL2)2^b$3IadzzD+UCuzGhVOL)AWfu4CDNE&3Y@Y0Q)HqUpzDW8U=mG^7o~==tP}M$ zy2zj_K;X_o?$me-=%dJ~0_p?pKo5Eh4}XJ~Jgd$3PO8T9-6=*mMTzCD(Htr18-Pp- z-M(7{Xad_TmI6pQyFUTwtnL8u&&TMh#^1co9@x+{N#ZI3MGKpJb3mnP)s`Lq`xvNu z0jde42Gv088dK)Iit>ouQeF+vOP_9V>W9Aw?=lZNiWp4r->LzTsxh~*+j&uKZL`AI z;R;HcU1w8orF~RSYV~?R((D~#AYRn#N`q#m4Kn>8RAPHrs*QsU|#%7#aeGYv>rpYtmbmJhSRh{G^p=rb?F-=L$s7Db_T zRNOOk(o|7Vd0A6?W4Tnt5ljWHmx;CAg!LtJ%2yDT2o@Gnxc`#h*tUa=j3q|8pNx0& zmON?RO|I_o`NhC-(FFP>xw~}wdPo+}R`3ei{KC!-g{Wiy_ zCOr2`Mav#ld7rO>1O<%J8dT0Z5;itAZ7(<(lCR!^0|4c2D4$`^+7OBvuc6ZCr7Hef zzD^vrk94@3A=jjkq#$~ahdd=8A0H!m=IZ%Dqu4Bep>)LsiCy7`3~X@C@O!SbS5J^u ztCZhyrFEExA{5jkHfnYfQ6`W9nFYtWN(H{$-~P5*iSI{mVZU}59a!H2*7?!S%=^grbBz#<^@R3z&=zh|7h{nJVR^~Zu> zhbTv!M3dPz`iFJ6;lBTS)S!n!LGmI7Vwgm+1)$${b#}W>AlNYdc9Q7t z(1D@E$HlEr6KMbY`v3fNmx+bgb{)t4S#sdJOv!gUDlO3!#v}2)E)1B zqr_@=8v6>{Igmus0u-reu`rw@9aUM`@Tt%+h|K@7a(^r>RT9X}-n+X?O;%t{a(mp> zHUgg+dEtDd!-$6;Ao_oY#J@g89u;J)<6~Iz?J3&bP&}?TpFVwRw6(zdjdP=C2=;*% zHz!?=QEjB~)`)70tMBcIpZN0 zyl!$;i-_9)z2!1G!3myrMn^|W&U4ZJ-i+SzG zJjqwBCHBc*-WJ&(E@~ci3IA@1NDw{@>>u;0o(lAlqKUIzRobZI#qoSG`o_ zhcfc_I^44UZSDRV;O8~aBzGo@6#8H}-~a9`@y@3Mjww1)(kzEd&P8S5e?mb*#@_NlUENB! zy1Ld~4j}&4fr2pw@1Sk)tZ4}%KI@8#)-5Rv;jpcpZ7W2_#E`O`Rh5)j*F|{a|8^A9 zQ03+2gL=8y*<+}0DsrdFK$|6y=j8O1Ez$T*^!i#~3dO3&1wVoV%a-WuXM*fN?m4dhZX>vN6h(@P@m%fT5^C`4a)#|;0%&A8w8&a{%G>O{ zlmF8kz@fe5MO2|jFVJW@+{ixd7+FYIwKB<8M zQB&DfEz>KcujctDi4P@jL%xq!<;Q1hPd450aib8H9B#XajAeMZf6;2HZ*Jig`!ITq z$N8Y%GAbPtqd>+*K65t*_Y5JXv{ZhD8Ry7Op8XN?=&|Rhg_-K=QUB`Em{$zK1F?T& z3H;%s(niaI`S@qz^NtQ1Tq_K7#MttFgXq4ihHJTy zImsGoCIFuJDx84Lvetbt*PYdp=6WZ7fSGW=Mxxon-GYC#GEjfU)%um);ZQvT5083y zcW2_Q!);>3#kcIBwE}g9p7&Kt-Pbqg=f`mrFYyLO-9q}BICkp`>G&|sTeLTO%FpUm zSADo#V!Fei(uaciH#T=EftKEAX?!V*gR5Y7Iu-@J2z-{yc$KLMW`X^hsEb`^O)k9C zDSjN&7Obiz{W|@N%hM@+garY|<4<@YAuN|Epr3l~XJuZjfPVVyD?g4|%kx=lje|sp zJBTw?-`k!SFUStAZ0uTG95nHPee=l-o`%}LbUsKdfKrSJ421rEQTFWZrSHAR z>5f)yM$g_OLeX0`%M$PE&6hpHyQ;El;U)FqCEnqTkIeUOpS&M5lMd_W^${Q4OI_J^ z6P+G4(~3|1ujXAu5I%B@Pq~OZ=-)UA-ygL{Sw!c zmkHkEQfWLwbLXu}_2S#Q*m*v`(EKBpJ_`?W4-anPFc)`hxz3A#g3WV`g=O@+amQ0?OoO6 z@O6WOD<3oHZ3lt6CPNBE}f$284Fv?*gk;q=sv`F+WXBv^yAAT1D3_Ayf7MhuzQ;gl=XgYR04I z>|8KCJvr=Y0V>uVu@7zqg)g}kRgK<|75-2GknJ2*QcvbRfofFsdYo*!8d~}Ke|uh~ zR8Uefcv(P$E2UA*jtDZ|0!Lo&AE8yl69Un0kv?app;v_Br@7ycO`;vz11a^6SaF{H zym`I*>6S|h@R)jRl;07=@IrT_QXk{}^pkhwa75Vt0Z*IgvHdUGfg6ua6W^Z^^OplP zPLqhK)IX__s{v`ylc`Vt*CBZiKph6_34Q<7y@!nV^dQ}baitG(JL;nPVCkJCo%0!~knN4{8t5Zb0{#44wPQnK|M2E&!6xUk3GorxsNy6opaiYB=k%sNqk05PM+j~GWuBYN4ouY z#9~Mq39N>vwHpC4?T7o0e*YGOqJxDR?dFub51sgo9`dyGY!l-PwWfA`+>F`E^|{7v z&XdLJ*2A(%+%mb+DO$a8350K}-}`+@`S{WOx)1zScseKXfJ))G;BpeU@fGcl*37T= zD)34u@KQ6JvPp#?_NsjMO;4@dUM*=UUcaT7o5$%OHK{}u39i20<9w&e2r_zi_HIM=Z=IylSJIfdP9y;X|SDQ~+C9zx@n~s-e`uh4R z?zpWi|L6!nX19m3LAT|{*R26H6g-yBp>195>k?0qJn@{&}cN6O3pF=u8Gxh zv~zu0EYw-?s8#QseB^++3)qhnqLOEW;zbI~Axlsbw0QJ}D1W!2r}@!ABbn8dt_HDL z4TsH)45r4T8_6NCmO#?AhZZ8QVkB(duWQu`!$Y7&zrd;2+ z@@hM~G~|NE`72SID2kli@J9|gcI!nFFtCTw!&&oG53`Gd1bv#?dfjq&*%2) z?0_gs0X6@c*Sb;H%YJuKY0`R{=ouCxdxC5tYaizl`NPJWkMk7%lzkRc98qUO|)5tz8Nq!-}iSm)#k(Erf zjLqqwv5`xBD4ER=_>}F*?4dTZ9mOjS6+1@W*W4nTT8SwWUli1fcb$stcV{Om`8En{ za;dXzdF{7K?{=;?A*r$QWYdXXMRaeyrxPsMC#hL{F@4q`zR59Ha~P?j?J{Env*Gam zz0V!11Mnpg`~;n*5%ZgiIP;Qiw;2cCpQEB$Mr6zl_c=?K)ED3G=NK2`de~qt);}{x zMG-7XxEs3FoGFN!*rV&Gq3e8IO#wBADBlLLr2j zzv*{N3JZUNo^wpj!v}>$e6IE^mk-;<+MLQx*W7%3n*6ulrDke8TVN>&Mq5`77TivD za&mK?Kg|{eW#DUtxrj+j+dM2mg_;G`;Vo%()n(8`q^!uBdpC_@*FS*+hD16cOQig} zlz}6IHC>k}JzbZlJYAPD#24u|JmIUn#RY?1>YIYE^z~U)4djRk(<5~@8sQ{z(+sd#@@!~0JD2L%uwS;P9(F_sMB(!|N{$dL zKp|1cCSHBqn{84z+aj=j{rYuo9rw*w{Q*q+!QGK&Y;xzV(g3Z9R?Jb}w_i5UzN3ZU z^-!j}TWuI}EO5#rx2EI@u?=Ra{(J{SKl9xt0VOLX$j_e9r%(}IEVOH>bP#%o?@WH7 z1%kGCYf9-@6Pfj?Mm3hzKqWajUjBCJW-ZTC`k7q0y9M4Y3biJqu&e9aJ}JhBZr{KxX;Qm;0_G&k%?4~*N3;ZSG_3PV+{#xdjlSN!$EOoiC8bi*e9A@ zQv$%up`o=L>5+cECJ&yGb7j zvR!G1I^}uugk*?l)F8wDtCHT8aL|xt%@^oQdElxx_faiNc4QVxcN8^^y7eX2sxg~+ z!AOKz@BI~W&vu!fVk~ARl@)3OVdOdORsU#Z0S!TxK{UstxNfgdn z!(j^tny4MoB`$?IJ3?)pLgWTij-lP{STs{RTB@@iDwHL?YOQ>=#e$Jm%7+_zDU})w z^|)Qv3+axgBObp0c@*1E-oFmXj=xpGKqc$=TlUQ*)tQxCl0fXxx3L zSzf2n+4yu#BImY>_xW?%BoY!w9?sfu-zZxckatrKmF0%*ySZN9+`w&E_!U*#vR$?} zB0;Hf9vNcrR;nn@RJ%9OjfUb+ig?u`o?;tAA+eGakzB|SWx;fbZm{^6lDxZH4|h_EmjHT6vPdh4PV zC0hb7xO|a%)eCRR$`F~vvU1ojP|OnfDmBI9`AP$B~7HxB3IXw`IJ!R^8 zlR=}&B%S0z^C{vf(MrqXsX&iZ$b0t>#q14Ym+&IV*Xy*($#KTw!~$0v(IqeF%30EW zhL~uiTURmk`lxZ%X+L;jUpxRz$0q5AhgWp~1HoRq$V9Ed@gwiuG6aRmnl!vaRPnn{ zRuA*lGPp@!aG6OFy4^hQLsa*}Z;cw^Ynwe6oAvQ|suPHYun6;|t{hF@c0Xq^4)XMB zdH!KSMMo#YH()BJs6HQ#wg()-yf^mC7*s*YqU)){*whUIE>zu-&Em0ySOLPWF(8I1 zJ*OSkzn}D+V(+Rj`1- zLL~+>8Z`8^4FMYxElfr=Gmo0)iF`vjzo5q33D*636dOzd|DC-lI*IQ-?(ilM9V*JcQd1#1+s4KBCtzFFnQbMR=D3 zZI8dd6f(mMZTslc6uopix0I84kn+CgYbFIQY`Iy6+|OB8#u~V;u3^Q3a^I_Lq-mEo zb#%Mc=5v#K0}fYPD9`yeXwl$1By$1Q%2t|6!sXto-S+anh;!{&$NYnjhy1N(- zd*~ne#8PNFkvPQ3bXLa@xznOegXqhb{REnpY~~kuEYPX7tS{W8t`?g$d7j(u(i=fx zu?L7fytnv1Pe&tZ_56K>3kin1bPDs>o~b{#>b?<1&(tJyPddyS66Zh(vb0#y+v(du zn(0Jtl26_<1~&yIEzBi0!$uXJWZVvWp9`jUlF>s#SYHMKMsvK5`7zQYM`5DvkmSNP z3WE@0uRPrE0_-w}*ZXP{W|DVhG_#OZgW_NU_Ps?Ls_)*Fp6$(uykWg!Gd;QV84p`9@+sbfL4q8J}X!e$Ichrhw*UUUD0KzT;4}9kBFEm;vjoUN1WD z2fzT-c?LE5B}&TFX!t#`$;mWq4(FIYJYCe{eu1p`pVd_*#`3_JztI$C5R7JX$|mBK zboA#B4h{;Z<8^XD_8+awO7OTTmzvtOHJ9ci+(u#W9>}JIPc3T|x)0$+tg>D3cfi$r z>V^|Jvkq&UIER|sJpA#DeMj!a*YTdUNmngluifhg6te4UBTZ z``C5SGxhYBe%cW0vW%GeF>za##1!0swtg1uf`{A?y(GWL^HWB(T<0|+R|0c!N3$C} zmQiG|bedj%un}zKdFLBMp%CEb6@ZiOe8(K4waDEKAiaMlvH<8ifyMcLEpSZn41*X{ z=i^ldaBle9p9?SjTCLUQ%~x~}8LIf#tQL&?2u0%?7x_uJp6?36_HaFDx%Q#CnkFaU zm{e$cQ`tSBQl+JNsgGfgDR7@&Y|vO3PGPjRs{i=RRt);(Ffe8TxuvMJSc5hXCAyzR z^#m%IR%edCK~)JE{$D9uk@P=W2Ee(=b$H6lDwALAPb*MYJI&-4cmSew2bEy} zp2EX767$Qib4-1@;@|4``x#A-Va9l2y%(k_FoN8AP-W^BGi zR~^5~b11FBF1CBCakl$sU{PtE_T!2IHhl*LLq@slsGhl4wGaOeXYyClU>nE;G4DTjN3i#Sfd$9k3<0vwKjX>y8_r>jobNyV? zZRLR+Ca>cQ4`Er18VnPtb#EGbrujd|=j-RPBl)s<<&JX75MrAOp zersxiK)3h;yC5+|ujI!y1GY@#DTK(^yKn!aeqvbCuUvK>AouL>>er7-xIm zG!O6{Bc?6b6FQpTt@ylWJHVasT=uHN95^L#xgrhUc2E8*S+%;khp?fg7BEAf|N$54NJcj*N_~Gc@nf z;eJp~#Q_Cbqul-r-P=Y{0*@oG=Z+%_M$ug67aBpqp|L<3mguPQyfi)7!S0%P4eD>( zW&}T*4!1&8@3+Zw+Mdg8nfBS0nCvDTa^U(Bq&N0>YC8Q;?h4w1b!!y^;aI$pV;Ny< zm35iRD~(IXf@$g6-$oGiBFZu{G8%VF#<3b4591}4+)I$~#o&Ab(>=K)9nF#V>OH3V zD@|DpQlP7DF7`<$z`=uG#(qNE9BIKO2Q*(st7UfeCeGLN=0}hO9>_q5Q)f)jXuhG; zsZK7BC4+jiaIW-63iGKVEQ4c{*~%cE31@^KO_5*tL^;r9j$e-;Pg+`5f+2>(;(WFW zhYBu!&Kj45&3uwo?zxto4538x0k@DDLCka6`G-xtWBN6bo$! zDDpKOtu6EQ_wPLlAczIBNp9*n-Qu1a_uI>XSLyF*N}3*W?|`&2i73WlROzu65sfz# z?0m`Pl25H!FGp#C7a_=NEUSYs9nX{om~Ok{+3pd8sMBQxpSFfi$LW}S2sYQ-%}qH^-STh0i5&Lg|C z)8PkUT`M$Mw4~$V+eTW49?w5z{kjII!@g-~7j*L*5Xokscd* z>l2|{;c^YJ7G-7_4qJbM7HPg|cH!HqZpb!h02X1lm^PsxP$g!&4j??==1Vy{n2;*1 zf0kn!BejhZm5U6ob zs0!y{r-bEQ!eab}ynH+7Rs>h({1OnFO4>k0MIDmMgJ$UN^?=WW<=nX4i}guqGV}oI zB>y)_m1;p*1GzHG#4Su=UE22dZip*4DpoX}a7 zYK7C;n37HJmA88!7M%v!DHa1O?RwVXJblKQVPW!l&<}ow%lBd)eJvBZKIk?IbFg zzl>`olgtDS*%?ezyu&^?l%*|o*i$w>$$Wn@fN9qYc)$Ks0SrgaWmw7IFnntqO{9Xh z0@kECb#>=G1MHpkW7dHAeBG1#Ol{*XB}r!$w@@zgIouIlD^~YzX*A@W>C7gJ`AW5i z+lPRYsg^qlqa6`XafoTn3Wc?;<)Z8Ez*mGeuC%bnK@=>|K7!A26h-1gT~4vYZyhb! z5*5ex{6eLPdZ$Z46$bz^b@5_u)FNGY9hCe)48!HZj2K+C{?SRM&U?9=iCN~K89V$}d-XQ}n+$m!<5XwJY8!SE!( zlz3l+G#Py|2g{Ux>WtdV1~x%^=lp)4DMFE{kQ@UwYS`~h&lP=Te_a!W}bCK1^P(l@2 zD%whg$GTluaOLhq4)+lXxm$3RbA|^ar!x6&sT~hPFtdDDt@k(Y^xe>yq$Uc9RbK~; zs#c^B?SD5qciHKqG&oBv^LczCpJ%0cy*4(&wkwKo`otJvNc^Pa@lNGM#S0lej~_V| zf=U>z>?%-L2uf#7u6W2DkVJ*>K6>IR-hwguT<$lq*BAvAg+8&q%*7#ZbWaY|&af$y^RQvA$CkOAS2Gdp*M{C|1{toDctDXBF#sr#gNh zqjXK1mfd4`1Lo!*C)Q{BRT)S)d|D$aGO#YN?J!vFCIUDabA zW#m%e!QjGz{plI5j~F>M3Ia}|nYcsX-t$S1uZdIRV=kfR^4dTl;*>37!jS6lVQJ|E zUjP%!c$9mwz>SS`%hxs{w}a8D&iVM$mp2W{mTg)Si3-FRkB!&QP6=!^Dh-0pCNT{7 z>YZ4o*he%`sy#ZOPk9bDK_Lsr>{CQrNQU(#n=tlHSG zjlP-kCv@O-FVb?at^ zOY<}rUaoCbc|uFlE`KHV?W@&VowywNczlsra{y z3lGon@GOcoE37`wT<)y|5U}1x>Mog_g<+VAhfIIYbT3|?ekUHtr{AC5x0KTH!J5F} zqM(~GGn2U9cvctfPM>M;^$!R16R2WHFbmyv%Pt^CQCs-xwR@YAODUa5W^=Pf$W9^V zwRe$uflle1{H{IwP@2IFGP{&yC*^o4Spq$cQ*;MjIuv=CJG-qkXh~)=@2R;2(9bO0 zpmM%NoVfh{bRUw-cI`8rcG+lUKoE9t!Gnl{5+1mPdW|Jkwl?1F#8htDd67~`y zu*Wzhe3>o$6!8$W?cnORka5??dXWHlW|u2tAi3yaL*~?N7mX?K_!rI3)dYc1e zU*#CIl8xMZCt8g7rgOPrN$O$OW~p?V)f&x@D|u3s=NKFBRO9@)R!}~og%jMy-EA{^ z#*L3FRxnNhQT*T?!fombn{pLKo=yw%;5TU=h?|tB*hNiwq$D_radt4hFLxo5prk}U z+-xB4AWjM542E~%v-FhiAQX(e8>DHmn2E-^st7-({41;hh4=ZNylQf!e9I0~tQ#MU zM@lVa$AV%jEwgt8XT#adr}~293f3a|)dFO~iv%a+6!Nx%OF3OGw(|xdbAYckmK*fF zV3{#lEKDLAf(F+FfNr7F0hIz}O)=h!&%Qfj5me$0ss+l4h3Yjz%0*iAZWjk^ZB=vr z^JdB!bvuM9q*=o|6XpgBHwY9e_W-Rt8=(4*=I2WaT$vP@ zH1;#v$b6f;ViJ+r=7*_s7Ja)sD}0%6fqfX@E(KG-=TgU6UhJhc*t2X(ZNL08jbX87 zZ}|Z?n1~%sge81Wm)D4!y9i0n=IG~>x!4E z%3rD^l9Q1oOXI-g7LB@qg1-#L*mWF@iek$gBs2m}=dXKhRVo!)_EVLe9*GH>zgKo!btE7Xx@Ta7Z#W$L6GFnC`W0@h= zs!;ySMC*Do3ye2UvxCO@S_x_o`Nt41o{Kyt2CM+&3K=~;{d3}8f1KDk(rq01#?^~V zBeof5_s?jz>X-Xtb7%Ehn;|fTy0W)p<6kIB%PW(!M=3}fGate-K73&;5I_J!ahi~i`Bn1Fk*`lL) z7e2IlcYi_9=4&naA2 zi_PpzHD;kB8H@jNa7=F>!{0ty;Ve^{7e2@)186`M663uI9KL*G|5zF^NW-4`3>G#% zLF@guJ5jUS*Y%gIqvy9kp%pEHk3u0&Zptxbpy_gcfB5UqDJ4x#E5JM){GhkU>I{U% zSE~ZjV^4pD$EXm%=8jFuiU>%n(Hf-YHDo_j8(Eh}XG@6Q2pY@10Pf0B&)T{ayGb3R6egB+R&O$%YRY&tOVfo@(2wl3b+IPt5fO!8rIp zmsOc#h@WbxaEcyabH&$sbNuQSLAMLdNvW>%i4$V4lcOQR@ z7|}CY<0!mhgBGhJrgIkDODdf{TuS`}LOEAG@p*ey-gSsF7ZpZw+|U(|PHW2`LALwp zAaIWnRaMH?j1BWk32i%xn(|fEUx|u_=Re8TAE#3F6CaKB z=UcY%3@D@0393~B){Q(r<|6W~c3{>T#2c&ImNt(}a!_jNKTY6>0!#&rQ3Z^}x*jY1 zKbi3#xTWAr0RN*@5v`HEJ>w+uAM*YuWz73@bA+cU4(<3@cI1@o$Kw)|5IU!OZGx4d zABLQ`5VE}b$qaCcn18;wqTe9v5m-Bai`8Uq;1HuXX z@$-9dfYqnPVe%KOddh8x82HmfKeK`tU%=Q^^{D35y+(}v>EAL0pTm;nIRi*y+SAVV zM#g>>u|vX?pWj;ilOG5&?w*fMbNhV(z0e9V2twThD@=yBbO4fQyU*s% zXiiGcrUW9WodLWbRLNaw6`mY>FV8g{t$Md5|{Bwi2?0VRNkM1xQ!K$5z@;4sYLqnd%q zvQ0O@u=0HLXiNJJd=)EFnO=QkA%bIa2p3QL2ZTK~<%!;_MP-J22krJKfFmysP<^HM z(HF?*sW}+QC}4YwBJ4>f(PHDSRc&p9$?~S{{vTOa85U)?b`@zv5CoJ4DM3O~8U&<4 z>F$v39AE^c1(fdY?(S|77`nTMkQrcz@A16vImh>W|G2KwU3F;-DtPpn`smTowU8YTzNvC^-vhi^xW>@J95zZoRk3ull?q;MEb%j z>u$%Hy})qKba>X`H#m85zANX8A6C#11!^- zIGB`k<9r^#}!sQEH9Xb`{SjbtTq71OMS^wa3u^d_z{gSQ9 zgs`M2j!!CJ@^wA@HXWnX3Mg64oydI)G^=*{M|VH%E#yU%7HTnmv2BzF&^k+?9I&cO zw*^XoMV>=)jK`0sD8~_wHAdj1rWa`x2d{-Dhtz3URru!LavO$@t_2cTyIRk z>#`^R<3xiKJ-$gtSCC!HRioEk55vECZ5nU5-IfLBnmt01kuPQ2tjd0*<;rm|bss26 z%fI`T0sN6lD>(V@I*jJ%P}Ax0h6J!iJ2@Uz49fSPtiN?{9X|~aSy}Iqb%ChGex1RJ zE0{Ekw~{$KTI~?yJKoOS2l%*LC#EZbuRUj2oDPqE*jbK4-=Ch2wDB?1(Y#Wp~_UV2`W}0ASY-&@W=0HsvqmQda<=4Itgw6^|RX2pi5}3$!Zm2O2eI z@_M?>?sp01!~qJS@2>-3`gj@+pwpvVAJ6SSQBU*f^tuomJ8X6QmTkQ zi*>Y6_fSpHF1zd;nVFK*qKI@9)^}p6m1b~Gw{(;f<2>x8cT|s{l8}=bd|@-wx&phz zz|S!bd@|9XEEyHPLUN$hv7GtZUQy%JJO|Va;0CQ}Vk0}KJ0F@$N?$ztvp0xt5{Wm< zI;rja9ADS+k`(8Ewxkkn5QM;hLEgoVKHBqQKkI^ z35yt|sP{Vyu0Hw`L#`=*ETUmvFRS?}^23e;eERjR$+6b&GkRd3fC)4>`&J8Qg6-^wdn;dt#FS)iZw9^0vf>#ljwwpHW+U|JEJ*C6-1^FaSpS-5%>Yw>rDaEBc#FvK6JWFcWqq`hCge62DgWH3&M{d_-vK7 z|F0NJ#mE;J+^UECd^!8|nX9z4bR&CF_}mI6Q~N%oB#FnTc)vqPqcssIWErD@_CS^y zdp+G?g{_#y>9rI{L*oUHPxIx~^#InGpcU*PVyEri%1=0aW_wd-zLO6aS0T^YKV~Xd zND;DOkyssNlqebQyh=|`jEqh;QKP4FHw{}UJUAXRkcS6Vnl15FF&;x!+N|ZuBM8-c zc$uiEVCPYEU^^BPuX9S{aQ$~;V#qcx^XsjzFdGo1{IpVEBKkPl2=VZW^_SIo047L7 zMCNPU$4hl~ZC;@e+r;fkmjg9+F?fPl0fp^K(a^$vV#g`TfA@n(1C~MQnvLk2Qd}l@ z#6$jn4wxCML@xFrOg$(301>yB_c-Y^aS%%MLJ-Du4(bbsZCs)-wZ0D{w?g8MYOO+Z z0kWIL#Jc})l9G1az_iVR>B`;hSp@i2^6tD1Cq#}S$UxgnEf=GiS-WDr5@LvMU`Q|r z5PpXT3ltLhaQEoxeRwpvZRcr}a}{_ttWug*;;(uJ>S}G~<69bgy|@%&S+rSJ?hRJT zhNWZPDN;QTBG9X!c?e(!?N8K1GBh4$zGGVVdIYk6<`O9UEB*57%A$R!wG;c{Kmhhj z6M%T0o3h+e$~{79A1FB2Tw&{t4dbh7zcrxMSRaUTgbKPPA%Z6f0;K{s1}if62``pU z-~O>ubC^J_9cP0^`zhsN1zvgu=6_!Us$cspObx_qk0z0(S{u{+<0asB6nuL5X%YG4 z$E0sXJYl;(czywSwBP?57Q3?g73Ev5&FK!jge0TWEAzBB4^t?(!d7`U=;J^48Am+f zalu;nh=uq@)eeKqtN?5+TYQay11bH-jeB(G2U8Z4v|Gb3Uhr+I?G-YO9jR{OTbntS8eGgy%YDv~il}N3X zAT|>h@!r(TEK$`s`~nLUrfMWrWPWs@I>jaB@QGkbl#PXrZJbY~IPE!w8vR;PHj2f| z3Z*9Lt#b={tf;9CmEyN7nx;!*A-^?*(zsDGILa zG8}KTMGDI|pCRa)3^NSz2nj8fB2J&{GVWLTstVi@Q(~f{m*=wj-xXtauq|o;L<6iA zVe)?l9)?w*VRNkfx|iCttO96}0=$mm*|bF8*fsM0Zx8&r35m$r)_7u`D<8_q5D*xN z>u&!4q*a|L&2Jz#IVs<;D5{3CG++V2S@a~&n-0Gc{n4HL{*%Gj*YY}D{}FaT3cuT^ zg`!5x*ng)5e{Wa`fc)-L1?YSMMUC{!)_+ptfj-Uk;iw%Wg1`UtpRA!}%2k^^Ji~QB z8ufv7=;0o=9cLfV*8TAXRP-Jm8g3V}>1J|}rT#fW0pbf~qj~+ghpNPLfDa~i=k-Sw z`meW8m7oOlpL->M&E(Ra$N%FAoET}H*e+110wC#aNOfspr z|D!Nw_?K=v(rqO1Kj-wX&c0cZ^7Yi!_LvvLIAWP2{GYx235#zz+s=7m$n%olD%(`y z`>6uuN{2~0UMISmS?Cx*G*O0Y=;%}&5UNsfa7?6KDce4O&?FBxq9=h8560Bo>mcB`grY!E4~@!d`2L>2j;&&IGChBWYMlm}e8 zkAtGN2{QUibu|Rl^Q@o_{AjW=M_i7uUJ~Ms^s4Q*k~t6$=l-=4(_|{yd_I=Ne`~{= zN<&e+yfK<%tLtgM znM-kh&thV>#lL;bT0WO^aVivB?LHxV{Y{>iK5vpkW~znXMK_Ff>qa8(UTt=4%TCdw zL3f!W;_vM%qfW^?civ_!>n2X^lgh0Tdvy+{cngT0Sf(MGeK`Q70Z>yUF?W9p5c z+P(9*h;U|(i!}p@@ z!DHR{KlEO|C5gOF;Mm_fs|ynDegJlwXo5r7?b{!4pgEED08}f}MV<`+o);$vAAUT& zxNs3Tnm$-tDFblEnoWq$k=z4|Q(t`c+aGrxE^gg<{VTCY(W1;Gn`BG_SjhRXWPz7( zw~*JB*9BEXo41fAu5<^{<(7e}TOvAZ-q%re6hEFWCCPqrxu-@r!@H|@pI^Bj>3OuO z7Y!9=>(+nz#>a&o6|_nmm%kc2YDDEjc!*>Lw9Z!Fpp~X7Ng&rtS*(C zd-2kab&;;XlhsFvyCF|Z`D%xGse8LHWAPk3(YR4Z8aaGOTJU0({$&}Iva5;PsjAj} z5$yafM1aS;g;b#u%@)L2%xnzZW3I78-V8ImT0_1X84iogeppq~*1!c#2Dau^wyDXW zvhwuc{^A4Utnb8Ur$_1-fbkE^>1wC2d9fJ&S@>@}O+EAT%zHLm`zyz(=h9Mg-;2uj zUjeh{v!8isdwP22G-B{=8Gy`szRijY78b_#gGB$WOB)6Sd7V$14?jE1@;AWt)Bcw( z4f)@?v~qw&9`D*4j?j8SD)4DP{O9V=SZ3{WKVjK8<}rA~rRzFP)L5%T=r*x|B||77 z^A7-MiMRSbZ+yC*6PW_srhCz8x?la`YM<}U@2-thuotoTD)hLQ2G=%=A?LQ0hTkUIc5;wL}1E0)!NR44h_07N_b1;_O2g8?lq6U2}rEbK@9 zqIbNq(r7#{$+qO$#s1zS(9YIQ+RhMAsGVIT0K!wR%hNnZCHUvo^Y8`PXOG3cw0%l1 zRFC4zJyMm#%K`a*9+bhRR+&V5sXc`;IsFN@^kDjZ1M zK^+)-iP~?d`}6HhAjGeoVzA828W$N{@;Rp_WF)2W_!~|~c?o@_>2%i2&@~aNZ0LN) zS-V>ijnGl^UfS)my9P#9o^!gBzk8^3QsmCg027v>s0U*26s|E9t0KshIyQhQlKupuI(0M1gM(Rw{jNQ78KVw^SDbEiq*xt*kyD zTEIZ@jXip~&5TgFmQ6o%UA%FS|8qytgamjRy&Nshl0{ z!p(1#!YvJ+_GnTB(;rz-v#lLM4lMUd^q&VBzi{t*VC*eNUwA)h@RIaoitZo8Vj1mr zSNob-qYLQH*IOf5UKU5udzR6kDmL8Stz}x@H@{la`Jco_PSzJ~a>8%yl=_CzbG%ut z%S@2!up1x(#esoj!uO8RrKAh5Mx2EL{V3fjDz0XybdMy3lNBroqxI^9!PL{d|t0fiqOlx2=ec#rXw zdo>nL3=U`gBs&j!(CR?1ah@|oS#slZwFh{L;Nx4hGBX#Cqej?v{YG78vb}unD58S+ zV5g-Ig~_CGcd!!2_JAtv9g;kL-)M5w53E`Yr0DYI3W-M^b{~j1Y<29_4w|peSt||h zF^td7xNPJF`|L)q`&^iw&?kcW1n(5EyS@|-Ej;22i7@kP_-IpJX?vLaBEQXC(ZSjO*jTWwSY=Sv1B0p3{iSBi6uVSOjW$ z)YQWm&xYWNrbeV?ZZDnN$<_t+XnT#&K_0WOF-0J-6 zq#m?v|4sZ8@j(CT9}p|a)3e_ND7H*vgejQvKa{iY|JD2``WT2?LX08^D zf-&(ZGg+Vj95hp63-P|kC>RcqTz@eLitRl#nVL|mq~4sg^p%6ZPqg5 z;j5x*%ee{9SEq@@C@4h`Haf4I-Cp|yA`bZ#DGCk6FH#zF{(h<^5;4XN@Soz3yczNX z-_%;qbyi<2!B?=5G+wUUMFCEB#K`EO+Qpw~mH4I$l=)f9QHnCJcNdx>q}S>V)~K(B z_@RRc3Lk5=DPGu8x~TWL)vY~(;ujGX@-S)Hmerrd=`(H0jpWN>#Cxwk0R|zb75oL* zoKffu8e}xB0mEg~7TIT-c)nW~>F@ICQj*NPHB7!PKAY_A4u=zde z)8V+25BkzFD$Ll$+oh?ZMqYW zNZ4w>?Ftbw#2(ONUrO+yF3?)9H zS>6fc`zN2q&BoPbX=GP$5E|2a()X9`P))jQsHx|Hy%V@`Qj8c#w%8k~jf^A$x#n4-y(!rq-PsPi> zC1D@Pkp_tQ0avG;z0ZS;U?C)NsZ*Y_FySEM@sX94l|$_<>&5;TY0=Tvbe!nOR5qyp z(T*lXM`u6GJHi>pRG4c zPM6-OS0aR{c#muuZLuPgBa`FawUiHrpGS3$o@-oT0qlv6;e_ve_oe($2H1mg^XEuL z2(I|gsv_v+1_aaejnE&e<#>b0evXe!?sXevQR_n3n4IiK(qo@aoKL2i22VGMsiWO$ zs)rg9sEI8JV=z_Z3VEem9#|Hq5{n$97nPPrJV%mZAaUj*9&EGQV{voqZ;Pnm{edV6 zN8RtmK6n`)hW%+--teOD%C;)->e&!FJ|Aw+o`+p15s=S zLx}Q6D6^VQ1}9^=n^x3#BD?OFa0dN78IH@_O9SDmwplUa@xr{lH;UPFk77%&?I_5p z^%p&APRml7=$|9iSUJKE_|l=O;`T0+aTnNWB+tBB?WV`9KLSj)(q6aK>f5RbHaGt? z2$9^lFeaj+=&y~eRbx)^uIuU2MwY*O3Ri+yaemh`|FTIO;vJ+ui0 zM+0`&3UEkBEWm0X=)w^)@OvLVL+BOOD5d`PBag8yKx7+E=32-ebBC6J-+)3gbggRz zR_77? zLGAS-Y-8mOM$jM{i7;ETv(bk3Guk7=cVx-}TQJDU?#geVUvNflp5VNrmJMp!GE%G6 zbg9vJq{f41XH-1K}pc?9T+tGV^n(VeNr z&+<{DeP$h|vU^ENnUZkx9aMF6CneOEG$QD@Cqzhk@uM84IYZND<49mhlym87*jqyK zRkIm)TNai+KR**44`2pluI%~`0#g+-AnXZmP@3SyUbao3JVK4_@yz3?=wPXepa+yl-xzpy-xN{C z`$OCqfWV8WR#&$+yqMu?@E!eb>0?%t3L*E=Dmp0^oDK1``%=v^s5wHtp)tYEk_gA_ zJGp8vWUJRiDLN=#F9c^xSeG&p)9+b!=n`j3V9FnQo1?V6<6PS2)pgj_IC&vi(F=7S zJ+1j&jg0L-DneLZBDT43@Qd-p424|@`^Ho~8szEt0a7V%9JYi{ z?M<>fOqg_#Yy4(eqzZaIM>(wXPoF&_U^1OMBk-fgKI*wcyEq>cdWlW)zCS`({)b(! zB3lxdFl^V}34_}%JR~Gq5Cj`6o^u+04hXW#XBR5Kb}OYRj{&5+1G5?fzm21)#tG9{idPAlw{?)w$Uh%R`@JLAzf~~mS;@P3IorJ@ zfdx()kqsrOY>~GwD}g=m|oug+(LGeN^#Wn?D%dgBfV zB6o^&VhB;`wXg@wPv?9KDT)~Hp)m5NkHupeOiO6k7A$0;F)WkwXrrge8&+=njl>kA zS>5}~cHt<-A_#`VK9-Hk-yJGw>_*`)Y?*=Lp+Nn%&DO+AX>CW2A3H@w*1Wn)>x8LYilc=hU-c>sCY8&wi}bn zD%zacJwA+{AyV3=TB00We?-4&E^q!; z?vboUgTG3U#;plKw*Ko8ygUnB#O`3$K@xIskus@V=eKq zJ;B*S6t53rJS2No+zJwb-+}J0$o(edaoh5kGA7$8vA8fgQx7Kbv#;7_lgY& z{1nyFhgI))abD5<=$*iyQzBW)7rmLWQ4#E#+t=m})Z2 z>I?kybIO{q@!MuXvLK#4o|4bo)w>!U%LbR<>i5A3;Y9Gdo4q6&8N@ryjJ|S7vJh_+ z<8YWmXK`-Vn{Q}6m{JM)m{;4stIw|6EIEi!iT5BkIln1sam?4lzSPc%QzunDTmR-G zfxpRy3>?3eSV1H$zjoCy?3x75c3z?b0Y8L8ZtB(Z$4AQ7>uklL{NT{&P(6`2h^@cPOoV{fXkX9&l1k zvAffW#X)K05Ykg_L_+t>P99_Hz(LkTa#EhdKA7z;-WLtwJM{QU*)F;=e(&(pZo*iqj%)HGF($GjPn*Jsrv{v{%6@Zcyz z2uUQB5P9Z0LW{voLBm$9@klViQt1_Sjb6uuBJ|1F1{2d9GuQ$9vbF6pWqg{xn*>E;+rCD$tTvgK8yhqTIw_k0$X~Q zwHv##ImP)ki7ydLT(I`d7P6P}qqYjXtYHHyk*>n9;XZ>rBfEnB9o>|4GruDrfo93fui zr6bX+*Zlt8ZXwvD;V3ERY~JN)3y4`s>4PPS6DRf)n)nYoWU8CEnAZx;(GuEyAr9wY z#ke}VU783tI~KQZ`njS7`)6CaEya@)$G4hii;xnzG<4Kk%iiAR+cI1RVkbAd;Hl{F zwBjWzrNbkTM}9%*gXMFM>7+Y{2cWR9ro0FX3Z~-JS?rtDK;AhIJzo2l}AfQFJ1P+^v8%n?@7X56|9btuB)coOlfMfOY zhH66ry&=3AHKJS}hz4O{B-4F5fh!wa=|Pn71kXJ4Wuu2D;U{{!3GnR;vTn_LG){Xi z5%ot#rj&jeY86O!_3DfG^Iq^=mhI{yI3dxk&71;0gG4&s!pICMGRK?o^W>z&uvQIs$)n>*et=c!|Nx@KG*2h&IG)9E!7d{&| z;;_O_Dp`JbwMSxdU}rmW?wnUzb(*1js0rJ>uX7`}S0gaL2fOZ3PJkp|Kg05)eqUik z^pvZDdY0>F{HJeV<8NhqZ#-6LTzi%!UNg9=h;;aU#v~N^z6`Q!y1yDZ);V5ou^G~3 zX<7-ysRP8ETOhO1<58%BwBJej;32xm10(`b zN|O6h#wyC#u$01}P-!yU&kvCQehv3CU?{QabNzKo&Z|`%Wvlkstf8cdh}Rs^y(ZC0 ze+^jJn8(hT+h=wO2|`xh3OtK{rk^9g;QI-ZYXh4=;rCA;|A@gd#A6Lx<{5x(V_s#g z@YpP@2^2fNq}KjbG2x?k)VyTb7({ERSYWax^-bw{JD&sW?ZWPStxMk%)?I&gn)U%P zhOdtv?|H^iPPYex@xHHXGAiIbQZawD^MY_}O6`a%_EXy%GNOC&+i>-J{3!EFbO!GiiLJa#OgpeFaN$k-O-XPyeF8mDqbl2x8H8)PyGgo;5j9!epP&!l8$s`a&~ zqspH#vkW-NAq>fWW*FR;&z^VsXjkm5ffyCIl4l|9w~8hM^My`IWD)9Zo#N!Pl^@@U zGD1?dgXasK{pX|O^w?!-RcMR!sbIf^69zbns$)kR2IliTX<@W@Z^fGO>A%lj>3v*u zo$jaqy+MFYV1~|V9e)EY9G*&Sp6YJ1p%Z3xjJ~{j`poOkz48EAMugHlcHtl|`5i4C z-e3q z(cho;_v#A!24Gi0p@r;NMm1J($I|s@eX_y-e)V5ptNmD<()=#k(Z*Jkp=T;|p(jblE*ipqq#-X9hW{?{@At{yL?-5zyK{q-?)oGM zb_b=kF|m-iy!*#LB~X8Vtz(qCpRM!PcKA8rUv96O+>Md^U+KSFnZJ*@}5xYk;%FZFlFjuwG9G$oJG{D@}*+ z$yi((ORwr9gjg=F*1Daq(<@^38)Hqr(Gv?F=m-wQ;R^abmbWb?+)G)Q)EqEb)Q<9p0RA~Yk7Av7286Pp+wlu1nkE- zd;cN?+*&F*-&cpWHjj8>0ym z&{d4OJe9PglT(RX*_Wf_sB%=)dJVCZ;8i!PsY5Cpgd6E;=9()W$bysSlN5U_|d zML5s#+otYzNAxM4=wwa)x?1lbn!gkDoE-tYEo$wUSVRD0+F{$q(}3AYJRhR6wwoiU zUiJ&;?H8`@E3HChgz;%0!+QBt0a`~}RyP~4>*(AaACm(tLU_I_LSVbBrB&9w<)%`$ zSPTKX*6JoFg_X;v33UOi3rn%3i>RFaE}SYekeMX;X%w}oKWo9LVjj+9uD9`+(EYn? z9MEA!psxL0L#`lf?du^-@#d{t|CNt*_*;{w!|5yk4pW zxc|Y#B);onVvbd+b?3VBUBblN+|+}6g-4({{-wrr)g?OjP2 z8T?0>*U`myoz2@y*}!=p#IZK8oS~(A%3}ftePd*GE3q&yz=PM$rhBMN{HxW-OUO*C zZj%&2Su@{6ui|C**ji$Z<@{b=s*yJi|7%A9NMMd^+}wukD9fuw;cU;aeb)&L`b> zq0=PqU4K@@9M5rM?|j<*rLbC&8Z+y93(vLpq~L3G(MB+Ki+lM|!%pg5waU3p0*z0| zX|u=qQ76`D-Ipf`zQb$&(&s;a(#`2(L^sPboV@L6aR_ zB+jSo639dWJ3BG#GyQs>!&X(f&2Y=^tST_j9|gh)6i{ z+%~P6ndocf)AOC-gag9ew7QoO0-el@6vo$g{l*d6EuI&LQ_2b~=UaEX8>cWBKh)Fr z=<_Y;vgh1T;j_mqv$#HZsm3CvOkzMH2M|mS?SATciPhCB6etv$~24A!)(WcdZ`(gPLXuTk>IUetz<`=99nmB(G znx=1aG+$c-ZA&{Y1MHehO46E^&rlnncWCm|b1(AJY!}?D>-xySoyVY6(YDJ1f2e`h z^Az6mKqDh*O~m*88x?Pjt!7tp7aO5wsG;k-`wg-&FOc^X18B9w&=r`r*@5aEbjXc$ z^ga+*^^tlYkh7iv*)k6WY1tACb zieE+;g>{c(2Y>`W{#wERKl%Bu%EFfhdGK`*?W-oaz+UiK@VRro-6I8lNa(wzWcZk( z&%{h`gM=c6QI}-%rhoLx;t3P<4OPwQ%6-eiH3hi%cJrj`XsE2U(ruaSsPl-qirYp@ zyRK9>v|3Uz3+_OU){!KFwZ*gIoCUTNHc@%b?~#9dxj_o$ay^r#4-mWaK8t2;`Sh}k zF+rd;oVPIzPOYpV;ql{D_B@uYsLwpliaRt99|4DZbcJ?PGGF4jVl51=^pky84=21J zVEmw`$#;z4_iiLAoUgUmI3L2_i~!$Rb>nYOFWAD@bu=EQvaKmYxu&|AC(^v9Dchuq zJ!gtFtwt7+90B(VF^-UC+2qjLV12JO|A=ugvwg_WuLO>i@~S}n`nX+u8!f3=c%L2E zDeLxj6#Sl|GLg&j`hZwq)7i$QWXpn5IfytoIxp2L65qtKAzDjM!*hFX2RN)QKk{6* zH0j6QdPsSl?d9DqoVhb^paA5sV!6Y&UFb6cNzyAwl~ zv0u!A_TK%mgPt-;%4g~^#)NmKutSgU1CJD3*D-Ee(sMwe$n2VxZ&=1&jtp!>@J}al zTdbeMd4GLi4MJg6q#doU(!ulKH)Dd5!8c2X>Ve->q4^5W2oZ8x6vOeZs|=0lVff4S0Gd8im(x z%ah3lqFjzt)!JioPlHVnw}_~GA+yD|w8p}Srk&AM(dlE#J zLNwS%p?HFIOHT?;*4K%nq^{WUpy%7#-oEU4=MntrX^YJQH+MhtH!$=ojmH<1$lx~^ECu(((=ME47sX6JfoK!Vr*y0U@7mVa?x?XwZ}tqspY=>-0!g=;*%>RAo%x&W zsuF{Eu%4Dc+}m_q^PgZ5R=vh<;k~lvj`=!P^rKqmIVIL0>Bq|buP}V^2$nsdf>3W7 zoXUrJY5PPb2Y?rLUwzLk;fVI-2dykg@M_C}7N_0uyP2@_RB7<-IYmp~xE6iTK$FO_ zj1etsiE#w)JZ!n?GOE((;yRzl22B5f%OUiBA1VkJT>aWWCN#XrJ~QUF>^&BWEqTE| z;bz#ffF_@D7A^?eHR_CH50a>szMQ0X$2F!wV)W9k_CEUh$iL5WJe`s>Ieg&DhfLqj zfF4YvpF6!UDpKX^P}UZc+X((q`WAlAYQbM8FGr*H8>u%~maht~#{t17>(^H%>n|QD zz-Nvm+{j!~wtQ)UQ%k#=O)T8ldR^v_!R9nSq(Chf*8)4!bHYVXN7RH9cKKtjIxtb9%;ma)0#C_9o!&pR@vI5`0bcw#XaqqYD&b99yL9B%*1IDxmS=h54>b$ll(tGcPu1J4e{B(5iYMhTD;BQX5k(2L znjeB@7)AhQAk4RdpJLBlmFgk$qg8oj=X#*tuqD{y9Sor@cyham-A+znB1&0zbIlel9TF1;99>wN6J z_2v#=cOysPaSWtXbwO~`K8_h8hHX1ay7SKKxDG0G7r!0uldh2VW=TH~sHv~sfUhm` z#J?t}*r@b(h{L7BVpKM|1FgNzELiPR+&fQG+m1n)x&@#F7*wfW0;5cl+~KSD^_=qb&K6K#t?40 z_G-c4sPD&+?xdyT4HNr!o4*#bng9@AcUL-i%VFAp(-^!tV2%v0O{|Mud>qx7ERE| z?EwpRo?h1Ip#upzXsW&*9BWK!1?Yne-T0r18U@2XDlu?Dm=wt{K1b0h)}rYI3Hq}= z*3;%wq2-eZZ%gQ&#eebXHKSZvBJ5T$Fo<(k|Qjd1AaHd_q z&Y(<{Pi606<(7m}OyDMrVyPv3j+ zr8^@-3>9JJU51Zqs%6p!BbvD!^OOdTVJ&bBGs) z%nRmF?;G=@p=WY_2?E$#z$OjT)on7E$5GsnCA3Rs)~Oz+K&*CEj3V~zg;_SAR+$Va zHJybF-Bg@p`rFnhc3Pek%5axSB4|S+q($j{PVH3cm+zpFE%U?Qk$; zM#np+ZH6)8Sd8^C#hL&s;u6u^d3U>03OdYPSzHxl%NqJN(`y1Bu*Xs0RkdAd?Vw8vEF7)Ch>PCvav?vh8x5>0Ny zmi1X17gd}@JDcQi2z9)E`rnbmx3%pMoE{8=6AeVy-;QbL++!aU;5HU_XKB?W;DOnP# zM{U$jTK+uDd{%92!JoF1W2=dPY8}JqT=&J96sF;t^E)@9c~&jl$;?X}1*xdjj2`IG zLhXVN;>c>n8{X13jz#zk9d)VkSp7o=D5gKJXVTz|II5k%1~ZQi>o(f$>-AOmIm^Oo zbD4?{d(`U5NZm>!t}QD9nWj+1%xlxFQ^(rN)boR+z0}nSo`P56)HRQ`(4yTqaQ&B{o3Ni z=VU`}DM1C*D~%|i;NXH@cfJk!UpX@!X#5qE9=s!0KQUfy96|5vCw=alv~P@l<-|R% zxxaziHf<<^!@nu}qXO1A?`e`ZqHM=lbo-(d1Ufv_YF!N9fq!KdHP1hbWKXrAcnc2)opupk!RC+_bv#`0*FUDEtKp+flWQa20)o)bm7VQ1RNp@MXBk6;aMk?RD zo&2z=cCGCxbWLK7mMhS-p!f2L8#8Ud0MmPFo7-#9EKw94$f4DC$#WSbhah!vNVUZ4 z@{@iZ_bNJ54jyGNp9T#XV!6=Y%E;lR&k#Z<2&`}L+!4N?$>mf0$z~UGHSBBd{sYQS z)M(ob!WA)E@KD%{$>AUK-p-E$@)Z?Gvlqj8RMEB^nIzR@~A1QQTIsOs&POW9;j!?GAIY z87*eqZgZE4KBIO^ugzU@x9sa1g&&2a;bQ*;QSu9stA*6|kSjEP7B;h#rl!wO8&{X; zG<1To5r?~>@5TXV$?l?je{&2DNFfpAI88wm*~of zjxGyyI*n{O1cO!i6AJG$6pCKi`gIYif4Ib&Dw|&Cr_oq(cLiFvLPQ?}e$%$wkkCG%pGnygmgQj-MTL8aIks`x`(9{EN8G)n9CHf|YYKEOa8XBAd z;ePnlpq25VVFV+oLn$RKAICE5tq$VcirOV;lDTeq+aD|VWkGMf0J3R?F|X&%SJ%NI z*?ahWQ58`D6ue4B!Keaam3D8ut<`Rs*#HF7@~L6^4JV$&%KL4XQsO}{lgAl*o5A_z zSwGL|r{*%mKu!5wS8GM!l{QHn)}WCTo*8Cp0{3NUn&%hqeanekc(kSaY8c0#ho;2+ z#Qro@{sTwiMK>Fn@^eWHBTW2)6PHGo|Eun+5>*CB!&{CLAnG) zxVagI|tRJDdBnq%yC;*VS>&mlz4u35}ifuj=)jCKV@Lo&UnON^h50u4<8N!VM( zpQLV+?&`-#+~f>e_s%+NGUB%xcftyUJJU}|upE!Q#A@XU4(4nQtpbbUTUu4v+0!Rm zkXUAAuNW!!t0N#A$5okvlY8dMspLz+2uk&POG1oKhJ1Ci1(=&vi_af4){-yw=VVMVeF5KB!e$Btw=FQYK<;zq|28 zDg~W09Q&gx*jQ;dG*YrX$|En}7y*MEK2?CF6$FWLF6Cu|AWL_$oRq6*ypxva53&QS z0-{6bI1I2pMRuI;fV4WD$WT56L|5J_sy_u*ecg*@6H3PTrbk4%)eqRNGxyBb(gdy; z6g9wty=y+`76iC+E?m(Nuk~PyEdS7e4cIJD@-bs?p9Z3rp)B31gs9Dt+O^x{SG=S? z_Z4J%ZTC(Oa@`Sbr%@}cr40%W7Uhfpt=xwPDnHVCzry$hMlopfEhYOdzzS?#L`1?`8&w+Rz?)}1$RD5` zXYXPkFB953H18^!L5tq`v7_?lo^Ac?YmMB@J_5`Q8}0jCMfZ^Dx7ZaDES{B=5;`1* zyX>hzLa&%Sn{YY`yE8r?-cz?dUFOu<*eOSxwp4rHb{mH@xpNdaBV^E3BQ0k0&3kR9 z#=r^pl?-{3_tKR+Dv4|J%X>eHi4Ngs?qHRb#>4sw(h4*EFXA;$st@q&NT2CSBTXAj z7O$dQi@(2V%IslOw~n|nq=G%;ccv3tPNz^>l&^ChdBP$#p=6s8=#m2z1;w!X=ymzL zN*~I6EM60-U(+*kf8W?X&YHXOD`z1#s#9-&!K~_!g|P)J43m4VG))HysV82li}a#6 zS(RD16iYX5w+qcdT%j5T5z(2rOzAE*I--ie`A`hs=~d>ZNNCKY#Mffw)(zN-TenPW zUnO?n2hNA$9cTwwIphFFJYGy!h+ZuvEc z&6KKp{!CK?w641~k5{?6=8ov!wp9Jj76BS?|Ap1lN|)$sJ(#pxcnYBGTHQ^i8N9 zeSgxS9|6BWnVg1-*t#_2G=KsL_(XM&Ju!93T#@K4p|y{fj~DXM1~GvjFFQn1gY~U= zj+S+vkh7X@)|DCAeaW5`8-Pf*`jf-Rq!gIB$%0ASWW&Du`ij;Xfe*&$&AT@xGoIlK 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-latest/farming-&-staking/staking/staking.md b/versioned_docs/version-latest/farming-&-staking/staking/staking.md index 3b07cefcf7c..99331b645f9 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/staking.md +++ b/versioned_docs/version-latest/farming-&-staking/staking/staking.md @@ -134,11 +134,12 @@ Any **operator** or **nominator** can initiate withdrawal. They can withdraw the - If an operator is initiating a withdrawal, then their remaining balance should be at least the minimum operator stake, otherwise the request is rejected. - If a nominator is initiating a withdrawal, and the remaining balance is less than the operator-defined minimum nominator stake, then the total nominator stake is unlocked otherwise, only the requested amount is unlocked. - -1. Select the account you want to use in `using the selected account`. -2. Select `domains` under `submit the following extrinsic` and choose `withdrawStake(operatorId, withdraw)` in the dropdown. -3. Choose an operator by selecting an `operatorId` - in the example, it's set to `17`. -4. Choose the withdrawal amount in the `withdraw` field - you can specify to withdraw `all` or `some` staking amount. +1. Proceed to [PolkadotJS](https://polkadot.js.org/apps/#/explorer). +2. Navigate to Developer -> Extrinsics. +3. Select the account you want to use in `using the selected account`. +4. Select `domains` under `submit the following extrinsic` and choose `withdrawStake(operatorId, withdraw)` 5n the dropdown. +6. Choose an operator by selecting an `operatorId` - in the example, it's set to `17`. +7. Choose the withdrawal amount in the `withdraw` field - you can specify to withdraw `all` or `some` staking amount. :::note Example of withdrawal of 1 TSSC stake amount from nominating an operator `17`. @@ -147,8 +148,18 @@ Example of withdrawal of 1 TSSC stake amount from nominating an operator `17`. ![Staking-23](/img/doc-imgs/operators-staking/Staking-23.png) -Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **unlocking period** is complete. The current **unlocking period** is set to 28,800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. +Once the withdrawal is submitted, it's finalized after the **domain epoch** is completed. All the withdrawn funds are unlocked after the **locking period** is complete. The current **locking period** is set to 28,800 blocks, or about 48 hours. The locking period is necessary to ensure that the domain block executing the withdrawal is confirmed and not challenged by a fraud proof and to increase the economic stability of domains. + +After the **locking period**, the withdrawn amount can be unlocked in the user's account with the `unlock_funds` extrinsic. + +1. Proceed to [PolkadotJS](https://polkadot.js.org/apps/#/explorer). +2. Navigate to Developer -> Extrinsics. +3. Select the account you want to use in `using the selected account`. +4. Select `domains` under `submit the following extrinsic` and choose `unlockFinds(operatorId)` in the dropdown. +5. Provide the `operatorID` you were staking with. +6. Submit the transaction, your funds should be unclocked and available once the epoch is complete (up to 10 minutes). +![Staking-29](/img/doc-imgs/operators-staking/Staking-29.png) ### Calculating your nominator balance From 7cc0b64293604fb11c06ea07a77b2f094c535cb6 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Wed, 31 Jan 2024 09:36:50 -0500 Subject: [PATCH 20/22] adjust the chain to 3h --- .../farming-&-staking/farming/advanced-cli/platforms/_linux.mdx | 2 +- .../farming-&-staking/farming/advanced-cli/platforms/_macos.mdx | 2 +- .../farming/advanced-cli/platforms/_windows.mdx | 2 +- .../farming-&-staking/farming/advanced-cli/platforms/_linux.mdx | 2 +- .../farming-&-staking/farming/advanced-cli/platforms/_macos.mdx | 2 +- .../farming/advanced-cli/platforms/_windows.mdx | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index eef51dc6569..8dbd61fd3f5 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -94,7 +94,7 @@ import styles from '@site/src/pages/index.module.css'; # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-31 \ - --chain gemini-3g \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --farmer \ diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index 7094a5320ff..60008567936 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -64,7 +64,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-macos-aarch64-gemini-3g-2024-jan-31 \ - --chain gemini-3g \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --farmer \ diff --git a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index 21295127ff2..2ed976fa27c 100644 --- a/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/docs/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -60,7 +60,7 @@ This is because the application is trying to access the internet. This is expect # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command .\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-31.exe ` - --chain gemini-3g ` + --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` --farmer ` diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx index abc32c5b9c1..85fe0364cfb 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_linux.mdx @@ -94,7 +94,7 @@ import styles from '@site/src/pages/index.module.css'; # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-ubuntu-x86_64-skylake-gemini-3g-2024-jan-31 \ - --chain gemini-3g \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --farmer \ diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx index 7094a5320ff..60008567936 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_macos.mdx @@ -64,7 +64,7 @@ After this, simply repeat the step you prompted for (step 4 or 6). This time, cl # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command ./subspace-node-macos-aarch64-gemini-3g-2024-jan-31 \ - --chain gemini-3g \ + --chain gemini-3h \ --blocks-pruning 256 \ --state-pruning archive-canonical \ --farmer \ diff --git a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx index 21295127ff2..2ed976fa27c 100644 --- a/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx +++ b/versioned_docs/version-latest/farming-&-staking/farming/advanced-cli/platforms/_windows.mdx @@ -60,7 +60,7 @@ This is because the application is trying to access the internet. This is expect # Replace `INSERT_YOUR_ID` with a nickname you choose # Copy all of the lines below, they are all part of the same command .\subspace-node-windows-x86_64-skylake-gemini-3g-2024-jan-31.exe ` - --chain gemini-3g ` + --chain gemini-3h ` --blocks-pruning 256 ` --state-pruning archive-canonical ` --farmer ` From 2f76c3877c6bda87cfd8b6a515b17b8cc89f4506 Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Wed, 31 Jan 2024 09:45:26 -0500 Subject: [PATCH 21/22] Update Nova bootstrap nodes IPs --- .../staking/operators/register-operator.mdx | 24 ++++++++--------- .../staking/operators/tips-operator.mdx | 24 ++++++++--------- .../staking/operators/register-operator.mdx | 26 +++++++++---------- .../staking/operators/tips-operator.mdx | 24 ++++++++--------- 4 files changed, 49 insertions(+), 49 deletions(-) diff --git a/docs/farming-&-staking/staking/operators/register-operator.mdx b/docs/farming-&-staking/staking/operators/register-operator.mdx index fe7ccc1bd31..162ff898fad 100644 --- a/docs/farming-&-staking/staking/operators/register-operator.mdx +++ b/docs/farming-&-staking/staking/operators/register-operator.mdx @@ -96,9 +96,9 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \` +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \` +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H \` --listen-on /ip4/0.0.0.0/tcp/40333`} @@ -114,9 +114,9 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H \\ --listen-on /ip4/0.0.0.0/tcp/40333`} @@ -132,9 +132,9 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H \\ --listen-on /ip4/0.0.0.0/tcp/40333`} @@ -182,9 +182,9 @@ services: # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", "--listen-on", "/ip4/0.0.0.0/tcp/40333", - "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7" + "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2", + "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu", + "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H" ] healthcheck: timeout: 5s diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index de2f635055d..9cdf55d1126 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -122,9 +122,9 @@ To run both operator and validator at the same time, provide requrired flags for --domain-id your_domain_id \` --operator-id your_operator_id \` --listen-on /ip4/0.0.0.0/tcp/40333 \` ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \` +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \` +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H `} @@ -143,9 +143,9 @@ To run both operator and validator at the same time, provide requrired flags for --domain-id your_domain_id \\ --operator-id your_operator_id \\ --listen-on /ip4/0.0.0.0/tcp/40333 \\ ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H `} @@ -163,9 +163,9 @@ To run both operator and validator at the same time, provide requrired flags for --domain-id your_domain_id \\ --operator-id your_operator_id \\ --listen-on /ip4/0.0.0.0/tcp/40333 \\ ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H `} @@ -216,9 +216,9 @@ services: # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", "--listen-on", "/ip4/0.0.0.0/tcp/40333", - "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", + "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2", + "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu", + "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) ] healthcheck: diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx index afe8af94572..162ff898fad 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/register-operator.mdx @@ -96,9 +96,9 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \` --domain-id your_domain_id \` --operator-id your_operator_id \` ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \` +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \` +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \` +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H \` --listen-on /ip4/0.0.0.0/tcp/40333`} @@ -114,9 +114,9 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H \\ --listen-on /ip4/0.0.0.0/tcp/40333`} @@ -132,9 +132,9 @@ You can ignore setting up `your_operator_id` while you're syncing your node. Mak -- \\ --domain-id your_domain_id \\ --operator-id your_operator_id \\ ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 \\ +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H \\ --listen-on /ip4/0.0.0.0/tcp/40333`} @@ -182,9 +182,9 @@ services: # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", "--listen-on", "/ip4/0.0.0.0/tcp/40333", - "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7" + "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2", + "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu", + "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H" ] healthcheck: timeout: 5s @@ -298,4 +298,4 @@ Alternatively, you can use [Subscan](https://subspace.subscan.io/) which is a li ![Staking-12](/img/doc-imgs/operators-staking/Staking-12.png) -7. Inspect and remember your `domain_id`. \ No newline at end of file +7. Inspect and remember your `domain_id`. \ No newline at end of file diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index de2f635055d..9cdf55d1126 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -122,9 +122,9 @@ To run both operator and validator at the same time, provide requrired flags for --domain-id your_domain_id \` --operator-id your_operator_id \` --listen-on /ip4/0.0.0.0/tcp/40333 \` ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \` ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \` ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \` +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \` +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H `} @@ -143,9 +143,9 @@ To run both operator and validator at the same time, provide requrired flags for --domain-id your_domain_id \\ --operator-id your_operator_id \\ --listen-on /ip4/0.0.0.0/tcp/40333 \\ ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H `} @@ -163,9 +163,9 @@ To run both operator and validator at the same time, provide requrired flags for --domain-id your_domain_id \\ --operator-id your_operator_id \\ --listen-on /ip4/0.0.0.0/tcp/40333 \\ ---bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp \\ ---bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1 \\ ---bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7 `} +--bootstrap-nodes /dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2 \\ +--bootstrap-nodes /dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu \\ +--bootstrap-nodes /dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H `} @@ -216,9 +216,9 @@ services: # Replace INSERT_YOUR_OPERATOR_ID with your operator ID "--operator-id", "INSERT_YOUR_OPERATOR_ID", "--listen-on", "/ip4/0.0.0.0/tcp/40333", - "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWGHtULvhdKMZtzigSK1438uWXPj9rBQHVzTaKMWv1WRXp", - "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWJxB2PVzyNqZywoCWAMLGhKr2LCbFMXbAPzUPQZon7yt1", - "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWHsRae3ip2uQAUPtpMcStHGGw777SJT3nu9maFmtsGry7", + "--bootstrap-nodes", "/dns/bootstrap-0.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWBm1PHFHAP9mA6LNd72uFimyPoo6ixjdfgajzizXDYND2", + "--bootstrap-nodes", "/dns/bootstrap-1.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWD3Q8JpAPoXR67ZQ1H1nXfPqCgPHCvWVcGxNKbfFmuPnu", + "--bootstrap-nodes", "/dns/bootstrap-2.nova.gemini-3h.subspace.network/tcp/30334/p2p/12D3KooWEYs5yikat5NanzN7c2Sb4ngxJoCro9vXMULM2ZYVWW9H", # Replace INSERT_YOUR_ID with your node ID (will be shown in telemetry) ] healthcheck: From 674dd34c8e0338634cfd6bd600a5af26f915a9da Mon Sep 17 00:00:00 2001 From: Emil Fattakhov Date: Wed, 31 Jan 2024 09:51:30 -0500 Subject: [PATCH 22/22] Adjust chain for docker commands --- docs/farming-&-staking/staking/operators/tips-operator.mdx | 2 +- .../farming-&-staking/staking/operators/tips-operator.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/farming-&-staking/staking/operators/tips-operator.mdx b/docs/farming-&-staking/staking/operators/tips-operator.mdx index 9cdf55d1126..f75acea403a 100644 --- a/docs/farming-&-staking/staking/operators/tips-operator.mdx +++ b/docs/farming-&-staking/staking/operators/tips-operator.mdx @@ -198,7 +198,7 @@ services: restart: unless-stopped command: [ "run", - "--chain", "gemini-3g", + "--chain", "gemini-3h", "--base-path", "/var/subspace", "--blocks-pruning", "256", "--state-pruning", "archive-canonical", diff --git a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx index 9cdf55d1126..f75acea403a 100644 --- a/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx +++ b/versioned_docs/version-latest/farming-&-staking/staking/operators/tips-operator.mdx @@ -198,7 +198,7 @@ services: restart: unless-stopped command: [ "run", - "--chain", "gemini-3g", + "--chain", "gemini-3h", "--base-path", "/var/subspace", "--blocks-pruning", "256", "--state-pruning", "archive-canonical",